このページに書かれている内容はTwitter APIの有料化により無料では使用できなくなっています.
特定のユーザーのフォロー・フォロワーを確認するで紹介したコードを少し応用するだけで「リムられ通知」を作ることができます. 1回目の実行でフォロワーリストを保存し,次回実行時に現在のフォロワーと前回実行時のフォロワーリストを比較することでフォロー解除 アカウントの削除 ブロック解除などの「リムられ疑惑」に反応するプログラムを作ります. 今回はAPIオブジェクトの作成時にwait_on_rate_limitを設定してレート制限によるエラーを回避します.
APIキー アクセストークンを使ってAPIオブジェクトを作成します. 以下のコードをコピペしてAPIキー アクセストークンの部分だけ書き換えてください. APIキー アクセストークンを忘れた方はアクセストークン・API Keyについてをご覧ください.
# tweepy.__version__ == '4.12.1'
import tweepy
# アクセストークンなどの識別コードを入力します
access_token= "Access Tokenを入力してください"
access_secret = "Access Token Secretを入力してください"
api_key = "API Keyを入力してください"
api_key_secret = "API Key Secretを入力してください"
bearer_token = "Bearer Tokenを入力してください"
# APIオブジェクトを作成します
auth = tweepy.OAuthHandler(api_key, api_key_secret)
auth.set_access_token(access_token, access_secret)
api = tweepy.API(auth, wait_on_rate_limit=True)
前回実行したときのフォロワーリストを保存しておき,次回実行したときに最新のフォロワーリストと比較することでフォロワーが減っていないかを確認できます.
ファイル名やフォルダを変える必要がありますが,screen_nameやuser_idを指定することで自分以外のアカウントに関しても調べることができます.
import datetime
import pickle
import os
follower_id_list = []
cursor = -1 # 最初の位置は-1で指定します
# すべて読み込み終わったら cursor=0 になります
while cursor!=0:
id_cursor = api.get_follower_ids(cursor=cursor)
follower_id_list += id_cursor[0] # フォロワーのIDをfollower_id_listに追加します
cursor = id_cursor[1][1] # [previous_cursor, next_cursor]の順に格納されています
# ファイルが存在するかを確認し,前回実行時のフォロワーリストを読み込む
if os.path.isfile("LatestFollowerList.pkl"):
with open("LatestFollowerList.pkl", "rb") as tf:
previous_follower_list = pickle.load(tf)
# リムられリストを作る
removed_list = []
for user_id in previous_follower_list:
# 前回のフォロワーリストのIDが最新のフォロワーリストにいなければリムられ(疑惑)
if user_id not in follower_id_list:
removed_list.append(user_id)
# ユーザーの情報を表示
if len(removed_list) > 0:
# lookup_usersでユーザーの情報を受け取る
for i in range(0, len(removed_list), 100):
for user in api.lookup_users(user_id=removed_list[i:i+100]):
print("@"+user.screen_name,user.name)
else:
print("Not removed")
# 最新のフォロワーリストを上書き保存
with open("LatestFollowerList.pkl", "wb") as tf:
pickle.dump(follower_id_list,tf)
# 上書き保存後も残るように実行時間で名前を付けて保存
now = datetime.datetime.now()
fileName = "FollowerList"+str(now.year)+str(now.month)+str(now.day)+str(now.hour)+str(now.minute)+".pkl"
with open(fileName,"wb") as tf:
pickle.dump(follower_id_list,tf)
ここではやりませんが,上記のコードを定期的(例えば3日おき)に実行し,tweepyを使って自分のTwitterアカウントにDMを送信したりすることで外部サービスを使わずにリムられ通知を受け取れるようになります.
リムられ通知で不幸せな思いをした方はぜひよくいいねしてくれる人を調べるもご覧ください.