はじめに
この記事ではプログラミングの初心者が、Twitter APIの申請を行いPythonでツイートを取得するまでを記録します。
Twitter APIは申請が必要なため、2020年7月時点の申請にかかる時間の参考としてもお使いください。
結論、私の場合は24時間以内に受理されました。
金曜の夜に申請して、土曜の午後には使うことができました。
途中、メールでTwitter社とのやりとりが発生してしまったため、レアケースかもしれません。
Twitter APIの申請方法
他の記事でも詳しく紹介されているので、こちらでは簡潔に2020年7月時点の情報をまとめます。
Developerサイトでログイン
Developerサイトにアクセスします。残念ながら英語を読み解く必要があります。
右上の「Sign in」ボタンをクリックし、TwitterアカウントのID, PWでログインします。裏アカウントを持っている人は間違えないように注意しましょう 笑
もちろん、裏アカで情報収集したい方は裏アカウントで申請を続けましょう。そこが申請に関わるかは不明です。
Apply
ログイン後、右上に表示される「Apply」ボタンをクリックすると応募フォームに進みます。
後は手順に沿うことで申請は完了しますが、どのような項目があるのかざっくり解説します。
What is your primary reason for using Twitter developer tools?
APIの利用用途について答えます。趣味のプログラミング活動で使う場合、「Hobbyist」の「Exploring the API」を選択します。
This is you, right?
認証の手続きに進みます。Twitterアカウントにて電話番号の登録が必要です。
Tell us about your organization
チーム名、組織名などを入力します。個人名で大丈夫でした。URLも入力しなくてOKです。
How will you use the Twitter API or Twitter data?
APIの利用用途や分析方法について聞かれます。
英語で200文字以上、100文字以上など大変ですが、日本語で書いたものをGoogle翻訳するのが良いと思います。
オプションとなっているものは、該当するものがもしあれば追記しましょう。
Is everything correct?
確認画面です。問題なければ「Looks Good!」をクリックします。
Please review and accept
最後に、契約に同意すれば申請されます。
メールの確認
申請して数時間後、Twitter社さんからメールでメールが届きます。
わたしの場合は申請理由の欄に「将来はこんなビジネスをしたい!」みたいな野望をつらつらと書いた結果、追加質問されました。
ちゃんと日本語で来るあたり、優しいですね。
日本語で返信すれば大丈夫です。
概ね以下のような内容で返信しました。
- APIは趣味で利用する。自動的に重要な情報のみを収集できるようにしたい
- ツイート、いいね数などを利用して重要度を分析したい
- コンテンツはFlaskなどを利用して、ローカル上で処理する
受理
メールに返信して数時間後、今度は「受理されたよ」というメールが英語で届きました。
これで、Developer Poralが使えるようになりました。
アクセスキーの取得
(プロジェクト)→アプリ→APIキーの順番で作成していきます。
ポータルの「Dashboard」にアクセスすると、アプリの一覧が表示されるようになっています。
左カラムから「Projects & Apps」の「Overview」を選択すると、プロジェクトの一覧が表示されます。
下の方にある「+Create App」ボタンをクリックすると以下の画面になります。
「Complete」ボタンを押すとアプリが作成され、API Key、Access Tokenが表示されるので大切に保管しましょう。
Pythonでツイートの取得
API Key, Access Tokenが取得できれば、準備完了です。
Pythonでツイートが取得できます。
以下ではtweepyというモジュールを使用し、私がフォローしているユーザさんの直近10個のツイートの中から、最もいいね数の多かったツイートをリストアップし、csvファイルとして出力しています。
import tweepy
import csv
Consumer_key = 'YOUR_API_KEY'
Consumer_secret = 'YOUR_API_SECRET'
Access_token = 'YOUR_ACCESS_TOKEN'
Access_secret = 'YOUR_ACCESS_SECRET'
auth = tweepy.OAuthHandler(Consumer_key, Consumer_secret)
auth.set_access_token(Access_token, Access_secret)
api = tweepy.API(auth)
# フォロー数を取得
num_friends = api.me().friends_count - 1
# API制限に引っかからないよう200人以下に抑える。そのうちsleepなどを入れて全部取れるようにしたい
if num_friends > 200:
num_friends = 200
screen_names = []
user_names = []
max_fav_tweets = []
max_fav_favs = []
# api.friendsでフォロワーの情報が取れる!
for user in api.friends(count=num_friends):
screen_names.append(user.screen_name)
user_names.append(user.name)
for screen_name in screen_names:
tweets_data = api.user_timeline(screen_name=screen_name, count=10)
favs = [td.favorite_count for td in tweets_data]
max_fav_data = tweets_data[favs.index(max(favs))]
max_fav_tweet = max_fav_data.text
max_fav_tweets.append(max_fav_tweet)
max_fav_favs.append(max_fav_data.favorite_count)
# 以降はcsv整形の処理
output_list = [["no.", "名前", "id", "いいね!数", "メッセージ"]]
numbering_list = list(range(1, len(max_fav_tweets) + 1))
for num, name, id, n_fav, fav in zip(numbering_list, user_names, screen_names, max_fav_favs, max_fav_tweets):
output_list.append([num, name, id, n_fav, fav])
with open("tweets.csv", "w", encoding="utf-8") as f:
writer = csv.writer(f, lineterminator="\n")
writer.writerows(output_list)
さいごに
Twitterは身近なサービスなので、API学習の入口としてとても良いです。
ぜひチャレンジしてみてください!