[メモ]プログラムでAmazonの商品検索を行う

Amazon Web サービスの「Product Advertising API」を使って行います。
環境整備の手順については、ココのサイトを参考にさせていただきました。

大まかな手順としては、
1)トラッキングIDが必要なので、Amazon アソシエイト・プログラムへ参加します。

2)Product Advertising APIアカウントを作成します。
 ⇒アソシエイトの画面の右上に「Product Advertising API」のボタンがあります
  クリックしたら「アカウント作成」なボタンがあるページが表示されますので、アカウントを作成します。

3)AccessキーとSecret Accessキーを取得します。
 登録が終了すると、下記の画面が表示されます。

 ・「Manage Your Account」をクリックします。
  ⇒「アカウントサービス」画面が表示されます。
 ・「アクセスキー情報」からアクセスキーとシークレットアクセスキーが取得できます。

 ※次回以降はログイン画面から操作できます。

4)頑張ってプログラムを作りましょう(^ ^)v

「Signed Requests Helper」では、Signature無しのURLをSignature付きに変換してくれます。

■サンプル(元プログラムあったんですが、参照先が不明ですm(_ _)m)

#!/usr/bin/perl
#
use strict;
use warnings;
use Digest::SHA qw(hmac_sha256_base64);
use DateTime;
use URI::Escape;
use LWP::Simple;
use XML::Simple;
use Data::Dumper;
use Encode;

use constant ACCESS_KEY_ID => 'XXXXXXX';
use constant SECRET_ACCESS_KEY => 'YYYYYYY';

my $itemId = '4344016645';
my $dt = DateTime->now;
my $config = {
AWSAccessKeyId => ACCESS_KEY_ID,
AssociateTag => 'aaaaaaa-22',
ItemId => $itemId,
Operation => 'ItemLookup',
ResponseGroup => 'Small%2CImages',
Service => 'AWSECommerceService',
Timestamp => uri_escape("$dt") . 'Z',
Version => '2009-07-01'
};

my $use_config = join '&', map{ $_ . '=' . $config->{$_} } sort keys %$config;
my $signature = "GET\n";
$signature .= "ecs.amazonaws.jp\n";
$signature .= "/onca/xml\n";
$signature .= $use_config;
my $hashed_signature = hmac_sha256_base64( $signature, SECRET_ACCESS_KEY );

while (length( $hashed_signature ) % 4) {
$hashed_signature .= '=';
}

my $accessData = 'http://ecs.amazonaws.jp/onca/xml?' . $use_config . '&Signature=' . uri_escape( $hashed_signature);
#print $accessData . "\n";
my $response = get( $accessData );
print $response . "\n";

my $parser = XML::Simple->new;
my $data = $parser->XMLin( $response );

warn Dumper( $data );

print $data->{Items}->{Item}->{ItemAttributes}->{ProductGroup} . "\n";
print utf8::is_utf8( $data->{Items}->{Item}->{ItemAttributes}->{Author}) ? 'flagged' : 'no flag';
print "\n";
print encode( 'utf-8', $data->{Items}->{Item}->{ItemAttributes}->{Author}) . "\n";
print encode( 'utf-8', $data->{Items}->{Item}->{ItemAttributes}->{Title}) . "\n";

コメントを残す

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