見出し画像

WordPressからTwitter自動連携APIが使用不可に!代替手順を説明

TwitterAPIが使えた頃は・・・

WordPressで書いたブログをTwitterにも自動投稿していたのだが、TwitterAPIが急にケチになって使用不可に。
流入の半分はTwitterから稼いでいたので、これは死活問題ということで対応を始めた。

ポイントは無料で使いたいということ。ブログの方に稼げるほどのアクセスがまだ無いので。

TwitterAPIが使えていた頃はWordPress側のプラグインで、Jetpackを使っていた。こちらも自動連携に制限回数があって使えなくなることがあった。

この対応で使っていたのが、WP to Twitterというプラグイン。これは便利だと重宝し始めた矢先、Twitter側から蹴られるようになった。Twitter側で無料APIを締め出した様子。

APIが使えないので、WordPressで記事を書くたびにTwitterの方に手動投稿するはめに。面倒なことは続かないので、何とか自動化できないかと模索を始める。

PowerAutomateを試してみる

まず、手を出したのがPowerAutomate。WordPressからTwitterへの自動連携パッケージみたいのがあったのだが、無料プランでは使えない。

とりあえず、WordPressに投稿されるたびに記事URLとタイトルをメールで飛ばすようなトリガーを設定。メールの内容をTwitterの投稿画面に貼るだけで良いので、多少は楽に。

メールでとばすかわりにTwitterの投稿画面を開かせて貼り付け、投稿という流れにすれば完成。ウシシシと思っていたのだが、このトリガーが意外と作動しない。フローのテストも問題ないので意味不明。

クラウドフローとデスクトップフローの連携とかも必要で、そっちを構築している間も、トリガーの動作が安定しない。

ので、PowerAutomateはもう良いやと全く別の方法を模索。

pythonで連携させることに

記事が予約投稿される時間は決まっているので、トリガーは別に要らない。定時にWordPressの最新記事のタイトルとURLを取得してくる。そのタイトルとURLをtwitterに投稿する。だけで良い。

これで考えたのがスクレイピング+twitter画面の操作をpythonでやらせること。

スクレイピングやら画面やキーボード操作みたいのをpythonでやらせるのは、既にやっていたので、それらを組み合わせる。

というわけで完成したのが以下。
以下のコードを.py形式のファイルにして保存。タスクスケジューラで自動起動すればいい。タスクスケジューラ部分はまだ導入していないが。

#ssl認証が降りない件を解決
import ssl
ssl._create_default_https_context = ssl._create_unverified_context

#BeautifulSoupなどimport
import urllib.request
from bs4 import BeautifulSoup

#htmlデータを取得
with urllib.request.urlopen("https://ワードプレスのサイトアドレス/") as res:
   html=res.read()
soup=BeautifulSoup(html,"html.parser")

result = ""
target_tag=soup.find(id="main")
#全てのリンクタグ<a>を取得し、最初のlinkのみをresultに格納(タイトルとURL)
for link in target_tag.find_all("a"):
    if str(link.string) != "None":
        result = link.string + " " + str(link.get("href"))
    if len(result) > 0:
        break

#clipboardへコピー
import pyperclip
pyperclip.copy(result)

import webbrowser
# tweet画面開く
#デフォルトのブラウザでtwitter投稿画面をオープン
webbrowser.open("https://twitter.com/compose/tweet")

import pyautogui as pag
import time
#ブラウザ起動まで待機、秒数は各自環境に応じて修正
time.sleep(9) #9秒待機
# 貼り付けctrl+v押下
pag.hotkey('ctrl', 'v')
# 投稿ボタンをアクティブにするため、tabキーで移動
pag.press(["tab","tab","tab","tab","tab","tab","tab","tab"])
# 投稿ボタン押下
pag.press(["enter"])

前半部分でスクレイピング、指定サイトの最新記事情報を拾ってきて、変数resultに格納している。

中間部でクリップボードにコピー。通常ブラウザにてtwitter投稿画面を起動。当然twitterはログイン済にしておく必要がある。

後半部分は画面操作。

まず、ブラウザ起動を9秒待つ。何秒待つかは個々人の環境次第。5秒から始めて、ブラウザ起動前にctrl+vを送信してしまいスカるたびに1秒ずつ伸ばした。今のところブラウザが立ち上がっていない状態でも9秒ならミスることはなくなった。

9秒待機後、ctrl+vで貼り付け、tabキーを連打させて、「ツイートする」ボタンをアクティブにする。最後にenterを送信して終了。

.pyファイルが動作するようにするには、何らかの設定が必要な気がするが、私の環境ではだいぶ前から普通に動いているので、ちと説明が難しい・・・。

この記事が気に入ったらサポートをしてみませんか?