pythonのrequestsライブラリの更新に追従
http://d.hatena.ne.jp/yatt/20121017/1350480131
requestsについて書いた記事ですが、既にAPIが変わってしまっていたので、
同じ動作をするコードを書きました。
対象はrequests 2.6.0です。
はてなダイアリーにログイン
変わりません。
#! /usr/bin/python2.7 import requests s = requests.session() params = { 'name': 'your account name', 'password': 'your password', } r = s.post('https://www.hatena.ne.jp/login', params=params) print r.text
OAuth認証
OAuthの処理が、requests_oauthlibという別ライブラリに切り出されました。
requestsとは別途、インストールしておきましょう。
$ pip install requests_oauthlib
また、レスポンス文字列をjsonにデシリアライズする処理が
プロパティ.jsonからメソッド.json()に変わりました。
http://docs.python-requests.org/en/latest/api/?highlight=response#requests.Response.json
#! /usr/bin/python2.7 import requests from requests_oauthlib import OAuth1 auth = OAuth1( 'consumer key', 'consumer secret', 'access token', 'access secret', ) url = 'https://api.twitter.com/1.1/statuses/home_timeline.json' r = requests.get(url, auth=auth) print r.json()
OAuth認証してストリーム処理
UserStreamなどのストリームを扱う場合の引数の渡し方が変わりました。prefech=Falseからstream=Trueになっています。
http://docs.python-requests.org/en/latest/user/advanced/?highlight=stream#body-content-workflow
#! /usr/bin/python2.7 import requests from requests_oauthlib import OAuth1 auth = OAuth1( 'consumer key', 'consumer secret', 'access token', 'access secret', ) import json url = 'https://userstream.twitter.com/2/user.json' r = requests.get(url, auth=auth, stream=True) for line in r.iter_lines(): if line == '': continue print json.loads(line)
grequestsも変わらず使えるようです。なんかちょっと遅い気はしますけど。