2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Twitter APIを触ってみたくなったら最初に見る記事

Posted at

はじめに

この記事ではプログラミングの初心者が、Twitter APIの申請を行いPythonでツイートを取得するまでを記録します。
Twitter APIは申請が必要なため、2020年7月時点の申請にかかる時間の参考としてもお使いください。

結論、私の場合は24時間以内に受理されました。

金曜の夜に申請して、土曜の午後には使うことができました。
途中、メールでTwitter社とのやりとりが発生してしまったため、レアケースかもしれません。

Twitter APIの申請方法

他の記事でも詳しく紹介されているので、こちらでは簡潔に2020年7月時点の情報をまとめます。

Developerサイトでログイン

Developerサイトにアクセスします。残念ながら英語を読み解く必要があります。

スクリーンショット 2020-07-22 0.45.38.png

右上の「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社さんからメールでメールが届きます。

わたしの場合は申請理由の欄に「将来はこんなビジネスをしたい!」みたいな野望をつらつらと書いた結果、追加質問されました。

スクリーンショット 2020-07-23 23.01.23.png

ちゃんと日本語で来るあたり、優しいですね。
日本語で返信すれば大丈夫です。

概ね以下のような内容で返信しました。

  • APIは趣味で利用する。自動的に重要な情報のみを収集できるようにしたい
  • ツイート、いいね数などを利用して重要度を分析したい
  • コンテンツはFlaskなどを利用して、ローカル上で処理する

受理

メールに返信して数時間後、今度は「受理されたよ」というメールが英語で届きました。
スクリーンショット 2020-07-23 23.12.02.png

これで、Developer Poralが使えるようになりました。

アクセスキーの取得

(プロジェクト)→アプリ→APIキーの順番で作成していきます。

ポータルの「Dashboard」にアクセスすると、アプリの一覧が表示されるようになっています。
左カラムから「Projects & Apps」の「Overview」を選択すると、プロジェクトの一覧が表示されます。
下の方にある「+Create App」ボタンをクリックすると以下の画面になります。

スクリーンショット 2020-07-23 23.24.56.png
名前は既存のアプリとかぶらないようにしなければなりません。

「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学習の入口としてとても良いです。
ぜひチャレンジしてみてください!

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?