Twitter OFF
先日 twitter つながりで開催された、開発オフに参加してきた。twitter API による bot の開発がテーマ。某社のオフィスで早朝から開催されたのだが、早朝過ぎて起きるのが大変だった。参加者には perl や PHP の使い手が多かったが Python はまだマイナーな模様。
Twitter API の仕様書によると API とは規定の URL に対して HTTP リクエストを送信すると応答が返ってくるという一連のしくみの事を指しているようだ。とりあえず認証が不要な public_timeline を取得することにする。
サーバからの応答には xml,json, rss, atom を選択できるので馴染み深い RSS を選択してパーサには Universal Feed Parser を使用した。このパーサでは RSS とATOM がパースできる。Debian のパッケージ python-feedparser を利用した。
http://www.feedparser.org/
実際に試してみると思ったよりも簡単に RSS が取得できた。次に friend_timeline を取得することにする。public_timeline 以外はBASIC 認証が必要のようだ。ヘッダに BASE64 エンコードした認証情報を付加するらしいが、手元の資料ではよくわからないので次回の課題にすることにした。結局 bot はおろか単なる python の練習で終わってしまったが、他の参加者からいろいろな話を聞くことができて有意義な一日であった。他の参加者はマルコフ連鎖や正規表現を駆使して各々面白いものを開発していた。
今回空いた時間にデモをしようと思って WII リモコンでファミコンエミュレータ InfoNES を操作するデモを作っていこうと思ったのだが、InfoNES とのリンク時になぜかシンボル解決できなくてライブラリサンプルのみのデモとなってしまった。次回はもう少しマシなものを持っていきたいところだ。
#!/usr/bin/env python # coding: utf-8 import urllib import feedparser import sys try: url = urllib.urlopen('http://twitter.com/statuses/public_timeline.rss') print url.geturl() except IOError: print u'URL がおかしいよ' #print url.read() #sys.exit(1) d=feedparser.parse(url) len = len(d['entries']) print d.feed.title print d.feed.description for i in range(len): print d.entries[i].date print d.entries[i].description