こんにちは、fuyutsuki(@Fuyutsuki)です。
X(旧Twitter)へのつぶやきを自動で投稿したり、投稿したツイートを解析したいと思ったことはありませんか?
自動化ということで、Python使えば可能だろうと思い調べてみましたが、やはり可能でした。
今回の記事ではTwitter Developer Platformへの登録及び、Pythonを使って指定時刻に自動でツイートする方法を解説します。
Pythonとは何ぞやって方はこちらの記事をご覧ください。記事の後半にPythonのインストール方法についても解説しています。
Twitter Developer Platformへの登録方法についても画像付きで詳細に解説していきますので、ぜひご覧ください。
TwitterからXになったことによる変更点
TwitterからXとなりましたが、Pythonを使って自動でツイートすることは問題なく可能です。
主な変更点としては、Free・Basic・Proの3つのプランが用意されることになりました。一日に自動でツイートする数に応じてプランを選んでいただければと思います。
Tweepy V1.1ではなくV2を使う必要がある
2024年2月追記。XではTweepyのV1.1ではなく、V2を使わないとエラーになるようです。こちらにコードの一例を示します。
import tweepy
# APIキーとアクセストークンの設定
api_key='XXX'
api_key_secret='XXX'
access_token='XXX'
access_token_secret='XXX'
client = tweepy.Client(
consumer_key=api_key,
consumer_secret=api_key_secret,
access_token=access_token,
access_token_secret=access_token_secret
)
# 投稿
client.create_tweet(text="テスト投稿")
Step1_Twitter Developer Platformに登録
最初のStepとして、以下のURLからTwitter Developer Platformに登録します。
「名前」などの必要事項を入力し、画面の指示に従って登録作業を行います。
電話番号がtwitterアカウントに登録されていないとエラーが出るので注意しましょう。
必要な情報としては下記の通りです。
- API Key
- API Key Secret
- Acess token
- Access token secret
作成時点で、下記項目はコピーするように表示されます。
- API Key
- API Key Secret
その後、下記画像の箇所からAccess Token and SecretのGenerateをクリックします。
Generateが完了すると、下記の項目をコピーするように表示されます。
- Access Token
- Access Token Secret
Step2_Twitter Developer Platformの設定
Twitter API v2にアカウントを昇格
次に、Pythonでツイートを自動投稿するためにtweepyというライブラリを使用するのですが、このライブラリを使用するためにはアカウントを昇格させる必要があります。
画像のように、Twitter API v2のタブをクリックし、ElevatedのタブのApply for Elevatedの黒色ボタンをクリックして昇格申請を行います。無料なのでご安心を。
各項目記述して申請手続きを進めます。途中英語で書かないといけない必要がありますが、ここは頑張って英語で記述しましょう。
承認が完了すると下記のような画面になります。
私の場合は申請後すぐに承認されました。
権限の設定
まずはAppの作成を行っていきます。
https://developer.twitter.com/en/portal/projects-and-apps
のページからCreate Appをクリックしましょう。
App nameを入力します。
次に権限設定を行います。
Dashboard > ユーザー名右の歯車マーク > から下記画像のところまでいきましょう。
Set upボタンをクリックして、以下のように設定を行います。
権限エラーが発生する場合は、App permissionsがReadになっていないかをまず確認しましょう。
API Keyなどを再発行
私はこれに気付かず、エラー解消にかなりの時間がかかりました。。
Pythonにより自動でツイートする
Python仮想環境の構築
先程紹介したこちらの記事で解説したように、vertualenvでPythonの仮想環境を構築します。
今回はこちらのように、tweepyとschedをインストールするバッチファイルを作成します。
@echo off
rem スクリプトが置かれている場所をカレントディレクトリにする。
cd /d %~dp0
rem 念のためvirtualenvのインストールとpipのアップグレードを行う。
pip install virtualenv
python -m pip install --upgrade pip
rem venvの環境を構築する。
python -m venv venv
call ./vENV/Scripts/activate
python -m pip install --upgrade pip
rem 各パッケージをインストール
pip install tweepy
pip install sched
pause
Pythonで自動でツイートしてみる
まずはプログラミングでおなじみの”Hello World”と自動でツイートしてみましょう。
下記のコードを実行すれば”Hello World”と自動でツイートできます。
エラーになる方は、api key, api key secret, access token, access token secretが正しく記述できているかの確認+権限設定の確認などをしましょう。
import tweepy
if __name__ == '__main__':
# 取得したアクセスキーたちをセット。
api_key='XXXXXXXXXXXXXX'
api_key_secret='XXXXXXXXXXXXXX'
access_token='XXXXXXXXXXXXXX'
access_token_secret='XXXXXXXXXXXXXX'
auth = tweepy.OAuthHandler(api_key,api_key_secret)
auth.set_access_token(access_token,access_token_secret)
api = tweepy.API(auth)
message = "Hello World"
api.update_status(message)
このコードを実行した後にTwitterのアカウントで確認してみましょう。
以下のように、Hello Worldとツイートされているはずです!
指定時刻に自動でツイートする
コードは下記の通りです。
import tweepy
import time
import schedule
if __name__ == '__main__':
# 取得したアクセスキーたちをセット。
api_key='XXXXXXXXXXXXXX'
api_key_secret='XXXXXXXXXXXXXX'
access_token='XXXXXXXXXXXXXX'
access_token_secret='XXXXXXXXXXXXXX'
auth = tweepy.OAuthHandler(api_key,api_key_secret)
auth.set_access_token(access_token,access_token_secret)
def job():
api = tweepy.API(auth)
message = "Hello World"
api.update_status(message)
# 指定時刻で処理実行
schedule.every().day.at("11:50").do(job)
while True:
schedule.run_pending()
time.sleep(10)
schedule関数の解説
job関数に指定時刻になったら実行したい処理を登録します。
def job():
api = tweepy.API(auth)
message = "Hello World"
api.update_status(message)
以下で処理したい時刻を設定します。幾つか例を記述します。
# 毎日午前11時50分に処理実行
schedule.every().day.at("11:50").do(job)
# 毎週金曜日の午後15時に処理を実行
schedule.every().friday.at("15:00").do(job)
schedule.run_pending()関数によって登録した処理を実行します。
while構文により無限ループとすることで、定期実行を行うことができます。
一度処理を実行するだけであればschedule.run_pending()関数だけを呼び出してあげればOKです。
エクセルなどにツイート内容を登録しておいて、順番にツイートしていく(同じ内容のツイートはしない)といった工夫は必要ですね。
while True:
schedule.run_pending()
time.sleep(10)
まとめ:PythonでTwitterに自動ツイートしよう
Pythonを使ってTwitterに自動でツイートする方法について解説しました。
Twitter Developer Platformへの登録にかなり苦労しましたが、ようやくエラーを解消し、記事にすることができました。
また、プログラミングを学習したいと思っている方はこちらの記事で紹介しているように、買い切り型のオンライン動画学習サービスUdemyがおすすめです。講師の方々のレベルがとても高いことが特長です。
独学でプログラミング学習をするなら、まずおすすめしたいのがUdemyです。オンライン動画買い切り形式で、実務レベルのスキルを習得できます。定期的に80~90%OFFセールが実施されていますよ。
\ セール中は80~90%OFFで購入可能/
30日間返金保証
最後まで読んでいただきありがとうございました。
ではまた、次の記事で!
コメント