ペペロンチーノ街道

無知を晒す

ツイートをいいねしたユーザの情報を取得

概要

タイトル通り.ただのメモ.公式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を保持しておいたほうが良さそう.

おわりに

ビビン丼おすすめです.

参考: developer.twitter.com