アマゾンのWebサービスを利用する

PerlのNet::Amazonモジュールを利用する

Perlでは、数々の便利なモジュールが利用できますが、今回はNet::Amazonというモジュールを利用します。Net::Amazonでは、各種の検索リクエストの送信、レスポンスの解析が簡単に行えるので、プログラムの作成は非常にシンプルになります。

プログラムサンプル

ここで紹介するサンプルは、Net::Amazonのソースコードと共に提供されているサンプルの「browse」というBrowseNodeサーチを行うプログラムをCGIに書き直したものです。また、localeパラメータをjpにして、リクエストが日本のアマゾンドットコムに向かうようにしています。

まず、実際に実行してみます。次の例は、和書の「文学・評論」カテゴリを検索します。
http://jam.apricot.co.jp/cgi-bin/aws/browse.cgi?node=466284&mode=books-jp
ノードIDとモードは正しく一致している必要があります。

次にソースコードです。

						
#!/usr/bin/perl
######################################################
# Browse node search
# Jackie Hamilton <kira@cgi101.com>, 2003
# Mike Schilli <na@perlmeister.com>, 2003
# Norihiko Nakajima <n-nakajima@apricot.co.jp>, 2004
######################################################
use warnings;
use strict;
use Net::Amazon;
use CGI;

my $q = new CGI;
my $params = $q->Vars();
my $mode = $params->{'mode'};
my $node = $params->{'node'};

if ($mode eq "" or $node eq "") { error("param error"); }

my $ua = Net::Amazon->new(
  token => 'D14X1ERKGLFMNO', # Developer Token
  locale => 'jp',            # 日本のアマゾンドットコムへのリクエストであることを指示
);

#アマゾンドットコムへの検索リクエスト送信とレスポンスの受信をここで行います。
my $resp = $ua->search(
  browsenode => $node, 
  mode => $mode,
);

error($resp->message()) unless $resp->is_success();

print $q->header(-charset=>'utf-8');
binmode(STDOUT, ":utf8"); # PerlIOレイヤで wide char 関連のエラー回避
#結果の表示
for ($resp->properties) {
  print $_->Asin(), " ",
   $_->title(), " ",
   $_->OurPrice(), "<br>\n";
}
print $q->end_html();
exit;

sub error
{
  print $q->header(-charset=>'utf-8');
  print $q->h1('ERROR');
  print "$_[0]\n";
  print $q->end_html();
  exit;
}

このように、便利なモジュールのおかげで実に簡単にAWSが利用できます。

←AdSenseの代替広告を作る | Amazon Product Feed 4の日本語ランゲージファイルを作る→