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も変わらず使えるようです。なんかちょっと遅い気はしますけど。