見出し画像

[Python] Twitter APIv2で自動的に呟く(改行ツイート準備編)

 体調を崩してしばらく休んでいたら、Twitter APIに関する仕様変更の通知が来ていました。APIv2 への移行が必要で、現在の App では動かない旨の通知でした。
 そこで、前回の記事を Twitter APIv2 に合わせて修正。ついでに、曜日毎にツイート内容を変える下準備も行いました。

【ポイント】
・従来の Twitter APIv1.1 を用いた App は削除して、改めて App 作成する
・セキュリティーキーは再発行が必要になる
・Appに書き込み権限付与の変更が必要なため、改めて App 作成時に生成したセキュリティーキーは意味がない。読み書き権限に変更した後、改めてセキュリティーキーの生成を行い、それを用いる必要がある
・APIv2 の特徴に OAuth2.0 App-Only 対応がある。
 これは Bearer Token だけで使えるので手軽であるが読み取り権限のみであり、ツイートする(書き込み)するには用いることができない
・APIv2 でツイートするには「ClientオブジェクトのClient.create_tweetメソッド」を用いる
・曜日の取得は import datetime して、datetime.date.today()。ただし、得られるのは 0〜6の数値であり、0=月曜日・・・6=日曜日に対応する
・ツイートする文字列を改行したい箇所には「\n」を入力する

【作ったもの】

import tweepy
import datetime

consumer_key = "APIキー"
consumer_secret = "APIパスワード"
access_token = "アクセストークン"
access_token_secret = "アクセストークンパスワード"

client = tweepy.Client(
    consumer_key = consumer_key,
    consumer_secret = consumer_secret,
    access_token = access_token,
    access_token_secret = access_token_secret
)

today = datetime.date.today()

if today.weekday()==0:
    tweet_week = ("月曜日")
elif today.weekday()==1:
    tweet_week = ("火曜日")
elif today.weekday()==2:
    tweet_week = ("水曜日")
elif today.weekday()==3:
    tweet_week = ("木曜日")
elif today.weekday()==4:
    tweet_week = ("金曜日")
elif today.weekday()==5:
    tweet_week = ("土曜日")
else:
    tweet_week = ("日曜日")

tweet_content = tweet_week+"\nAPIv2テスト2行目\nAPIv2テスト3行目\nAPIv2テスト4行目"
client.create_tweet(text=tweet_content)

【ざっくり解説】
・1行目:Python から Twitter API を使うためのモジュールを読み込む
・2行目:Python で時刻を扱うためのモジュールを読み込む
・3〜6行目:Twitter App 生成時に発行した各種キーを設定する
・7〜12行目:APIキー/パスワードとアクセストークン/パスワードをTwitter APIにセットする
・13行目:今日の時刻を読み込む
・14,15行目:今日の曜日を示す識別子が 0、すなわち月曜日であれば、ツイートに用いるテキストの部品として「月曜日」と文字列を代入する
・〜27行目:14,15 行目と同様に、火曜日〜日曜日の文字列を条件分岐により代入する
・28行目:ツイートするテキストを作る。一行目にはツイートする曜日、2〜4行目に任意の文字列(今回はテスト用)を入力する。「+」演算子により、文字列を結合している。また、後半の「" "」で囲んだ部分において、改行したい箇所に「\n」(バックスラッシュn)を入力する。
→ macos 環境において、バックスラッシュは「option + ¥」で入力可能
・29行目:Twitter APIv2でツイートするには Clientオブジェクトの Client.create_tweetメソッドを用いる (APIv1.1 では APIオブジェクトの api.update_statusだったが変更された)

【実行結果】

今回は手動ですが Python からツイートできました

【今後の展開】
 曜日毎に異なる文字列を入力して、この Python コードを自動実行するように Linux にて設定することで、曜日に応じた自動ツイートをする。

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