ものづくりのブログ

うちのネコを題材にしたものづくりができたらいいなと思っていろいろ奮闘してます。

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)