概要
タイトル通り.ただのメモ.公式docを見てやるだけです.
今回はあるツイートをいいねしたユーザの情報がほしいとする.tweepyを使う.
準備
公式docに沿ってTwitter API Keyを取得する.Twitter API といえば,申請理由のお気持ちを英作文しなければならない印象だったけど,その必要はなかった.Twitter API v2になったから?入力項目は適当でOK.ただしアカウントのメールアドレス,電話番号は適切なものを用意しておく必要がある.審査もなく,5分もあれば取得完了する,
内容
以下コード.個人趣味での使い捨てスクリプトなので,汚いのは気にしない.
import os import tweepy bearer_token = os.getenv('BEARER_TOKEN') tweet_id = 1514544239748816904 client = tweepy.Client(bearer_token) response = client.get_liking_users(tweet_id, user_fields=['description', 'public_metrics'], max_results=100) for user in response.data: row = [user.name, user.username, 'https://twitter.com/' + user.username, user.description.replace("\n", ""), user.public_metrics['following_count'], user.public_metrics['followers_count']] print(row) next_token = response.meta['next_token'] while True: response = client.get_liking_users(tweet_id, user_fields=['description', 'public_metrics'], max_results=100, pagination_token=next_token ) if response.data is None: print('finish') break for user in response.data: row = [user.name, user.username, 'https://twitter.com/' + user.username, user.description.replace("\n", ""), user.public_metrics['following_count'], user.public_metrics['followers_count']] print(row) next_token = response.meta['next_token']
tweet_id
はツイートのユニークなid.ブラウザからツイートを開いて,エンドポイントを見ればわかる.https://api.twitter.com/2/tweets/:id/liking_users
がいいねしたユーザを取得するAPIのエンドポイント.tweepyではget_liking_users
メソッド.- (クエリ)パラメータ指定なしのデフォルトだと以下の3つが返される.
id
: ユーザの一意な識別ID.普段のツイッターじゃあ見かけない.普段我々が見ているidとは別物.数字の羅列(ただしstring).name
: アカウントの名前.【公式】松屋
とかのことusername
: アカウントのID.リプ送るときのやつ.@matsuya_foods
のこと.
- 今回はいいねしたユーザ情報がほしいので
user_fields
を付与する.試しにユーザのプロフィールとメトリクスを取得している. - 一度のリクエストですべての結果が獲得されなかった場合,前回のレスポンスで返された
next_token
を渡して,続きからユーザ情報を獲得する.自分の場合は1リクエストで75件前後獲得されていた. - しかし,各認証ユーザーにつき15分間に75リクエストまでの制限があることに注意.75*75=5625くらいのいいねがついているツイートを対象とするときは,
response.data
をいい感じに数えて,next_token
を保持しておいたほうが良さそう.
おわりに
ビビン丼おすすめです.