はてなブックマークのASIN被コレクション件数を取得してJSONPで返す
はてなブックマーク件数取得APIとは – はてなダイアリーに載っているサンプルを参考にして、任意のASINコードから被コレクション件数を取得してJSONP形式で返すプログラムを作ってみました。
ASINコードはピリオド区切りでasin=1234567890.2345678901のように与えます。さらにcallback=funcnameと与えると、funcname({“1234567890”:1, “2345678901”:2});のようなJSONP形式で結果を返します。callbackを与えない場合は、JSON形式で返します。
エントリーページに掲載しているAmazon関連商品リストのところで、このプログラムを実際に使い、被コレクション件数を取得して表示されています。
#!/usr/local/bin/perl use strict; use warnings; use XMLRPC::Lite; use CGI; my $p = new CGI(); my $asins = $p->param('asin'); my $callback = $p->param('callback'); my @asin = split(/\./, $asins); print "Content-type:text/plain\n\n"; map { if (!/^[0-9a-z]{10}$/i) { print "error"; die; } } @asin; if ($callback !~ /^[a-zA-Z0-9\.\_]*$/) { print "error"; die; } my $map = XMLRPC::Lite ->proxy('http://b.hatena.ne.jp/xmlrpc') ->call('bookmark.getAsinCount', @asin) ->result; my @json = map { "\"$_\":$map->{$_}" } @asin; if ($callback) { print $callback . '({' . join(",", @json) . '});'; } else { print '{' . join(",", @json) . '}'; }
コメントを残す