6.5 KiB
6.5 KiB
title | author | date | wordtwit_post_info | categories | ||
---|---|---|---|---|---|---|
AmazonのWebサービスを使ってみる | kazu634 | 2009-05-28 |
|
|
はてなで日記を書いて本の紹介をするときは、本の裏をめくってisbn13をasinに変換している。でも、この方法だと雑誌の場合うまくいかない。雑誌はasinでBから始まっている。普通のisbn13をasin(=isbn10)に変換するアルゴリズムでは変換できないからだ。
ある日、ふとAmazonでisbn13(=実はバーコードの数字と同じ)を入力すると、検索できることが判明。前に試したときはできなかったような気がするのだけれど。。。でも、isbn13を入力すれば、Amazonで管理しているID(=asin)が判明することがわかった。
というわけで、PerlでAmazonのWebサービスを使ってみようと決意したのであった。
Perlのコード
Perlの偉い人が「404 Blog Not Found:perl – URI::Amazon::APA released!」というのを公開しているので、それを活用する。とりあえずサンプルをそのままコピペしてみた。
# === Libraries === use strict; use warnings; use LWP::UserAgent; use URI::Amazon::APA; use XML::Simple; use YAML::Syck; # === Main part === my $u = URI::Amazon::APA->new('http://ecs.amazonaws.jp/onca/xml'); $u->query_form( Service => 'AWSECommerceService', Operation => 'ItemLookup', ItemId => shift || '9784798118925', IdType => 'EAN', SearchIndex => 'Books', ); $u->sign( key => 'キー', secret => '秘密鍵' ); my $ua = LWP::UserAgent->new; my $r = $ua->get($u); print $r->status_line, "\n", YAML::Syck::Dump( XMLin( $r->content ) );
注意すべきは、
- IdTypeはEANを指定する(デフォルトだとasinで検索してしまうため。今回はバーコードの数字で検索できるように指定してあげる)
- SearchIndexはBooks(今回は本なので)
という点です。
実行結果
実行してみます:
~/bin on simoom634 [503] $: perl ./access_amazon.pl 200 OK --- Items: Item: ASIN: 4798118923 DetailPageURL: http://www.amazon.co.jp/More-Joel-Software-Spolsky/dp/4798118923%3FSubscriptionId%3DAKIAI54BKVADN7EPRVZA%26tag%3Dws%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D4798118923 ItemAttributes: Author: Joel Spolsky Creator: Role: 翻訳 content: 青木 靖 Manufacturer: 翔泳社 ProductGroup: Book Title: More Joel on Software ItemLinks: ItemLink: - Description: Add To Wishlist - Description: Tell A Friend - Description: All Customer Reviews - Description: All Offers Request: IsValid: 'True' ItemLookupRequest: Condition: New DeliveryMethod: Ship IdType: EAN ItemId: 9784798118925 MerchantId: Amazon OfferPage: 1 ResponseGroup: Small ReviewPage: 1 ReviewSort: -SubmissionDate SearchIndex: Books VariationPage: All OperationRequest: Arguments: Argument: - Name: Operation Value: ItemLookup - Name: Service Value: AWSECommerceService - Name: Version Value: 2009-01-01 - Name: SearchIndex Value: Books - Name: Signature Value: gwfPyW7fYVfp/lFxseRThAn8uSCKV4+SRj5CAAJeBws= - Name: ItemId Value: 9784798118925 - Name: IdType Value: EAN - Name: AWSAccessKeyId Value: AKIAI54BKVADN7EPRVZA - Name: Timestamp Value: 2009-05-28T14:46:19Z HTTPHeaders: Header: Name: UserAgent Value: libwww-perl/5.826 RequestId: 73da30ef-a5eb-4f67-bb5e-50b699de5177 RequestProcessingTime: 0.0748140000000000 xmlns: http://webservices.amazon.com/AWSECommerceService/2008-10-06