もじとばコム

pythonからリツイートしてみよう

Twitter APIを用いて、pythonからリツイートしてみましょう!

Twitterで効率的に宣伝を行うためには、自分の記事紹介ツイートのリツイートが欠かせませんよね。

これを自動化するための第一歩として、pythonとTwitter APIを用いてリツイートを実行してみましょう!

 

関連:pythonでリツイートを自動化しよう!

関連:あなたに最適なpython独習の参考書は?各参考書の長所と短所をご紹介!

 

前提

この記事ではTwitterのAPIを使用します。

そのためにはTwitterでアプリ登録を行い、アクセストークンとシークレットキーを取得する必要があります。

これらの取得方法については以下の記事でご紹介していますので、お済でない方はこの機会にぜひ試してみてください。

関連:Twitter APIへの登録方法を画像で解説!

また、APIを用いたリツイートは、APIによるツイートと合わせて1日あたり2,400件までとされています。

さらに30分ごとのリミットもあるようなので、短時間でコードを乱発するとアカウント凍結の危険があります。

今回紹介する処理をwhile文による無限ループ内に書いてうっかり大量にAPIリクエストをしてしまった、と言ったことが無いように気を付けてください。

参考:Twitterリミットについて

 

やってみる

習うより慣れよ、実際にやってみましょう!

今回は@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からツイートのリツイート、その解除を行う方法についてご紹介しました。

これを用いることで、リツイートの自動化もできるようになります。

次の記事ではリツイートの自動化方法についてもご紹介しているので、是非あわせてご覧ください!

次回:pythonでリツイートを自動化しよう!