🌊

TwitterAPI(Tweepy)で関連性のあるユーザーを絞り込む

2023/04/09に公開

概要

TwitterAPIを使って、ユーザーの中から関連性のあるユーザーを絞り込む方法を紹介します。
PythonのライブラリであるTweepyを使用して、TwitterAPIを叩いています。

環境

Tweepyとは

Tweepyは、Python用のTwitter
APIライブラリで、Twitterのデータや機能に簡単にアクセスできるように設計されています。主な機能には、ツイートの投稿、タイムラインの取得、ユーザー情報の取得、検索などがあります。簡潔なコードで効率的なTwitterアプリケーション開発が可能となるため、多くの開発者に利用されています。

Tweepyのインストール

tweepyは以下のコマンドを使って、pipでインストールできます。

pip install tweepy

Tweepyを用いたTwitter APIの認証

TweepyでtweepyのAPIの認証を行うために、tweepy clientを作成する必要があります。
tweepy clientを作成するには、以下のコードを実行します。

tweepy.Client(bearer_token)

(注)bearer_tokenは、Twitter Developer Portalで取得したAPIキーです。

関連性のあるユーザーを絞り込む

関連性のあるユーザーの定義

コミュニティにおいて関連性のあるユーザーの定義は難しいですが、今回は活動内容に近い単語をユーザー名もしくはプロフィールに含むユーザーを関連性のあるユーザーとして絞り込みます。
単語は以下のような内容で絞り込んでいます。

{'IndieGame', 'ゲームクリエイター', '個人制作', 'フロントエンド開発', 'シューティングゲーム', 'ゲーム音楽', 'ゲームシナリオ', 'プログラミング',
           'ゲームプログラマー', 'Unity', '制作', 'Web開発'}

ユーザー検索及びユーザー情報の取得

関連性のあるユーザーを絞り込むために、ユーザー検索及びユーザー情報の取得を行います。
今回のアプローチとして、以下の方法でユーザー一覧及び情報を取得しました。

  1. ユーザーIDがわかっているユーザーから詳細情報を取得する
  2. ユーザーのフォロワー一覧の取得
  3. ユーザーのフォロー一覧の取得

ユーザーIDがわかっているユーザーから詳細情報を取得する

フィールドと呼ばれるパラメーターのセットが装備されています。これにより、エンドポイント応答の各オブジェクトから必要なデータだけを選択できます。
今回は、取得できる情報をすべてフィールドに指定しています。
Tweepyの get_user
で指定できるフィールドの項目はドキュメント
の通りです。

ユーザーIDがわかっているユーザーから詳細情報を取得するには、以下のコードを実行します。

api.get_user(username=user_name,
            user_fields=['description', 'username', 'id', 'name', 'created_at', 'location', 'verified',
                         'profile_image_url', 'protected', 'url', 'pinned_tweet_id', 'entities',
                         'public_metrics'])

ユーザーのフォロワー/フォロー一覧の取得

ユーザーのフォロワー/フォロー一覧を取得するには、以下のコードを実行します。

ユーザーの情報を取得する方法と同様に、user_fields で取得する情報を指定できます。
この際に、max_results で取得するユーザーの数を指定でき、Defaultでは100件、最大では1000件まで指定することができます。

フォロワー一覧の取得

api.get_users_followers(id=user_id, max_results=1000,
                         user_fields=['description', 'username', 'id', 'name', 'created_at',
                                      'location',
                                      'verified',
                                      'profile_image_url', 'protected', 'url',
                                      'pinned_tweet_id', 'entities', 'withheld',
                                      'public_metrics'])

フォロー一覧の取得

api.get_users_followers(id=user_id, max_results=1000,
                         user_fields=['description', 'username', 'id', 'name', 'created_at',
                                      'location',
                                      'verified',
                                      'profile_image_url', 'protected', 'url',
                                      'pinned_tweet_id', 'entities', 'withheld',
                                      'public_metrics'])

キーワードに基づくユーザー検索

キーワードに基づくユーザー検索を行うには、以下のコードを実行します。

def _has_keyword(self, user: customuser.CustomUser) -> bool:
    for keyword in constant.KEYWORD:
        if keyword in user.name or keyword in user.description:
            return True
    return False

まとめ

ユーザーの条件には、フォロー・フォロワーの人数やツイート数など様々な条件があるためそれらを組み合わせてより自分の活動に近いユーザーを絞り込むことができます。

MidraLab(ミドラボ)

Discussion