2008年5月25日

itertoolsでフィードを処理する


今更だけど、Yahoo Pipesってすばらしい。
フィードって結局エントリのリストだから、関数フィルタの連続で処理できるんだね。
GoogleはこのあたりをMapReduceで大規模に処理するフレームワークがあるらしいけど、どんな規模でもリスト処理ってのは、基本なんだろうと思う。



ってあたりで、Pythonでやったらどうなんだろうと思い、少し書いてみた。



このブログのフィードから、タグにwsgiって入ってるエントリを年月ごとにグルーピングする処理。
あんまり考えずに書いたので、lambdaとか入ってるので見づらいな。
部分適用を使えば、フィルタ関数を簡易に書けそう。



import feedparser
import itertools
d = feedparser.parse('http://feeds.feedburner.jp/AodagBlog')
print d['feed']['title']

for g, entries in itertools.groupby(itertools.ifilter(lambda e: 'wsgi'
in [tag.term
for tag in e.get('tags', [])],
d['entries']),
lambda e: (e.updated_parsed[0],
e.updated_parsed[1])):
print g
for e in entries:
print ' ', e.title

Blogged with the Flock Browser