Kawa.netxp [Perl] WebService::Hatena::BookmarkCount/はてなブックマーク件数取得APIへのインターフェース

WebService::Hatena::BookmarkCount モジュールは、 はてなブックマーク件数取得API にアクセスして、 指定したURLの被ブックマーク件数を取り出します。
カンタンなメソッド1つで呼び出せるため、XML-RPC に関して勉強する必要がありません。w
有用な情報を便利なインターフェースで提供してくれているはてなに感謝します!

本モジュールの使用には、 XML::TreePP モジュールと、 LWP::UserAgent または HTTP::Lite のいずれかのモジュールが必要です。
Perl 5.005/5.6.x/5.8.x で動きます。 Pure Perl実装のため、コンパイル不要で手軽に利用できます。

公開版アーカイブ: WebService-Hatena-BookmarkCount-0.07.tar.gz TARGZ CPAN  ←通常パッケージ
最新版ソースファイル: WebService/Hatena/BookmarkCount.pm PM
Subversion レポジトリ: http://kawanet.googlecode.com/svn/lang/perl/WebService-Hatena-BookmarkCount/trunk/ SVN

サンプルプログラム

getCount() メソッドに URL を渡すと、 {キー:URL、値:件数}のハッシュを返します。

use WebService::Hatena::BookmarkCount;
my @list = (
    'http://www.hatena.ne.jp/info/webservices',
    'http://www.kawa.net/xp/index-j.html',
);
my $hash = WebService::Hatena::BookmarkCount->getCount( @list );
foreach my $url ( @list ) {
    printf( "%5d   %s\n", $hash->{$url}, $url );
}

大事なのは getCount() の1行だけです。すこぶるカンタンですね。
結果は以下のように表示されます。

  200   http://www.hatena.ne.jp/info/webservices
  106   http://www.kawa.net/xp/index-j.html

このモジュールのソースは短いです。
内部処理については、 こちら の方が分かりやすいでしょう。

ちなみに、 はてなexist API用の WebService::Hatena::Exist モジュールでは、 はてなダイアリー・はてなアンテナ・はてなブックマークの3つの情報を得られますが、 取得対象 URL を都度指定する仕様の REST インターフェースのため、 1回の通信につき1URL ずつの処理に限られます。
WebService::Hatena::BookmarkCount では、 はてなブックマークに特化した XML-RPC API 経由を利用することで 複数の URL の情報を一括取得します。 このため、複数の件数を連続取得する場合もはてなサーバへの負荷が軽くなります。

ドメイン内の全ページのブックマーク件数合計値の取得

getTotalCount() メソッドに URL を渡すと、 前方一致?でマッチした全ページのブックマーク件数合計値を返します。 ドメイン単位での総ブックマーク件数を取得できます。

use WebService::Hatena::BookmarkCount;
my $url = 'http://www.kawa.net/';
my $count = WebService::Hatena::BookmarkCount->getTotalCount( $url );
printf( "%5d   %s\n", $count, $url );

以下のような結果が表示されます。(引数は1URLごと呼ぶ点に注意!)

 1919   http://www.kawa.net/

詳しくは、 こちら も参照してください。

更新履歴

2010/10/31 (0.07)
一部のテストが失敗 していたので、修正しました。
2006/10/15 (0.06)
特定サイトの被はてなブックマーク数を取得する XML-RPC API の公開 による bookmark.getTotalCount メソッドに対応しました。
ドメイン内の全ページのブックマーク件数の合計値を取り出せます。(URL前方一致)
2006/05/21 (0.05)
1回のリクエストで被ブックマーク件数を取得できるURLは、 50件までに制限されていましたが、 40件以上のURLを同時に引数に渡された場合は自動的にリクエストを分割して、 制限なく同時に取り出せるようにしました。
ただし、大量アクセスによるはてな側のサーバへの負荷を軽減するため、 最初のリクエストが終わったときに1秒、 2回目のリクエストが終わったときに2秒、 3回目のリクエストが終わったときには3秒、、、と、分割ごとにそれぞれウェイトが入ります。
perltidy でソースを整形しました。
2006/05/06
このページの修正と、更新履歴欄の追加(ソースは変わっていません)
2006/02/26 (0.04)
最初のバージョン

コメントはこちらへ by AjaxCom

その他のページへのリンク

Kawa.netxp © Copyright 2006-2010 Yusuke Kawasaki