tweepy + Twitter API V2でフォロー、フォロワー一覧をCSVファイル出力


# はじめに

2023/2/9（おそらく米国時間）に実施すると公表[^アナウンス] されたTwitter APIの**有料化**前にTweepy経由にはなるがTwitter APIでプログラミングをもう少ししておきたいと考えた。

[^アナウンス]: [@TwitterDevによるツイート（2023/2/2）](https://twitter.com/TwitterDev/status/1621026986784337922)。その後（現在の）無料APIアクセスは2/13まで延長された。その後は1日最大1500ツイート等、なんらかの制限がかかる模様。

ちょうど少し前にアカウント凍結祭りもあったので、フォロワーとフォローの一覧をCSVファイルに出力して保存しておくためのプログラムを作成した。自分はTwitterでツイートするわけではないので、フォローしているユーザーの一覧さえ保存しておけば何が起こってもきっと大丈夫（のはず）。

# 環境

+ Pyhon 3.9.2（tweepy 4.12.1はPython 3.7～3.11をサポート）
+ tweepy V4.12.1（Twitter API V2を使用するため、V4.0.0以上必須）

:::note information 
次のコマンドでtweepy のバージョンは確認できる[^pythonコマンドをつかうべき理由]

[^pythonコマンドをつかうべき理由]: 複数バージョンのPythonがインストールされている環境の事を考えると`pip`コマンドよりも`python`コマンドを使用するのが望ましい。([参考ホームページ](https://daeudaeu.com/python-pip-difference/))

```
python -m pip show tweepy
```

出力結果（例）
```
Name: tweepy
Version: 4.12.1
Summary: Twitter library for Python
Home-page: https://www.tweepy.org/
Author: Joshua Roesslein
Author-email: tweepy@googlegroups.com
License: MIT
Location: /home/<ユーザ名>/.local/lib/python3.9/site-packages
Requires: requests, oauthlib, requests-oauthlib
Required-by:
```
:::

# 事前準備

[Twitter Deverloper Portal](https://developer.twitter.com/ja)にてアカウントを作成し、`Bearer Token`を取得しておく。方法はインターネットにいくらでも転がっているのでそちらを参照。なお、登録だけで済む`Essential`レベル（一番下）で構わない。


# フォロワー一覧をCSVファイルに出力

フォロワー（指定ユーザー**を**フォローしているユーザー）の一覧をCSVファイルに出力するプログラム。最大1000ユーザーまで取得できる。

:::note alert 
ツイートを非公開にしているユーザー、いわゆる**鍵付きユーザーには使用できない**。
:::

```GetFollowers.py
import tweepy
import csv

# Twitter Developer Portalで取得
BT = 'あなたのBearer Token'

UN = '検索したいユーザー名'	# @から始まるユーザー名、'@'不要
FN = 'followers.csv'    	# 出力CSVファイル名

client = tweepy.Client(BT)

# ユーザーIDを取得
user = client.get_user(username=UN)
user_id = dict(user[0])["id"]

# フォロワー取得（最大1000件まで）
users = client.get_users_followers(id=user_id, max_results=1000).data

# 検索結果出力
cnt=0
if users != None:
    with open(FN, 'w', encoding='utf-8', newline='') as file:
        writer = csv.writer(file)

        for user in users:
            cnt += 1
            csvRow = []
            csvRow.append(user.id)       # user id
            csvRow.append(user.name)     # display name
            csvRow.append(user.username) # @username
            writer.writerow(csvRow)

print(f'ユーザー(@{UN})のフォロワー{cnt}人の情報をファイル({FN})に出力しました。')
```
# フォロー一覧をCSVファイルに出力

フォロー（指定ユーザー**が**フォローしているユーザー）の一覧をCSVファイルに出力するプログラム。最大1000ユーザーまで取得できる。

:::note alert 
ツイートを非公開にしているユーザー、いわゆる**鍵付きユーザーには使用できない**。
:::


```Getfollowing.py

import tweepy
import csv

# Twitter Developer Portalで取得
BT = 'あなたのBearer Token'

UN = '検索したいユーザー名'	# @から始まるユーザー名、'@'不要
FN = 'following.csv'    	# 出力CSVファイル名

client = tweepy.Client(BT)

# ユーザーIDを取得
user = client.get_user(username=UN)
user_id = dict(user[0])["id"]

# フォロー取得（最大1000件まで）
users = client.get_users_following(id=user_id, max_results=1000).data

# 検索結果出力
cnt=0
if users != None:
    with open(FN, 'w', encoding='utf-8', newline='') as file:
        writer = csv.writer(file)

        for user in users:
            cnt += 1
            csvRow = []
            csvRow.append(user.id)       # user id
            csvRow.append(user.name)     # display name
            csvRow.append(user.username) # @username
            writer.writerow(csvRow)

print(f'ユーザー(@{UN})のフォロー{cnt}人の情報をファイル({FN})に出力しました。')
```

# 参考情報 

[Twitter Deverloper Portal](https://developer.twitter.com/ja)
[Tweepy ドキュメント](https://docs.tweepy.org/en/stable/index.html)
[Tweepy  Twitter API v2 リファレンス](https://docs.tweepy.org/en/stable/client.html)