Categories: その他

固定ツイートをRTした人にフォロバ&RT返しを行うプログラム【Python×Twitter運用】

みなさん、こんにちは。

最近Twiterをよく閲覧している際によく「フォロー&RTしてくれたらフォロバ&RT返し」というツイートを見かけます。

フォロワーを急増させるために効率の良い方法なのだと思います。

実際に私もフォロワーを増やすためにそのようなツイートを試してみました。

しかし、フォロバや固定ツイートのRT返しは手動でやるのは少し面倒でした。

そこで、pythonを利用して自動で固定ツイートをRTしてくれた人をフォローして固定ツイートをRTするプログラムを作成してみました。

こちらの記事では、その自動化プログラムについてご紹介しています。

◆次のような方におすすめの記事です。

  • Twitter運用を自動化したい方。
  • Python×Twitter運用に興味をお持ちの方。
  • 自作Twitter運用コードの参考にしたい方。

作成したコードを掲載していますので、すぐに汎用することが可能です。

なお、Twitter APIを使用しているため、Twitter Developerアカウントが必要となります。(要申請)

Twitter運用コード

import json
from requests_oauthlib import OAuth1Session
import tweepy

auth = tweepy.OAuthHandler("APIキー", "APIシークレット")
auth.set_access_token("アクセストークン", "アクセスシークレット")
api = tweepy.API(auth)

twitter = OAuth1Session("APIキー", "APIシークレット", "アクセストークン", "アクセスシークレット")

#自分の固定ツイート取得
endpoint = 'https://api.twitter.com/2/users?ids=ユーザーID'
params = {'expansions':'pinned_tweet_id'}
res = twitter.get(endpoint, params = params)
dic_me = json.loads(res.text)
print(dic_me['data'][0]['pinned_tweet_id'])
print(dic_me['includes']['tweets'][0]['text'])

tweet_id=dic_me['data'][0]['pinned_tweet_id']
endpoint = 'https://api.twitter.com/1.1/statuses/retweeters/ids.json?id=' + tweet_id + '&stringify_ids=true'
res = twitter.get(endpoint)
dic_users = json.loads(res.text)

#フォロー/フォロワー取得
friend_ids = api.friends_ids()
follower_ids = api.followers_ids()

for num in range(len(dic_users['ids'])):
   user_id = dic_users['ids'][num]
   
   #自分をフォローしているかどうか
   if user_id in follower_ids:
       print(user_id)
       endpoint = 'https://api.twitter.com/2/users?ids='+user_id
       params = {'expansions':'pinned_tweet_id'}
       res = twitter.get(endpoint, params = params)
       dic_user = json.loads(res.text)
   
       #自分がフォローしていないかどうか
       if int(user_id) not in friend_ids:
           print('未フォロー')
           print(dic_user)
           api.create_friendship(user_id) 
           print('フォローしました')

            #固定ツイートがあるかどうか
           if (dic_user['data'][0]['pinned_tweet_id']):
               tweet_id=dic_user['data'][0]['pinned_tweet_id']
               print('固定ツイートあり')
               try:
                   api.create_favorite(tweet_id)
                   api.retweet(tweet_id)          
               except Exception as e:
                   print(e)
   else:
       print("対象ではありません。")


こちらが、固定ツイートをRTしてくれた人をフォローして固定ツイートをRTするためのコードです。

ここからはこのコードを運用する上での注意点と解説を行なっていきます。

なお、本コードの使用は自己責任でお願いいたします。

プログラムを利用する前に

まず本プログラムを使用する上でOAuth1Session,tweepyをインストールする必要があります。

未インストールであれば以下のコードをターミナルに入力してインストールしましょう。

pip install requests requests_oauthlib
​pip install tweepy


また、Twitter developerアカウントを取得したら、コード内のAPIキー、APIシークレット、アクセストークン、アクセスシークレットを自分のものに書き換えましょう。

さらに、’ユーザーID’を自分のTwitterアカウントのユーザーIDに書き換えましょう。

