Twitter API:こっちがフォローしてるのにフォローバックしてくれてないアカウント一覧の取得
"お別れはブロックで"
"お別れはブロ解で"
"リムるならフォローするな!"
の意味がやっとわかりました今日この頃です。
前記事【ボツ】Twitter API:フォローしているがフォローバックされてないアカウント一覧の取得のtweepyを使ったやり方がぜんぜんうまく働かないのでtweepyやめて作り替えた。
コード
以下のコードをget_notFollwingFriends.pyなど任意の適当なファイル名で保存する。
# ライブラリインポート
import json
from requests_oauthlib import OAuth1Session
# APIキー&トークン設定
ConsumerAPIKey = ''
ConsumerAPIsecretkey = ''
AccsessToken = ''
AceestokenSecret = ''
# 対象アカウント設定
AccountUserId = ''
# フォロワーとフォロイング格納リスト
GetFollowersList = []
GetFriendsList = []
# フォロワーさんになっていないフォロイングさん格納リスト
GetNotFollowingFriedsList = []
# フォロワーを取得してリストする関数
def getFollowers():
# フォロワー取得パラメータ設定
Cursor = '-1'
GetFollowersIdsApiSession = OAuth1Session(ConsumerAPIKey, ConsumerAPIsecretkey, AccsessToken, AceestokenSecret)
GetFollowersIdsApiUrl = 'https://api.twitter.com/1.1/followers/ids.json'
while Cursor != '0':
GetFollowersIdsParameters = {
'user_id' : AccountUserId
,'screen_name' : ''
,'cursor' : Cursor
,'stringify_ids' : ''
,'count' : '10000'
}
# フォロワー取得
GetFollowersIdsResponse = GetFollowersIdsApiSession.get(GetFollowersIdsApiUrl, params = GetFollowersIdsParameters)
# 取得成功時はカーソルを進める
if GetFollowersIdsResponse.status_code == 200:
GetFollowersIdsResult = json.loads(GetFollowersIdsResponse.text)
GetFollowersList.extend(GetFollowersIdsResult['ids'])
Cursor = GetFollowersIdsResult['next_cursor_str']
else:
print(GetFollowersIdsResponse)
exit()
# フォロイングを取得してリストする関数
def getFriends():
# フォロイング取得パラメータ設定
Cursor = '-1'
GetFriendsIdsApiSession = OAuth1Session(ConsumerAPIKey, ConsumerAPIsecretkey, AccsessToken, AceestokenSecret)
GetFriendsIdsApiUrl = 'https://api.twitter.com/1.1/friends/ids.json'
while Cursor != '0':
GetFriendsIdsParameters = {
'user_id' : AccountUserId
,'screen_name' : ''
,'cursor' : Cursor
,'stringify_ids' : ''
,'count' : '10000'
}
# フォロイング取得
GetFriendsIdsResponse = GetFriendsIdsApiSession.get(GetFriendsIdsApiUrl, params = GetFriendsIdsParameters)
# 取得成功時はカーソルを進める
if GetFriendsIdsResponse.status_code == 200:
GetFriendsIdsResult = json.loads(GetFriendsIdsResponse.text)
GetFriendsList.extend(GetFriendsIdsResult['ids'])
Cursor = GetFriendsIdsResult['next_cursor_str']
else:
print(GetFriendsIdsResponse)
exit()
# リスト作成関数実行
getFollowers()
print('【フォロワー数】' + str(len(GetFollowersList)))
getFriends()
print('【フォロイング数】' + str(len(GetFriendsList)))
# 本処理_こっちがフォローしてるIDの中から、こっちをフォロバしてないものだけを抜き取る
for friend in GetFriendsList:
if friend not in GetFollowersList:
# 抜き取ったIDをscreen_nameに変換する
GetUsersShowApiSession = OAuth1Session(ConsumerAPIKey, ConsumerAPIsecretkey, AccsessToken, AceestokenSecret)
GettUsersShowApiUrl = 'https://api.twitter.com/1.1/users/show.json'
GetUsersShowParameters = {
'user_id' : friend
}
GetUsersShowResponse = GetUsersShowApiSession.get(GettUsersShowApiUrl,params = GetUsersShowParameters)
if GetUsersShowResponse.status_code == 200:
GetUsersShowResult = json.loads(GetUsersShowResponse.text)
GetNotFollowingFriedsList.append(GetUsersShowResult['screen_name']) #extendじゃダメ
# print('こっちがフォローしてるのに (`A´).フォロワーさんになっていないユーザー名:' + str(GetUsersShowResult['screen_name']))
print('GetNotFollowingFriedsList一覧:' + str(GetNotFollowingFriedsList))
使い方
-
APIキー&トークン設定で、自分のツイッター開発者アカウントのAPIキーおよびトークンを設定。
例:
ConsumerAPIKey = 'XxXx0xXxxxX8xXxxxxX3755XX'
ConsumerAPIsecretkey = 'x39xXxxXXX3xXXXxx3XxXx4xX4XX7XxXxXXx0xxxXX5xxXXXXx'
AccsessToken = '999999999999999999-XxXX6Xxxx3xxxxXxxxXXXxxX5XXXX3'
AceestokenSecret = '9xxXXX6xxXxxX2X4XxxX1xXzxxxxxx5x1Xxx68xxx3xXX' -
対象アカウント設定で、自分のTwitterアカウント(screen_name)を設定。
例:
AccountUserId = 'myself' -
プログラムを実行する。
python get_notFollwingFriends.py
コード解説
- 関数getFollowers():followers/ids APIを使ってフォロワーさんのID一覧をGetFollowersListに格納する。
- 関数getFriends():friends/ids APIを使ってフォローしているアカウント(以下フレンド一覧)のID一覧をGetFriendsListに格納する。
- For文を使って、フレンド一覧の中でフォロワーになっていないアカウントを弾き出してfriend変数に格納していきながら…
- そのIDをusers/show APIを使ってscreen_nameに変換していく。
- 変換されたscreen_nameをGetNotFollowingFriedsListリストに格納していく。
- For文を抜けたら、最後にGetNotFollowingFriedsListリストをprintで一覧表示。
※ パラメーターの'count'は自分のフォロワー数、フレンド数に合わせて調節する。
※ あとは一覧表示されたscreen_nameをひとつひとつ確認しながら手作業でリムっていく。フォロワー数が10万とかになったらリムるのも自動化するかもしれない。
参考
StackOverflow - Get username by id in Twitter Api
【Python3】【TwitterAPI】PythonでフォロワーのIDを全件取得(GETfollowers/ids)