スキップしてメイン コンテンツに移動

Python: はてなブックマークのAPIを使ってみた

最近、はてなブックマークを使い始めたこともあり、はてなブックマークのAPIについて調べてみた。ざっと確認をした後、Pythonではてなブックマーク件数取得APIはてなブックマークエントリー情報取得APIを使ってみた。

はてなブックマーク件数取得APIはブックマークされた件数とAmazonの商品がコレクションされた件数をXML-RPCで取得することができる。一方、ブックマークエントリー情報取得APIでは、はてなブックマークのエントリーの情報をJSON形式で取得することができる。サンプルコードを以下に示す。

#!/usr/bin/env python # -*- coding: utf-8 -*- import urllib2 import xmlrpclib import simplejson url = "http://www.hatena.ne.jp/" asin = "4774124966" # はてなブックマークエントリー情報取得API. data = urllib2.urlopen("http://b.hatena.ne.jp/entry/json/%s" % url).read() info = simplejson.loads(data.strip("(").rstrip(")")) if info: title = info["title"] cnt = int(info["count"]) bookmarks = info["bookmarks"] cnt_user = len(bookmarks) cnt_comment = 0 for b in bookmarks: if b["comment"]: cnt_comment += 1 print b["comment"].strip() if cnt_comment > 0: print print u"タイトル: %s" % title print u"URL: %s" % url print u"ブックマークしているユーザ数: %d +%d" % (cnt_user, cnt - cnt_user) print u"コメント数: %d" % cnt_comment rate_comment = float(cnt_comment) / cnt_user * 100 if cnt_user > 0 else 0.0 print u"コメント率: %.2f%%" % rate_comment print # はてなブックマーク件数取得API. s = xmlrpclib.ServerProxy("http://b.hatena.ne.jp/xmlrpc") print u"%sの被ブックマーク数: %d" % (url, s.bookmark.getCount(url)[url]) print u"サイトの被ブックマーク数: %d" % s.bookmark.getTotalCount(url) print u"Amazon商品(%s)の被コレクション数: %d" % (asin, s.bookmark.getAsinCount(asin)[asin])

因みに、JSONを利用するにあたってはsimplejsonモジュールを用いた。

プログラムを実行すると以下のような出力を得る。

お世話になっております。 ぶくま 初ブクマ はてなTOP hoge *default hatena はてなトップ (中略) タイトル: はてな URL: http://www.hatena.ne.jp/ ブックマークしているユーザ数: 1187 +547 コメント数: 218 コメント率: 18.37% http://www.hatena.ne.jp/の被ブックマーク数: 1734 サイトの被ブックマーク数: 54550 Amazon商品(4774124966)の被コレクション数: 127

まず、はてなブックマークエントリー情報取得APIによりすべてのコメントを表示させ、続けて、タイトル、URL、ユーザ数、コメント数、そして、ユーザ数に対するコメント数の割合を示すコメント率を出力。次いで、はてなブックマーク件数取得APIを用いて、指定URLのブックマーク数、サイト全体のブックマーク数、コレクション数の表示を行っている。

コメント