今回は
twitterbotを作るための基礎
タイムラインを見る
タイムラインの中から目的の要素を抜き出す
をやってみます
参考にしているのは前回とおなじく
キカガクの今西さんの動画です
タイムラインを読み取る準備
APIキーやアクセスキー、各シークレットを入手していること
どういうこと?という方は
「TwitterAPIのキーを取得する」
をご参照ください
関連ドキュメントのリンク先
タイムラインを読むためのコード
一旦取得までしてみましょう
これは特定ユーザーのタイムラインを読んでいます。
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が終わったので
何を見ていくか
どうやって繰り返すか
といった組み立ての部分になりますね
がんばっていきましょう!