【Python】Twitter API で任意のユーザのフォロワー情報を取得するサンプルコード

スポンサーリンク

Twitter で『フォロワーの中から相互フォロー状態になっていない人を
自動抽出してフォローするツール』
を作成すべく、
フォロワーの情報を一括取得するコードを Python 3 で書いてみました。

tweepy を使用したコードはよく見かけたのですが、
今回は requests_oauthlib を使用しています。

スポンサーリンク

Twitter API を使用する事前準備

Twitter API を使用するための準備を行います。
(Python はインストール済みであることを前提とします)

APIキーとアクセストークンの発行

Twitter API を使用するためには、APIキーとアクセストークンの発行が必要です。
まだ発行していない場合は、以下の記事を参考にしてこれらを発行してください。

発行は1時間程度で終わります。

【2020年4月版】Twitter API キー / アクセストークンの取得方法 | 備忘録
副業の一環として、Twitter 運用の一部をプログラミングで自動化したいなーと思い、 Twitter API について調べてみました。

requests_oauthlib モジュールのインストール

以下で紹介するサンプルコードを実行するにあたり、
requests_oauthlib モジュールが必要ですので、以下コマンドでインストールしておきます。

インストール時の実行ログ

スポンサーリンク

Twitter API でフォロワー情報を取得するサンプルコード

以下、フォロワーの USER_ID と SCREEN_NAME をリストの辞書で
取得するサンプルコードです。

引数で与える screen_name は、フォロワー情報を取得したい Twitter ユーザー名を指定します。

フォロワー数が多い場合、結果セットが大きくなってしまうため、
Twitter API では、カーソルというページ単位で結果を取得します。

while文を使ってカーソルの値が 0 になるまで繰り返し取得しているのは
この対応をしているためです。

以下、公式マニュアル内の記載です。

The Twitter standard REST APIs utilize a technique called ‘cursoring’ to paginate large result sets. Cursoring separates results into pages (the size of which are defined by the count request parameter) and provides a means to move backwards and forwards through these pages.

To retrieve cursored results, you initially pass a cursor with a value of -1 to the endpoint. By default, an API endpoint that supports cursoring will assume -1 was passed as cursor if you do not provide one. The response to a cursored request will contain previous_cursor, next_cursor, previous_cursor_str and next_cursor_str. As is the case with most ID values in Twitter’s APIs, the _str values are provided for languages that cannot support large integers (e.g. JavaScript).

The next_cursor is the cursor that you should send to the endpoint to receive the next batch of responses, and the previous_cursor is the cursor that you should send to receive the previous batch. You will know that you have requested the last available page of results when the API responds with a next_cursor = 0.

■英文の意味
Twitterの標準REST APIは、「カーソル」と呼ばれる手法を利用して、大きな結果セットにページ番号を付けます。
カーソルは結果をページ(カウント要求パラメーターで定義されるサイズ)に分割し、
これらのページを前後に移動する手段を提供します。

カーソル付きの結果を取得するには、最初に、値-1のカーソルをエンドポイントに渡します。
デフォルトでは、カーソルをサポートするAPIエンドポイントは、カーソルを指定しない場合、
-1がカーソルとして渡されたと想定します。カーソルリクエストへの応答には、previous_cursor、next_cursor、previous_cursor_str、およびnext_cursor_strが含まれます。
TwitterのAPIのほとんどのID値と同様に、_str値は大きな整数をサポートできない言語(JavaScriptなど)に提供されます。

next_cursorは、応答の次のバッチを受信するためにエンドポイントに送信する必要があるカーソルであり、
previous_cursorは、前のバッチを受信するために送信する必要があるカーソルです。
APIがnext_cursor = 0で応答すると、結果の利用可能な最後のページを要求したことがわかります。


フォロワーの数が極端に多いアカウントから情報を取得する場合、
上記コードをそのまま使用すると API の回数制限に引っかかる可能性があるため、
数ページ分の情報取得したら●分待機する、みたいな処理を入れる必要があるかもしれません。

API レート制限: 早見表API レート制限: 早見表


その他、コマンドの詳細については、以下のドキュメントを確認してください。
Twitter 開発者 ドキュメント日本語訳 GET followers/list

フォロワー情報取得のレスポンス一覧

上記コードでツイートした際、返却されるレスポンスの例を以下に記載します。

レスポンスには、フォロワーさんの情報はもちろん、フォロワーさんが直近で
ツイートした内容なども含まれています。

サンプルコード内でも実施していますが、json 形式で受け取ることで、
レスポンスから情報を引き抜くことができます。

以上、参考にしてみてください^^

コメント