Twitter APIを使ってみる

Twitterのつぶやきをゲーム作りに活かせないかと思い、Twitter APIを使ってツイート情報を取得する方法を調べてみました。
以下の手順でデータを取得します。

Twitter APIを利用の流れ

API利用申請

Twitterにログイン

以下のURLへアクセス
Login on Twitter

app作成

[Create an app]ボタンをクリックしてappを作成します。
f:id:a1026302:20201104234400j:plain

Twitterデベロッパーツールの利用目的選択

ツイート情報が取得したいので[Exploring the API]にチェックを入れます。
f:id:a1026302:20201104232641j:plain

国とかニックネーム入力

「住んでいる国」と「ニックネーム」を記入します。
f:id:a1026302:20201104232646j:plain

利用目的

質問内容は以下のようなものです。

  • Twitter APIまたはTwitterデータの利用方法を教えてください。
  • ツイッターのデータを利用しますか?
  • アプリはツイート、リツイート、お気に入り、フォロー、ダイレクトメッセージを利用しますか?
  • Twitter以外のTwitterコンテンツに関するツイートを表示したり集計データを表示しますか?
  • あなたの製品・サービス,または分析によって,Twitterコンテンツまたは派生情報が政府機関が利用可能になりますか?

f:id:a1026302:20201104232649j:plain
f:id:a1026302:20201104232655j:plain

確認

設定が完了すると確認画面に進みます。
f:id:a1026302:20201105004238j:plain

利用規約

利用規約に同意して申請します。
f:id:a1026302:20201104232701j:plain
申請が行なわれると以下の画面になります。
f:id:a1026302:20201104232704j:plain

APIキー/トークン取得

Twitterからメール

ちょっとまっていると[Verify your Twitter Developer Account]という件名のメールが送られてきます。
メール文にある「Confirm your email」をクリックします。
f:id:a1026302:20201104232708j:plain

登録完了

f:id:a1026302:20201105010105j:plain

Developer Portalから設定追加

Project名入力

プロジェクト名を入力します。
f:id:a1026302:20201104232712j:plain

説明入力

説明を入力します。
f:id:a1026302:20201104232715j:plain
f:id:a1026302:20201104232718j:plain

キーとトークン確認

[Developer Portal]の[Keys and tokens]というタブからキーとトークン情報を確認します。
f:id:a1026302:20201105011450j:plain
[API Key]/[API Key secret]を確認控えます。
f:id:a1026302:20201104232721j:plain

ツイート収集スクリプト作成

TwitterAPIをPython3から実行

twitterモジュールインストール
pip3 install twitter
簡易的にスクリプト作成

以下サンプルプログラム(タイムライン取得)
ユーザ名とツイート本文を十文字目まで表示

CONSUMER_KEY  = 'API key'
CONSUMER_SECRET_KEY = 'API key secret'
ACCESS_TOKEN = 'Access token'
ACCESS_TOKEN_SECRET = 'Access token secret'

from twitter import *

t = Twitter(
    auth=OAuth(
        ACCESS_TOKEN, 
        ACCESS_TOKEN_SECRET, 
        CONSUMER_KEY, 
        CONSUMER_SECRET_KEY
    )
)

timelines = t.statuses.home_timeline()


for timeline in timelines:
    tl = '({id}) [{username}]:{text}'.format(
        id=timeline['id'], 
        username=timeline['user']['name'][1:10], 
        text=timeline['text'][1:10]
    )
    print (tl)
実行イメージ

jupyterから実行してみました。
f:id:a1026302:20201105015022p:plain

おまけ

ツイートの検索

searchs = t.search.tweets(
    q='youtube', 
    locale='ja', 
    count=100, 
    include_entities=False
)

for search in searchs[ 'statuses']:
    s = '{date_time} {username}:{text}'.format(
        date_time = search['created_at'],
        username = search['user']['screen_name'][1:10],
        text=search['text'][1:10]
    )
    print (s)