古い記事
ランダムジャンプ
新しい記事
楽天市場非公式ウェブサービス RakuAPI (http://rakuapi.ddo.jp/)
を操作するPerlモジュール、Asamasi::RakuAPI を作ってみました。
使用は自己責任で。

- Asamasi::RakuAPI
  http://ta2o.net/tools/pm/src/Asamasi-RakuAPI-0.1.tar.gz

同様のものは、すでに id:naoya による Webservice::RakuAPI
(http://d.hatena.ne.jp/naoya/20060926/1159263533) があります。
ただ、Net::Amazon [2006-10-17-2]みたいに Cache::File を渡して中で
キャッシュできるようにしたかったので、自分用モジュールとして車輪の
再発明。あと、RakuAPI からは XML ではなく TSV をもらってくるように
して、処理を単純化しています。入出力は utf8 です。

以下、SYNOPSISとサンプルプログラムを載せておきます。

SYNOPSIS:
use Asamasi::RakuAPI;
my $ar = Asamasi::RakuAPI->new(affiliate_code => $acode);
my $results_ref = $ar->search({key => $key, row => 3});
for (@{$results_ref}) {
  print $_->{Title}, $_->{Url}, ...
}

# "Cache::File" も使えます。
use Cache::File;
my $cache = Cache::File->new(cache_root => "/var/tmp/cache",
                             default_expires => '48 hours');
my $ar = Asamasi::RakuAPI->new(cache => $cache,
                               affiliate_code => $acode);

サンプルプログラム:
#!/usr/bin/perl -T
use strict;
use warnings;
use Cache::File;
use HTML::Template;
use CGI;
use Asamasi::RakuAPI;

my $q = CGI->new();
my $key = $q->param('key') || "";
my $acode = $q->param('acode') || "YOUR_AFFILIATE_CODE";

my $cache_root_root = "/var/tmp/cache";
my $cache_rakuapi =
    Cache::File->new(cache_root => $cache_root_root."/rakuapi",
                     lock_level => Cache::File::LOCK_LOCAL(),
                     default_expires => '48 hours');

my $araku = Asamasi::RakuAPI->new(cache => $cache_rakuapi,
                                  affiliate_code => $acode);

my $results_ref = $araku->search({key => $key, row => 3});

my $template = join("", <DATA>);
my $t = HTML::Template->new(scalarref => \$template,
                            die_on_bad_params => 0);
$t->param(results => $results_ref);

print $q->header(-charset => 'UTF-8'), $t->output();

__DATA__
<TMPL_LOOP name=results>
<div class="araku-item">
<TMPL_IF name=ThumbnailUrl><a href="<TMPL_VAR name=Url>" target="_blank"
title="<TMPL_VAR name=Title>"><img class="araku-image"
src="<TMPL_VAR name=ThumbnailUrl>" alt="<TMPL_VAR name=Title>"></a></TMPL_IF>
<span class="araku-title"><a href="<TMPL_VAR name=Url>" target="_blank"
title="<TMPL_VAR name=Title>"><TMPL_VAR name=Title></a></span>
<span class="araku-price"><TMPL_VAR name=Price></span>
<span class="araku-tax"><TMPL_VAR name=Tax></span>
<span class="araku-shop"><a href="<TMPL_VAR name=ShopUrl>" target="_blank"
title="<TMPL_VAR name=ShopName>"><TMPL_VAR name=ShopName></a></span>
</div>
</TMPL_LOOP>

実行結果(key=fujitsu):
実行結果
この記事に言及しているこのブログ内の記事