id:CortYumingさんと話してて、あったら便利かなぁ、と思って書いてみた。
はてなのAPIでとれるものを調べてみたカンジでは
- 自分のダイアリーについた総ブックマーク数
- 自分のダイアリーについた新着ブックマーク
- はてなブックマーク - 新着ブックマークでURLを指定することで取得可能らしい。*2
- ついたタグやブックマークコメントなども取得可能
前者はXML-RPCで取得する。これはPythonの標準モジュールxmlrpclibで簡単に取れるらしい。
http://www.python.jp/doc/release/lib/module-xmlrpclib.html
後者は多分RSSでしか取れない。標準モジュールではRSSのフィードを解析することができないらしいので、feedparserというライブラリを使ってみた。easy_installでサクッと入った。
http://www.feedparser.org/
#!/usr/bin/env python # -*- coding:utf-8 -*- import codecs import feedparser import sys from xmlrpclib import ServerProxy sys.stdout = codecs.getwriter('utf_8')(sys.stdout) try: # アカウント名取得 user = sys.argv[1] # 新着ブックマーク rss = 'http://b.hatena.ne.jp/bookmarklist.rss?url=http%3A%2F%2Fd.hatena.ne.jp%2F' + user feed = feedparser.parse(rss) for entry in reversed(feed['entries']): # 記事のタイトルは entry['title'] で取得 date = "%4d/%02d/%02d" % entry['updated_parsed'][:3] print '%s %s: %s' % (date, entry['author'], entry['summary']) # 被ブックマーク総数 server = ServerProxy('http://b.hatena.ne.jp/xmlrpc') total = server.bookmark.getTotalCount('http://d.hatena.ne.jp/' + user) print 'total: %d' % (total) except IndexError: print 'usage: ./hatebu.py <your_hatena_id>'
実行例:
$ ./hatebu.py usage: ./hatebu.py <your_hatena_id> $ ./hatebu.py sugyan 2009/04/23 yokochie: 2009/04/23 hide-K: 2009/04/23 ikasam_a: 2009/04/23 jazzanova: 2009/04/23 mopemope: 2009/04/23 kamipo: 2009/04/23 denken: 2009/04/23 download_takeshi: shibuya.pm 2009/04/24 inc_aka: 16進数 2009/04/24 inc_aka: 2009/04/24 dealforest: 2009/04/25 taigou: 2009/04/25 Kwappa: 「あ、『伝説の焼き肉』の人ですね!」とかなったらいいなぁ。というのが、本当に実現 したことに感激!! 2009/04/26 at_yasu: 2009/04/26 myfinder: 2009/04/29 minesouta: 2009/04/29 pmakino: 2009/05/01 hyoshiok: 1 2009/05/04 myfinder: 2009/05/06 rabbit2go: 2009/05/06 aki77: 『% wget -w5 --random-wait http://どこかのURL/{00..23}{00..59}.jpg』 2009/05/07 amachang: XPath を使わず更に短く! total: 249
こんな感じでいいのかな…
xml.saxでRSS解析してみようと試みて失敗したり文字コードがうまくいかなかったり、たくさんつまづいた。
まだまだPythonうまく書けないわ…orz