Python から Twitter API を扱うライブラリに「tweepy」があるが、これは API 1.1 に対応していない。
そこで、API 1.1 の調査を兼ねていろいろ変更してみている「sakito / tweepy — Bitbucket」。
単純に endpoint を 1.1 にするだけでも大丈夫そうな感じがするが、細かい所まで対応しようとするとかなり大変。
使う機能以外を気にすると時間がかかりすぎる気がするので主要な機能だけ、徐々に対応してみようと思う。
Python から Twitter API を扱うライブラリに「tweepy」があるが、これは API 1.1 に対応していない。
そこで、API 1.1 の調査を兼ねていろいろ変更してみている「sakito / tweepy — Bitbucket」。
単純に endpoint を 1.1 にするだけでも大丈夫そうな感じがするが、細かい所まで対応しようとするとかなり大変。
使う機能以外を気にすると時間がかかりすぎる気がするので主要な機能だけ、徐々に対応してみようと思う。
Twitter API v1.1 が公開されました。 全ての endpoint で OAuth 1.0a での認証が必須になっています。
Python のライブラリで OAuth 1.0aの認証が簡単にコーディングできる「rauth」から、Twitter API v1.1 を利用してみます。
「rauth」は OAuth 1.0/a, 2.0、Oflyの認証に対応した Python のライブラリです。
Python の HTTPライブラリである「requests」に依存しています。
「requests」が非常にすぐれたライブラリで、その機能を有効に利用しているため、「rauth」はかなり簡単に OAuth 認証のコーディングが可能です。
ライセンスは MIT ライセンスです。残念ながら Python 3 には現在対応していない模様です。
pip でインストールします。
pip install rauth
rauth は「requests」に依存していますが、pip なら依存関係を解決してインストールされます。
「access_token」、「access_token_secret」は取得済みの状態とします。
以下は、「search/tweets」の「application/rate_limit_status」を取得するサンプルです。unittest として記述しています。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import unittest
from rauth.service import OAuth1Service
class TestApi(unittest.TestCase):
"""Twitter API test"""
def test_oauth(self):
auth = OAuth1Service(
name='twitter',
consumer_key='consumer_key',
consumer_secret='consumer_secret',
request_token_url='https://api.twitter.com/oauth/request_token',
access_token_url='https://api.twitter.com/oauth/access_token',
authorize_url='https://api.twitter.com/oauth/authorize')
self.assertIsNotNone(auth)
response = auth.get(
'https://api.twitter.com/1.1/application/rate_limit_status.json',
access_token='access_token',
access_token_secret='access_token_secret')
content = response.content
limit = content['resources']['search']['/search/tweets']['limit']
self.assertEqual(180, limit)
if __name__ == '__main__':
unittest.main()
つぶやきを投稿するサンプルは以下になります。「application/rate_limit_status」の例を含めて多少汎用化してあります。Python 2.6、Python 2.7 で動作します。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import unittest
import datetime
from rauth.service import OAuth1Service
class TestApi(unittest.TestCase):
"""Twitter API test"""
def setUp(self):
self.auth = OAuth1Service(
name='twitter',
consumer_key='consumer_key',
consumer_secret='consumer_secret',
request_token_url='https://api.twitter.com/oauth/request_token',
access_token_url='https://api.twitter.com/oauth/access_token',
authorize_url='https://api.twitter.com/oauth/authorize',
header_auth=True)
self.access_token = {
'access_token': 'access_token',
'access_token_secret': 'access_token_secret'}
self.endpoint = 'https://api.twitter.com/1.1/{path}.json'
def test_get_rate_limit_status(self):
"""application/rate_limit_status test"""
response = self.auth.get(
self.endpoint.format(path='application/rate_limit_status'),
**self.access_token)
content = response.content
limit = content['resources']['search']['/search/tweets']['limit']
self.assertEqual(180, limit)
def test_post_statuses_update(self):
"""statuses/update test"""
text = 'つぶやきテストです。{now}'.format(now=datetime.datetime.now())
params = {'status': text}
response = self.auth.post(
self.endpoint.format(path='statuses/update'),
params=params,
**self.access_token)
content = response.content
self.assertEqual(text.decode('utf-8'), content['text'])
if __name__ == '__main__':
unittest.main()
「rauth」で Twitter API v1.1 を利用して、情報の取得と投稿ができました。Twitter API v1.1 がかなり整理されたことで、簡単な処理なら Twitter に特化したライブラリを利用する必要はほとんどないかもしれません。
「rauth」は Twitter だけでなく OAuth 認証全般で利用できますので、試してみると良いでしょう。
2012年9月5日にTwitter社が API v1.1 の詳細を公開したので、確認してみます。
関連する文書は以下となります。
「Overview: Version 1.1 of the Twitter API | Twitter Developers」に概要が記述されています。
まだ、十分さわれていないが、概要に書いていない部分で変更点がある模様。
個人的な意見を書いておく。Twitter社には比較的同情的な立場。Twitter も比較的普通の使い方しかしてないと思われる。
変な所には意見を言うべきかと思う。
ただ、全体的に良くできているため、最終的には、ヘビーユーザの一部が離れ、クライアントが整理され、botが多少減り、一般ユーザはあまり困らない、という結果になるのでやないか、と今の所は楽観視している。
crochetとは@showyouが作成している、Twitter用クライアント。
Pythonで作成されている。
以前も動作させたことがあるのだけどメモってなかったので今回は動かすまでをメモしておく。
参考にするサイト
crochet紹介 - Showyou@hatena
Mac で crochet というか wxPython で作られたアプリを動かすお話 - yano3の日記
wxPythonのインストール
http://sourceforge.net/projects/wxpython/
http://downloads.sourceforge.net/wxpython/wxPython2.8-osx-unicode-2.8.9.1-universal-py2.5.dmg
バイナリなのでダブルクリックすれば良い。
simplejsonのインストール
http://code.google.com/p/simplejson/
http://pypi.python.org/pypi/simplejson
tar xvfz simplejson-2.0.1.tar.gz
cd simplejson-2.0.1
sudo python setup.py install
PILのインストール
tar xvfz Imaging-1.1.6.tar.gz
cd Imaging-1.1.6
sudo python setup.py install
crochet
svn export -r HEAD http://svn.coderepos.org/share/lang/python/crochet
cd crochet
.chat/twdata の中にユーザ名とパスワードを設定して起動する。./chat_all.py起動して、投稿まではできた。
permalink
投稿者
sakito
ラベル:
Firefox,
Greasemonkey,
JavaScript,
Twitter
openssl base64 -e -in loader.gif | tr -d '\n'あと、入力欄に今見てるサイトのURLが出るのはあまり利用しないので、空白にしました。 とりあえずこの変更だけした物をtiwtx.user.jsに公開しておきます。自動インストールはできないのでダウンロード後Firefoxにドラッグドラップして自分でインストールしてください。 追記:このエントリーには追記があります。tiwtx.user.js 追記 追記(2008/05/26):この版はFirefox2でしか動作しません。
permalink
投稿者
sakito
ラベル:
Firefox,
Greasemonkey,
JavaScript,
Twitter
Powered by Blogger. DownRight Blogger Theme v3.0 created by (© 2007) Thur Broeders