PythonでREST API でTweetを取得する
スポンサーリンク
pythonのtwitterモジュールでTweetを取得していたんだけど、なんか制限が多くてREST APIで取ることにしたのでメモ。
ソースはこちらのページ(Using Twitter REST API v1.1 with Python)から頂きました。
#!/usr/bin/env python
# coding:utf-8
from __future__ import unicode_literals
import requests
from requests_oauthlib import OAuth1
from urlparse import parse_qs
import json
REQUEST_TOKEN_URL = "https://api.twitter.com/oauth/request_token"
AUTHORIZE_URL = "https://api.twitter.com/oauth/authorize?oauth_token="
ACCESS_TOKEN_URL = "https://api.twitter.com/oauth/access_token"
CONSUMER_KEY = "カスタマキー"
CONSUMER_SECRET = "カスタマシークレット"
OAUTH_TOKEN = "トークン"
OAUTH_TOKEN_SECRET = "トークンシークレット"
def setup_oauth():
"""Authorize your app via identifier."""
# Request token
oauth = OAuth1(CONSUMER_KEY, client_secret=CONSUMER_SECRET)
r = requests.post(url=REQUEST_TOKEN_URL, auth=oauth)
credentials = parse_qs(r.content)
resource_owner_key = credentials.get('oauth_token')[0]
resource_owner_secret = credentials.get('oauth_token_secret')[0]
# Authorize
authorize_url = AUTHORIZE_URL + resource_owner_key
print 'Please go here and authorize: ' + authorize_url
verifier = raw_input('Please input the verifier: ')
oauth = OAuth1(CONSUMER_KEY,
client_secret=CONSUMER_SECRET,
resource_owner_key=resource_owner_key,
resource_owner_secret=resource_owner_secret,
verifier=verifier)
# Finally, Obtain the Access Token
r = requests.post(url=ACCESS_TOKEN_URL, auth=oauth)
credentials = parse_qs(r.content)
token = credentials.get('oauth_token')[0]
secret = credentials.get('oauth_token_secret')[0]
return token, secret
def get_oauth():
oauth = OAuth1(CONSUMER_KEY,
client_secret=CONSUMER_SECRET,
resource_owner_key=OAUTH_TOKEN,
resource_owner_secret=OAUTH_TOKEN_SECRET)
return oauth
if __name__ == "__main__":
if not OAUTH_TOKEN:
token, secret = setup_oauth()
print "OAUTH_TOKEN: " + token
print "OAUTH_TOKEN_SECRET: " + secret
print
else:
oauth = get_oauth()
r = requests.get(url="https://api.twitter.com/1.1/search/tweets.json?q=%23OMG&src=typd&count=5", auth=oauth)
data = r.json()
#print(json.dumps(data, sort_keys=True, indent=4))
for value in data['statuses']:
print value['text']
windows環境でテストしてるんだけど、文字化けで日本語が上手く出ない。くそー。改善したらアップします。