Net::Amazon のメモ
2006-10-17-2
[Programming]
PerlでアマゾンWebサービスをいじるときは、
いつも、LWP で XML 取ってきて正規表現によるパターンマッチや
XML::Simple を使ってごにょごにょしているんだけど、
「CPANにあるなら使おうキャンペーン」中なので、
いまさらながら、某アルファギーク氏が昔「一番好きなPerlモジュール」
として挙げていたことで知られる Net::Amazon を試してみる。
Cache::File[2006-10-17-1]と連携できるのが嬉しいね。
Michael Schilli / Net-Amazon-0.35 - search.cpan.org
http://search.cpan.org/~mschilli/Net-Amazon-0.35/
ところで、locale を jp にすると、発売日(ReleaseDate)の情報が
取れないのですが、これってそういうもの?
(追記061021: データがないのが取れてなかっただけの模様)
amazon がらみのサービスでよく「発売日が取得できなくうんぬん」とか
いうアナウンスがあったりするけど、それってこれがらみ?
あと、authors() と Authors() の使い分けが面倒くさい。
素直に自前のモジュール(Yasazon::Amazon とかある)を使い続けるかな…。
以下、動作確認サンプルプログラム:
いつも、LWP で XML 取ってきて正規表現によるパターンマッチや
XML::Simple を使ってごにょごにょしているんだけど、
「CPANにあるなら使おうキャンペーン」中なので、
いまさらながら、某アルファギーク氏が昔「一番好きなPerlモジュール」
として挙げていたことで知られる Net::Amazon を試してみる。
Cache::File[2006-10-17-1]と連携できるのが嬉しいね。
Michael Schilli / Net-Amazon-0.35 - search.cpan.org
http://search.cpan.org/~mschilli/Net-Amazon-0.35/
ところで、locale を jp にすると、発売日(ReleaseDate)の情報が
取れないのですが、これってそういうもの?
(追記061021: データがないのが取れてなかっただけの模様)
amazon がらみのサービスでよく「発売日が取得できなくうんぬん」とか
いうアナウンスがあったりするけど、それってこれがらみ?
あと、authors() と Authors() の使い分けが面倒くさい。
素直に自前のモジュール(Yasazon::Amazon とかある)を使い続けるかな…。
以下、動作確認サンプルプログラム:
#!/usr/bin/perl
use strict;
use warnings;
use Net::Amazon;
use Cache::File;
use Encode;
binmode STDOUT, ":utf8";
my $cache = Cache::File->new(cache_root => '/var/tmp/cache-amazon',
lock_level => Cache::File::LOCK_LOCAL(),
default_expires => '24 hours');
my $ua = Net::Amazon->new(token => 'YOUR_TOKEN',
locale => 'jp',
cache => $cache,
max_pages => 1,
);
#my $response = $ua->search(asin => '4873110505');
#my $response = $ua->search(blended => "Perl");
my $response = $ua->search(keyword => "Perl", mode => "books-jp");
#my $response = $ua->search(keyword => "Perl", mode => "books");
if (not $response->is_success()) {
print "Error: ", $response->message(), "\n";
exit;
}
print $response->as_string(), "\n";
for ($response->properties()) {
print "Asin()\t", $_->Asin(), "\n";
print "ProductName()\t", $_->ProductName(), "\n";
print "Availability()\t", $_->Availability(), "\n";
print "Catalog()\t", $_->Catalog(), "\n";
print "authors()\t", $_->authors(), "\n";
#print "Authors()\t", $_->Authors(), "\n";
print "ReleaseDate()\t", $_->ReleaseDate(), "\n";
print "Manufacturer()\t", $_->Manufacturer(), "\n";
print "ImageUrlSmall()\t", $_->ImageUrlSmall(), "\n";
print "ImageUrlMedium()\t", $_->ImageUrlMedium(), "\n";
print "ImageUrlLarge()\t", $_->ImageUrlLarge(), "\n";
print "ListPrice()\t", $_->ListPrice(), "\n";
print "OurPrice()\t", $_->OurPrice(), "\n";
print "UsedPrice()\t", $_->UsedPrice(), "\n";
print "SalesRank()\t", $_->SalesRank(), "\n";
print "Media()\t", $_->Media(), "\n";
print "NumMedia()\t", $_->NumMedia(), "\n";
print "ProductDescription()\t", $_->ProductDescription(), "\n";
print "CollectiblePrice()\t", $_->CollectiblePrice(), "\n";
print "CollectibleCount()\t", $_->CollectibleCount(), "\n";
print "NumberOfOfferings()\t", $_->NumberOfOfferings(), "\n";
print "UsedCount()\t", $_->UsedCount(), "\n";
print "ThirdPartyNewPrice()\t", $_->ThirdPartyNewPrice(), "\n";
print "ThirdPartyNewCount()\t", $_->ThirdPartyNewCount(), "\n";
print "year()\t", $_->year(), "\n";
print "browse_nodes()\t", $_->browse_nodes(), "\n";
print "similar_asins()\t", $_->similar_asins(), "\n";
}
この記事に言及しているこのブログ内の記事
