見出し画像

[Python]Twitter APIv2で特定曜日に自動的に呟く

特定の曜日だけ自動的にツイートしたい。
という要望に応えて作りました。事前準備(登録編ツイート編改行ツイート編)でいくつか試した上で作ったもの。

[要望]
・ある曜日に自動ツイートする
・曜日により一部の文言は変化させる

[用意するもの]
・Python で Twitter APIv2を用いて作成したコード
・特定曜日に特定ファイルを自動実行するサーバーの仕組み

ということで、次の通り。

[Python Twitte APIv2]

import tweepy
import datetime

consumer_key = "consumer_key"
consumer_secret = "consumer_secret"
access_token = "access_token"
access_token_secret = "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()==2:
    i_flag = 1
    tweet_week = ("木曜日")
elif today.weekday()==4:
    i_flag = 1
    tweet_week = ("土曜日v3")
else:
    i_flag = 0

if i_flag == 1:
    tweet_content = "明日は"+tweet_week+"\nAPIv2テスト2行目\nAPIv2テスト3行目\nhttp://"
    client.create_tweet(text=tweet_content)

[ざっくり解説]
・1行目:Pythonでツイートするモジュールを読み込む
・2 行目:日時を扱うモジュールを読み込む
・3〜12行目:Twitter APIv2 を用いてツイートするための認証情報をセットする。実際には、発行した任意の文字列となる
・13行目:本日の日時データを変数に代入する
・14〜16行目:変数に入っている日時データが水曜日(==2)であれば i_flag(任意の変数)に1を代入、tweet_weekに"木曜日"を代入する
・17〜19行目:14-16行目にヒットせず、かつ日時データが金曜日(==4)であれば i_flag(任意の変数)に1を代入、tweet_weekに"土曜日"を代入する
・20行目:上記以外は i_flag に 0 を代入する
・21行目:i_flag が 1 の場合に、次を実行する *1
・22行目:文字列を結合して tweet_content に代入する。例えば、日時データが水曜日であれば、「明日は水曜日」という文字列になる。\nは改行、2 行目、3行目も入力
・23行目:22行目で生成した文字列でツイートする。
*1 i_flag はなくても動作すると思う。他に作ったコードの改変なので、この方が作り易かった。

[自動実行 Ubuntu] 
 サーバーはGCPを利用。別記事(無償枠サーバーを作る無償枠UbuntuにPythonインストールファイル転送定期的に自動実行)など必要に応じてご参照下さい。

@mygcp:~$ sudo vim /etc/cron.d/tweetbot 
@mygcp:~$ 
@mygcp:~$ cat /etc/cron.d/tweetbot 
00 18 * * 3,5 hogehoge /usr/local/bin/python3 /home/hogehoge/twitterAPIv2_bot.py

[ざっくり解説]
・sudo vim:エディタvimで、/etc/cron.d ディレクトリ配下に任意のファイル名にて作成する。内容は、一番下の行の内容
・cat:vim で作成したファイルの中身を確認している
・ファイルの中身の説明
 ・00 18 * * 3,5:日時の指定。00分、18時、*(任意の日)、*(任意の月)、曜日(3:水曜日、5:金曜日)に実行する
 ・hogehoge:実行するユーザー名、この例ではユーザー hogehoge の権限で実行する
 ・/usr〜:実行内容。ここでは「実行するアリプリケーション 対象ファイル名」を python3 で twitterAPIv2_bot.py を実行するよう指定

実行イメージはこちら。想定通りに動いてます。

特定曜日だけツイートできた。
"v3"は何度か失敗した証。
連続して同じ内容をツイートできないので、
文字列を変えて試行錯誤したためつけただけです

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