ここでのユーザーIDはTwitter上で表示されるユーザーIDとは異なります。(詳しくはこちら

コードの解説

続いて、コードの流れについて解説していきます。

本コードは以下の3つの部分に分かれます。

  1. 固定ツイート情報の取得
  2. フォロー/フォロワー取得
  3. RTしてくれた人がRT返しするための条件を満たしていれば固定ツイートをRT返し

それぞれの部分に分けてざっくりと解説していきます。

①固定ツイート情報の取得

#①固定ツイート情報の取得
endpoint = 'https://api.twitter.com/2/users?ids=ユーザーID'
params = {'expansions':'pinned_tweet_id'}
res = twitter.get(endpoint, params = params)
dic_me = json.loads(res.text)
print(dic_me['data'][0]['pinned_tweet_id'])
print(dic_me['includes']['tweets'][0]['text'])

tweet_id=dic_me['data'][0]['pinned_tweet_id']
endpoint = 'https://api.twitter.com/1.1/statuses/retweeters/ids.json?id=' + tweet_id + '&stringify_ids=true'
res = twitter.get(endpoint)
dic_users = json.loads(res.text)


まず、①固定ツイート情報の取得 についてです。

ユーザーID(自分)を指定してTwitterに固定ツイートに関するリクエストを送ります。

リクエストの結果受け取ったレスポンスから自分の固定ツイートのツイートidを取得して「リツイートしているユーザー」のユーザーIDをリスト[dic_users]で取得します。

②フォロー/フォロワー取得

#②フォロー/フォロワー取得
friend_ids = api.friends_ids()
follower_ids = api.followers_ids()


次に、②フォロー/フォロワー取得についてです。

[friends_ids]で自分がフォローしているユーザーのユーザーIDを取得します。

[followers_ids]で自分をフォローしているユーザーのユーザーIDを取得します。

③フォロバ&RT返し(条件付き)

#③RTしてくれた人の固定ツイートをRT返し
for num in range(len(dic_users['ids'])):
   user_id = dic_users['ids'][num]
   
   #自分をフォローしているかどうか
   if user_id in follower_ids:
       print(user_id)
       endpoint = 'https://api.twitter.com/2/users?ids='+user_id
       params = {'expansions':'pinned_tweet_id'}
       res = twitter.get(endpoint, params = params)
       dic_user = json.loads(res.text)
   
       #自分がフォローしていないかどうか
       if int(user_id) not in friend_ids:
           print('未フォロー')
           print(dic_user)
           api.create_friendship(user_id) 
           print('フォローしました')

            #固定ツイートがあるかどうか
           if (dic_user['data'][0]['pinned_tweet_id']):
               tweet_id=dic_user['data'][0]['pinned_tweet_id']
               print('固定ツイートあり')
               try:
                   api.create_favorite(tweet_id)
                   api.retweet(tweet_id)          
               except Exception as e:
                   print(e)
   else:
       print("対象ではありません。")


最後に、③RTしてくれた人がRT返しするための条件を満たしていれば固定ツイートをRT返しについてです。

固定ツイートをRTしてくれたユーザー一覧[dic_users]から1人ずつ取り出して処理していきます。

①まず、そのユーザーが自分のことをフォローしているかどうかをフォロワーリストにそのユーザーのIDがあるかどうかで判別します(無ければ終了)。

②続いて、そのユーザーを自分がフォローしているかどうかをフォローリストにそのユーザーのIDがあるかどうかで判別します(あれば終了)。フォローしていなければここでフォローバックします。

③最後に、固定ツイートがあるかどうかを判別し、あればその固定ツイートをRTします。

以上が本コードの仕組みとなっています。

結論:Python×Twitter運用は可能性が無限大!

以上がpythonを利用して自動で固定ツイートをRTしてくれた人をフォローして固定ツイートをRTするプログラムです。

自分がテスト運用した際には問題なく利用することができました。

コードを作成している上でTwitter APIは非常に多機能であると感じました。

そのため、Python×Twitter運用で多くの作業が自動化でき、可能性は無限大だと感じました。

みなさんも自分の用途に合わせて改良したりして利用してみてください。

なお、本コードの利用はあくまで自己責任でお願いいたします。

最後までお読みいただきありがとうございました。

むらしん

Share
Published by
むらしん