2023年4月30日日曜日

Twitter API 2でPythonからつぶやいてみた。

 ラズパイ鯖のエラーとか状態を定期的にTwitterに投稿していて、結構この運用方法が便利だったんだけど、突然ツイートされなくなったのを発見したので直してみた。

というのも今まではTwitter API 1.1を使っているtcli.shというシェルスクリプトを使ってツイートしていたんだけども、API 2に以降が始まっていたらしい…
そして昨日までだったということをあとから知った。

API 2に対応しないといけないんだけど、tcli.shのサイトはもうなさそうだしだいぶ前から使っていたので一新することにした。
とりあえずPythonで便利そうなライブラリが合ったのでそちらを使ってみることに。

python-twitter-v2

このpython-twitter-v2を使えば簡単に作れそう。

まずはTwitter DeveloperにログオンしてV2への以降を行う。とりあえずFreeアカウントで良かったのでアプリのページを開いて上の方にV2へのリンクが出ていたのでそちらをクリックして赤いDowngradeボタンを押す。
そしてプロジェクトを作成しないといけないのでProjects & AppsのOverviewでプロジェクトを作成する。プロジェクト名とか説明をつけてStep 4で今まで使っていたアプリを選択すればOK。

Consumer KeyもConsumer Secretもそのまま使えそう。

そんでもってpipでpython-twitter-v2をインストールする。

python3 -m pip install python-twitter-v2

あとはアプリ認証のURLを生成する。

from pytwitter import Api
api = Api(consumer_key="Consumer Key",consumer_secret="Consumer Secret",oauth_flow=True)
print(api.get_authorize_url())

これで実行するとURLが生成されるのでこれをブラウザとかに貼り付けて使いたいTwitterアカウントからアプリ認証をする。するとリダイレクト用の設定したURLに飛ばされるのでそれをコピーする。(URLの後ろにキーとか色々ついてくる)

先程の3行めをコメントアウトして

print(api.generate_access_token(response="ログオンして帰ってきたURL"))

これを追加してもう一度実行。

そうするとoauth_tokenとoauth_token_secretが返ってくるのでそれをメモる。

import sys
from pytwitter import Api
api = Api(
    consumer_key = 'Consumer Key',
    consumer_secret = 'Consumer Secret',
    access_token = 'oauth_token',
    access_secret = 'oauth_token_secret'
)

args = sys.argv
api.create_tweet(text = args[1])

これをtcli.pyとかで保存して

python3 tcli.py "ツイートしたい文"

で実行すればツイートできる。

とりあえずこれでまたラズパイからつぶやけるぞ。

0 件のコメント:

コメントを投稿