F.Ko-Jiの「一秒後は未来」

はてなブックマークの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) . '}';
}

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

著者について

fkoji

F.Ko-Ji

Webエンジニアやってます。最近は ドットインストール の開発がお仕事です。その傍ら、個人で Meity電車遅延なう梅酒.in#グラドル自画撮り部 の部室といったネットサービスを開発・運営してます。梅酒と草野球とリアル脱出ゲームが好きです。

» 詳しいプロフィールや運営サービスの一覧など