【Python × Twitter運用】固定ツイートをRTした人にフォロバ&RT返しを行うプログラム
みなさん,こんにちは.
私はTwiterをよく閲覧しているのですがよく,「フォロー&RTしてくれたらフォロバ&RT返し」というツイートをしばしば見かけます.
フォロワーを急増させるために効率の良い方法なのだと思います.
実際に私もフォロワーを増やすためにそのようなツイートを試してみました.
しかし,フォロバや固定ツイートのRT返しは手動でやるのは少し面倒でした.
そこで,pythonを利用して自動で固定ツイートをRTしてくれた人をフォローして固定ツイートをRTするプログラムを作成してみました.
作成したコードを掲載していますので,すぐに汎用することが可能です.
なお,Twitter APIを使用しているため,Twitter Developerアカウントが必要となります.(要申請)
コード全貌
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("対象ではありません.")
プログラムを利用する前に
まず本プログラムを使用する上でOAuth1Session,tweepyをインストールする必要があります.
未インストールであれば以下のコードをターミナルに入力してインストールしましょう.
pip install requests requests_oauthlib
pip install tweepy
また,Twitter developerアカウントを取得したら,自分のAPIキー,APIシークレット,アクセストークン,アクセスシークレットに書き換えましょう.
さらに,'ユーザーID'を自分のTwitterアカウントのユーザーIDに書き換えましょう.(Twitter上で表示されるユーザーIDとは異なります.)
コードの解説
続いて,コードの流れについて解説していきます.
本コードは①固定ツイート情報の取得 ②フォロー/フォロワー取得 ③RTしてくれた人がRT返しするための条件を満たしていれば固定ツイートをRT返し の大きく3つの部分に分かれます.
コードの解説 ①固定ツイート情報の取得
#①固定ツイート情報の取得
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を利用して自動で固定ツイートをRTしてくれた人をフォローして固定ツイートをRTするプログラムの全貌です.
自分がテスト運用した際には問題なく利用することができました.
多いな問題はないと思いますが,もし問題が発生した際にはご連絡いただければ幸いです.
なお,本コードの利用はあくまで自己責任でお願いいたします.
最後までお読みいただきありがとうございました.
私はガジェット紹介,お得情報配信,ブログ運営に関する雑記ブログを運営しております.是非こちらもチェックしてみてください.