【Twitter API v2】フォローされているかを取得するには?

プログラミング

どうもイトサル(@itosaru)です。

自分が特定のユーザーにフォローされているか確認したいです。
Twitter APIでその情報を取得するメソッドはありますか?

結論から言うと直接フォローされているかどうかの情報を取得するメソッドはありません

しかし少し工夫すれば情報は取得可能です。

今回はそのフォローされているかどうかの情報を取得するためのプログラムの書き方について説明します。

実装方法は自分のフォロワーIDを一括取得して突合する

これが実装方法についての答えです。

まず自分のフォロワーのIDを「get_me()」メソッドを使って一括で取得します。

なお自分のフォロワーが1000を超える場合はnext_tokenを使った処理が必要です。

「get_me()」メソッドとnext_tokenについてはこちらの記事をご覧ください。

【Twitter API v2の使い方】ユーザー情報を取得する
Twitter API v2のget_me()、get_user()を使ってプロフィール文やURLを取得するプログラムを書く方法をお伝えします。プログラムはPythonとAPI起動に必要なライブラリTweepy4.9.0を使用します。
【Twitter API v2】next tokenを使って大量データを処理する
Twitter APIは1回のリスエストで取得できるデータの上限数が決まっています。例えばフォロワーを取得する処理では1000行が上限です。1001以上のデータをさらに取得したい場合はnext_tokenを使う必要があります。この記事ではそのnext_tokenについて説明します。

サンプルプログラム

下のコードがサンプルプログラムです。

このサンプルはまずディスプレイネーム(@マークで始まるもの)を入力します。

そしてその人が自分をフォローしているかどうかの結果を表示するというものです。

import tweepy
# Twitter Deverloper Portalで取得したAPIキーをコーテション('')の間にそれぞれ入れる
API_KEY = 'API Key'
API_KEY_SECRET = 'API Key Secret'
# Twitter Deverloper Portalで取得したベアラートークンをコーテション('')の間に入れる
BEARER_TOKEN = 'Bearer Token'
# Twitter Deverloper Portalで生成したアクセストークンをコーテション('')の間にそれぞれ入れる
ACCESS_TOKEN = 'Access Token'
ACCSESS_TOKEN_SECRET = 'Access Token Secret'

#フォロワーのリストを取得する
def get_my_followers(my_id):
    #1回目のリクエストと2回目以降のリクエストパラメータが違うためフラグ管理
    first_flg = True
    #返却用リスト
    tmp_list = []
    while True:
        if first_flg == True:
            #1回目リクエスト
            followers = client.get_users_followers(id=my_id, max_results="200")
            #初回フラグを落とす
            first_flg = False
        else:
            #2回目移行リクエスト
            followers = client.get_users_followers(id=my_id, pagination_token=next_token)

        #フォロワーIDをリストに格納
        followers_data = followers.data
        for i in range(len(followers_data)):
            tmp_list.append(followers_data[i].id)

        try:
            next_token = followers.meta['next_token']
            #print("next_token: " + next_token)
        except KeyError:
            #next_tokenが取得できない(最後のリクエスト)の場合はループ終了
            #print("最後のページに到達しました")
            break

    return tmp_list

#下のコードはいじらない
#https://docs.tweepy.org/en/stable/client.html
client = tweepy.Client(bearer_token = BEARER_TOKEN, consumer_key = API_KEY, consumer_secret = API_KEY_SECRET, access_token = ACCESS_TOKEN, access_token_secret = ACCSESS_TOKEN_SECRET)

#自分のidを取得して格納する
my_id = client.get_me().data.id
#フォロワーのid格納用リスト
followers_list = get_my_followers(my_id)

username = input("フォローされているか確認したいユーザー名を入力してください: ")
user_data = client.get_user(username=username).data
user_id = user_data.id

if(user_id in followers_list):
    print("フォローされています")
else:
    print("フォローされていません")

input()

プログラムの処理について解説します。

  1. 自分のidを引数にget_my_follower()を実行
  2. get_me()を使ってfollowerのidを作業リストに格納(max_resultは200で設定)
    ※next_tokenがある場合は処理を繰り返す
  3. 作業リストのデータをfollowers_listに格納
    ※これで自分のフォロワーID取得の前処理完了
  4. 入力されたディスプレイネーム(@マークで始まるもの)からユーザーIDを取得する
  5. 取得したユーザーIDを3のリストに突合し結果を表示する

動作確認の結果ついては自分のフォロワーさんをここに晒したくないので割愛します。

しかしフォローされているか、されていないかの結果表示についてはいずれも問題なかったです。

まとめ

今回はTwitter APIを使って特定のユーザーが自分をフォローしているかどうかを取得するプログラムについて説明しました。

改めて今回の内容についておさらいしましょう。

  • 1発でフォロー情報を取得するメソッドはTwitter APIにない
  • しかしget_me()とget_user()を使えば実装可能

メソッドがない現状、この方法が一番最適解だと思います。

Pythonの勉強におすすめな本

Pythonについて勉強したい!という方は

Python 1年生 体験してわかる!会話でまなべる!プログラミングのしくみ

の本がおすすめです。

前ページがカラー印刷で、かわいらしいどうぶつ2人の会話形式で読みやすいです。

内容はPythonの特徴からはじまり、プログラミングの方法、そして簡単な人工知能を作るまでを解説してくれます。

またこの本の続編である、「Python2年生」も発売されているので合わせてどうぞ!

  • Python2年生 データ分析のしくみ 体験してわかる!会話でまなべる!
  • Python2年生 スクレイピングのしくみ 体験してわかる!会話でまなべる!

 

コメント

タイトルとURLをコピーしました