このページに書かれている内容はTwitter APIの有料化により無料では使用できなくなっています.
tweepyのget_favoritesを使って特定のユーザーがいいねしたツイートを取得します. 15分につき75回のリクエストをかけることができます.この制限を超えるとTooManyRequestsエラーが発生します.
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)
api.get_favorites()で自分がいいねしたツイートを取得することができます. 引数countで一回に取得するツイート件数を指定することができます.デフォルトは20件ですが,一回で最大200件まで取得することができます. 以下のコードでいいねしたツイートを200件取得し表示することができます.
# 自分がいいねしたツイートを200件取得
favorite_list = api.get_favorites(count=200)
# ツイートを表示
for tweet in favorite_list:
print(f"@{tweet.user.screen_name}: {tweet.user.name}")
print(tweet.text)
print(tweet.created_at) # 協定世界時で表示されます(+9時間で日本時間になります)
print("===============")
tweet._jsonで受け取ったツイートに関する他の情報を確認することができます.
詳しくはこちら
screen_name, user_idなどの引数を指定することで特定のユーザーがいいねしたツイートを取得することができます.
@TwitterのようなIDでアカウントを指定したい場合はscreen_nameを使います.
# 特定のユーザーがいいねしたツイートを200件取得
favorite_list = api.get_favorites(count=200,screen_name="Twitter")
# ツイートを表示
for tweet in favorite_list:
print(f"@{tweet.user.screen_name}: {tweet.user.name}")
print(tweet.text)
print(tweet.created_at)
print("===============")
アカウント固有の識別番号(ID)でアカウントを指定したい場合はuser_idを使います.
# 特定のユーザーがいいねしたツイートを200件取得
favorite_list = api.get_favorites(count=200,user_id=783214)
# ツイートを表示
for tweet in favorite_list:
print(f"@{tweet.user.screen_name}: {tweet.user.name}")
print(tweet.text)
print(tweet.created_at)
print("===============")
200件より多く取得したい場合はmax_idを指定し複数回 get_favoritesを利用することで取得できます. max_idでIDを指定することで「指定したID以下のIDを持つツイート(指定したツイートとそれより古いツイート)」のみを返してくれるようになります. 最初に特定のユーザーのいいね数を調べ,最大で1000件までいいねを取得してみます. 見れるツイートがないのにツイート数が3になっているようなアカウントなどのように,実際のいいね数と表示がずれている場合にエラーになることがあるので取得できなかった場合は処理を止めるようにしています.
import math
# @abc... などの screen_name でユーザーを指定する
screen_name = "Twitter"
# いいねを取得したいユーザーのいいね数を調べる
user = api.lookup_users(screen_name=[screen_name])
loop_count = min(5,math.ceil(user[0].favourites_count/200)) # いいね件数を200で割って切り上げた数字が回すべきループの回数
favorite_tweet_list = [] # いいねしたツイートのリスト
max_id = None
while loop_count>0:
fav_list = api.get_favorites(count=200,screen_name=screen_name,max_id=max_id)
# ツイートが1件も取得できなかった場合にエラーになるのを防ぐ
if len(fav_list) == 0:
print("ツイートを取得できませんでした",loop_count)
loop_count = 0
else:
max_id = fav_list[-1].id - 1 # 取得したツイートの最後のIDから1引いたものをmax_idにすれば続きから取得できる
loop_count -= 1
favorite_tweet_list += fav_list # 取得したツイートをリストに追加する
# ツイートを表示
print(len(favorite_tweet_list)) # 非公開アカウント 削除などの都合(?)で1000件取得できないことがあります
for tweet in favorite_tweet_list:
print(f"@{tweet.user.screen_name}: {tweet.user.name}")
print(tweet.text)
print(tweet.created_at)
print("===============")
lookup_usersに関してはこちら