Twitterのタイムラインを取得しつつ構成を把握する

Twitter botのつくり方

今回は

twitterbotを作るための基礎

タイムラインを見る
タイムラインの中から目的の要素を抜き出す

をやってみます

参考にしているのは前回とおなじく
キカガクの今西さんの動画です

タイムラインを読み取る準備

APIキーやアクセスキー、各シークレットを入手していること

どういうこと?という方は
TwitterAPIのキーを取得する
をご参照ください

関連ドキュメントのリンク先

タイムライン取得のAPIリファレンス

タイムラインを読むためのコード

一旦取得までしてみましょう

これは特定ユーザーのタイムラインを読んでいます。

import json
from requests_oauthlib import OAuth1Session

CONSUMER_KEY="XXX"
CONSUMER_SECRET="XXX"
ACCESS_TOKEN_KEY="XXX"
ACCESS_TOKEN_SECRET="XXX"
twitter = OAuth1Session(CONSUMER_KEY,CONSUMER_SECRET,ACCESS_TOKEN_KEY,ACCESS_TOKEN_SECRET)

url = "https://api.twitter.com/1.1/statuses/user_timeline.json" 

params = {'user_id':'XXX'}

res = twitter.get(url,params=params)
timelines = json.loads(res.text)

user_idのXXXには自分のIDを入れてみましょう

自分のTwitterIDの確認方法

コードの説明

インポートは

認証用のoauthlib
res.textを見やすくするためのjson

import json
from requests_oauthlib import OAuth1Session

認証用のコードをまとめます。
これで「twitter」でアクセスできます。

CONSUMER_KEY="XXX"
CONSUMER_SECRET="XXX"
ACCESS_TOKEN_KEY="XXX"
ACCESS_TOKEN_SECRET="XXX"
twitter = OAuth1Session(CONSUMER_KEY,CONSUMER_SECRET,ACCESS_TOKEN_KEY,ACCESS_TOKEN_SECRET)

エンドポイントの設定。
こちらがタイムラインを読むためのURLです。

url = "https://api.twitter.com/1.1/statuses/user_timeline.json"

どんなタイムラインを引っ張ってくるかの設定
APIリファレンスに色々と載っています
今回はユーザーIDで引っ張ります。

params = {‘user_id’:’XXX’}

上記で設定したtwitterからgetです
タイムラインをresに放り込みます

res = twitter.get(url,params=params)

タイムラインをjsonで整理しつつ、でtimelinesに読みます。

timelines = json.loads(res.text)

中身を見てみましょう
全部見るなら

timelines

そのうちの1番目をみるなら

timeline = timelines[0]
timeline

JSONからデータを引っ張り出す

timeline = timelines[0]
timeline

これで見てみると

{'created_at': 'Sat Sep 19 10:38:54 +0000 2020',
 'id': XXXXXXXXXX,
 'id_str': 'XXXXXXXXXX',
 'text': '光に向かって一歩でも進もうとしている限り、人間の魂が真に敗北する事など断じて無い',
 'truncated': False,
 'entities': {'hashtags': [], 'symbols': [], 'user_mentions': [], 'urls': []},
 'source': '',
 'in_reply_to_status_id': None,
 'in_reply_to_status_id_str': None,
 'in_reply_to_user_id': None,
 'in_reply_to_user_id_str': None,
 'in_reply_to_screen_name': None,
 'user': {'id': XXXXXXXXXX,
  'id_str': 'XXXXXXXXXX',

#以下略

みたいな感じにずらずらーと並んでいます。
注意深く見ていくと色々発見があるかと思います。

辞書型ですので

{‘A’:’a1′,‘B’:’b1′,‘C’:{‘C1′:’c1′,’C2′,’c2′,’C3′,’c3’},

のように並んでいます

たとえばタイムライン1つ目の
‘user’の中の’id’
を抜き出したければ

上述のタイムラインを読むためのコード

import json
from requests_oauthlib import OAuth1Session

CONSUMER_KEY="XXX"
CONSUMER_SECRET="XXX"
ACCESS_TOKEN_KEY="XXX"
ACCESS_TOKEN_SECRET="XXX"
twitter = OAuth1Session(CONSUMER_KEY,CONSUMER_SECRET,ACCESS_TOKEN_KEY,ACCESS_TOKEN_SECRET)

url = "https://api.twitter.com/1.1/statuses/user_timeline.json" 

params = {'user_id':'XXX'}

res = twitter.get(url,params=params)
timelines = json.loads(res.text)

からの

timeline = timelines[0]
user_id = timeline['user']['id']
user_id

で引っ張れます。

上の例でいえば

timeline[‘C’][‘C1’]で、c1を拾ってくる

ということです。

Twitterのタイムラインを取得しつつ構成を把握するまとめ

というわけで今回はgetの第一歩でした。

これで初期設定、post、getが終わったので

何を見ていくか
どうやって繰り返すか

といった組み立ての部分になりますね

がんばっていきましょう!