Twitter APIの使い方【Python】

こんにちは、しーたです。
最近Twitter APIの使い方が分かってきたのでメモを残します。

OAuth認証、という方法を使っていきます。
今回は例としてタイムラインを取得します。

↓ドキュメントhttp://westplain.sakuraweb.com/translate/twitter/Documentation/REST-APIs/Public-API/GET-statuses-user_timeline.cgi

ソースコード

# -*- coding: utf-8 -*-

import json, config
from requests_oauthlib import OAuth1Session

#認証処理
CK = config.CONSUMER_KEY
CS = config.CONSUMER_SECRET_KEY
AT = config.ACCESS_TOKEN
ATS = config.ACCESS_TOKEN_SECRET
twitter = OAuth1Session(CK, CS, AT, ATS)

url = "https://api.twitter.com/1.1/statuses/user_timeline.json" #タイムライン取得エンドポイント

params ={'count' : 5} #取得数
res = twitter.get(url, params = params)

if res.status_code == 200: #正常通信出来た場合
   timelines = json.loads(res.text) #レスポンスからタイムラインリストを取得
   for line in timelines: #タイムラインリストをループ処理
       print(line['user']['name']+'::'+line['text'])
       print(line['created_at'])
       print('*******************************************')
else: #正常通信出来なかった場合
   print("Failed: %d" % res.status_code)

config.pyを作る

CONSUMER_KEY        = '#your key'
CONSUMER_SECRET_KEY = '#your key'
ACCESS_TOKEN        = '#your token'
ACCESS_TOKEN_SECRET = '#your token'

取得したAPIキー, トークンを入れておくファイルです。

main.pyで認証処理を書く


import json, config
from requests_oauthlib import OAuth1Session

#認証処理
CK = config.CONSUMER_KEY
CS = config.CONSUMER_SECRET_KEY
AT = config.ACCESS_TOKEN
ATS = config.ACCESS_TOKEN_SECRET
twitter = OAuth1Session(CK, CS, AT, ATS)

エンドポイントを指定する

url = "https://api.twitter.com/1.1/statuses/user_timeline.json" #タイムライン取得エンドポイント

使う機能のエンドポイントを指定します。エンドポイントは下記URLの「リソースURL」です。

画像1

パラメータを指定する

params ={'count' : 5} #取得数

パラメータを指定します。
今回は全て「任意」となっているので、"parames = {}"でも良かったのですが、count(ツイートの取得件数)を指定してみました。

画像2

リクエストを送信する

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

GETリクエストを送信します。リクエストには主にGETとPOSTがありますが、今回はドキュメントにGETと書いてあるので"twitter.get()"となっています。resにはAPIから帰ってきたレスポンスが代入されます。

画像3

レスポンスを表示する

f res.status_code == 200: #正常通信出来た場合
   timelines = json.loads(res.text) #レスポンスからタイムラインリストを取得
   for line in timelines: #タイムラインリストをループ処理
       print(line['user']['name']+'::'+line['text'])
       print(line['created_at'])
       print('*******************************************')
else: #正常通信出来なかった場合
   print("Failed: %d" % res.status_code)

resに格納されたレスポンスを表示します。
if文を使って、帰ってきたステータスコードが200(成功)以外の場合、エラー内容を表示できるようにしています。

レスポンスの内容はドキュメントにある例のようなjson形式になっています。これを見ながら、タイムラインをターミナルに表示するプログラムを書きました。

画像4


以上でした!これを応用すればTwitter APIの全機能使えそうです。

いいなと思ったら応援しよう!