はじめに
2023/2/9(おそらく米国時間)に実施すると公表1 されたTwitter APIの有料化前にTweepy経由にはなるがTwitter APIでプログラミングをもう少ししておきたいと考えた。
ちょうど少し前にアカウント凍結祭りもあったので、フォロワーとフォローの一覧を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以上必須)
次のコマンドでtweepy のバージョンは確認できる2
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にてアカウントを作成し、Bearer Token
を取得しておく。方法はインターネットにいくらでも転がっているのでそちらを参照。なお、登録だけで済むEssential
レベル(一番下)で構わない。
フォロワー一覧をCSVファイルに出力
フォロワー(指定ユーザーをフォローしているユーザー)の一覧をCSVファイルに出力するプログラム。最大1000ユーザーまで取得できる。
ツイートを非公開にしているユーザー、いわゆる鍵付きユーザーには使用できない。
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ユーザーまで取得できる。
ツイートを非公開にしているユーザー、いわゆる鍵付きユーザーには使用できない。
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
Tweepy ドキュメント
Tweepy Twitter API v2 リファレンス
-
@TwitterDevによるツイート(2023/2/2)。その後(現在の)無料APIアクセスは2/13まで延長された。その後は1日最大1500ツイート等、なんらかの制限がかかる模様。 ↩
-
複数バージョンのPythonがインストールされている環境の事を考えると
pip
コマンドよりもpython
コマンドを使用するのが望ましい。(参考ホームページ) ↩