Twitter OFF

Twitter OFF

先日 twitter つながりで開催された、開発オフに参加してきた。twitter API による bot の開発がテーマ。某社のオフィスで早朝から開催されたのだが、早朝過ぎて起きるのが大変だった。参加者には perlPHP の使い手が多かったが Python はまだマイナーな模様。

Twitter API の仕様書によると API とは規定の URL に対して HTTP リクエストを送信すると応答が返ってくるという一連のしくみの事を指しているようだ。とりあえず認証が不要な public_timeline を取得することにする。

サーバからの応答には xml,json, rss, atom を選択できるので馴染み深い RSS を選択してパーサには Universal Feed Parser を使用した。このパーサでは RSSATOM がパースできる。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