Twitter APIを用いて、pythonからリツイートしてみましょう!
Twitterで効率的に宣伝を行うためには、自分の記事紹介ツイートのリツイートが欠かせませんよね。
これを自動化するための第一歩として、pythonとTwitter APIを用いてリツイートを実行してみましょう!
関連:あなたに最適なpython独習の参考書は?各参考書の長所と短所をご紹介!
前提
この記事ではTwitterのAPIを使用します。
そのためにはTwitterでアプリ登録を行い、アクセストークンとシークレットキーを取得する必要があります。
これらの取得方法については以下の記事でご紹介していますので、お済でない方はこの機会にぜひ試してみてください。
また、APIを用いたリツイートは、APIによるツイートと合わせて1日あたり2,400件までとされています。
さらに30分ごとのリミットもあるようなので、短時間でコードを乱発するとアカウント凍結の危険があります。
今回紹介する処理をwhile文による無限ループ内に書いてうっかり大量にAPIリクエストをしてしまった、と言ったことが無いように気を付けてください。
やってみる
習うより慣れよ、実際にやってみましょう!
今回は@mojitoba_comアカウントによるこちらのツイートを対象にしてみます。
リツイートするツイートのIDを調べる
APIからリツイートするためには、そのツイートのIDが必要になります。
ここでIDとは@mojitoba_comのようなアカウントIDではなく、status IDを指します。
具体的には、以下のようにツイートのURLを見ることでIDを調べられます。
赤枠内の数字(例では1057605092721876992)をメモしておきましょう。
リツイートする
それでは実際にAPIからリツイートするコードを見てみましょう。
まずはTwitterのAPIに接続する準備をします。
>>> from requests_oauthlib import OAuth1Session >>> CK = 'CONSUMER KEYを入力' >>> CS = 'CONSUMER SECRETを入力' >>> AT = 'ACCESS TOKENを入力' >>> ATS = 'ACCESS TOKEN_SECRETを入力' >>> twitter = OAuth1Session(CK, CS, AT, ATS)
ここでCONSUMER KEYなどには自分のアプリの該当する文字列を用いてください。
もしrequests_oauthlibライブラリを入れていない場合はターミナル、コマンドプロンプトで以下を実行してください。
$ pip install requests_oauthlib
関連:【python】ModuleNotFoundError: No module named ***の対処方法
次に、先ほど用意したstatus IDを変数に入れておきます。
>>> tweetid = 1057605092721876992
これで準備は整いました。
上で用意したツイートのstatus IDを用いてRTを実行してみましょう。
>>> url = "https://api.twitter.com/1.1/statuses/retweet/%d.json"%tweetid >>> twitter.post(url) # retweet実行 <Response [200]>
リツイートが成功すると、上のように<Response [200]>と表示されます。
<Response [403]>が表示される場合は、既にそのツイートをリツイートしていないかを確認してください。
また、<Response [400]>が表示される場合はurlの入力ミスが考えられます。
リツイートを解除する
今度はリツイートを解除してみましょう。
先ほどとほとんど同じコードで実行することができます。
API用のURLがretweetからunretweetに変わっています。
>>> url = "https://api.twitter.com/1.1/statuses/unretweet/%d.json"%tweetid >>> twitter.post(url) # unretweet実行 <Response [200]>
リツイートの時と同様に、問題なくリツイート解除が実行されれば<Response [200]>が表示されます。
一方でリツイートされていないツイートを解除しようとすると<Response [403]>が表示されます。
リツイートしなおす
最後に、「すでにリツイートされているツイートをもう一度リツイートする」コードをご紹介します。
上でご紹介したコードの合わせ技で実現することができます。
>>> url = "https://api.twitter.com/1.1/statuses/unretweet/%d.json"%tweetid >>> twitter.post(url) # unretweet実行 >>> url = "https://api.twitter.com/1.1/statuses/retweet/%d.json"%tweetid >>> twitter.post(url) # retweet実行
上のように、一度必ずリツイート解除を実行してから、再度リツイートをすることで、「リツイートのしなおし」が可能です。
まとめ
pythonを用いてTwitterAPIからツイートのリツイート、その解除を行う方法についてご紹介しました。
これを用いることで、リツイートの自動化もできるようになります。
次の記事ではリツイートの自動化方法についてもご紹介しているので、是非あわせてご覧ください!