PythonでGoogle Readerのフィードデータをダウンロードする

Google Readerはフォルダ単位でフィードを公開することができるのですが、Atomのフィード出力もあります。


そこ経由で各種RSSのデータを落としてバックアップしてみると便利だなと。
Pythonでやってみた。

feed_backup.py

#!/usr/bin/env python
# coding: utf-8
import sys
import feedparser

def main(url):
    print '<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>'
    print '<title>%s</title></head><body>' % url

    next_url = url
    while next_url:
        feed = feedparser.parse(next_url)

        for entry in feed.entries:
            print '<h3>%s</h3>' % entry.title.encode('utf-8')
            print entry.summary_detail.value.encode('utf-8')
            print '<hr class="separartor" />'

        continuation = feed.feed.get('gr_continuation')
        if continuation:
            # 次のページのURL
            next_url = '%s?c=%s' % (url, continuation)
        else:
            next_url = False

    print '</body></html>'

if __name__ == '__main__':
    from optparse import OptionParser
    parser = OptionParser()
    options, args = parser.parse_args()
    if len(args) == 0:
        print 'Require one argument.'
        sys.exit()
    main(args[0])

feedparserを使ってます。
feed/gr:continuationに次のページ用のパラメータがあるので、これをGETパラメータに指定してデータが存在する最後までダウンロードします。
ついでにHTML出力してます。データベースに格納するとかもいいかもしれない。

実行してみる

こんな感じで実行します。

$ python feed_backup.py http://www.google.com/reader/public/atom/user%2F05081301049486409709%2Flabel%2Fbackup > out.html

出力したHTMLは次のような感じ。

はてなダイアリーはエクスポートできるからこれを使う必要はないと思うけど、twitterなんかのフィードをGoogleReaderにとりあえず登録しておいて、後で取り出したりしてもいいんじゃないかな。