バーコードリーダーとAmazon Web Serviceで遊ぼう

概要

バーコードリーダーを買ってみたので、いろいろと使ってみようと言う企画。
Amazon Web ServicesというAPIを使えば、バーコードリーダーで読み取ったISBNから、書籍の情報を得ることができます。
今後自分の本棚とかをデータベース化して、外からでもアクセスできるようにしてみたい。

AWSの登録

AWS

AWSとはAmazon Web Serviceの略。
開発者登録を行えば、Amazonの商品のデータベースを使うことができる。いわゆるクラウド
タダで使わせてくれる気前のいいAmazonですが、AWSを使ってアフィリエイトする人が増えれば売り上げになるので、Amazonにとっても有益なんですね。
だから気兼ねすることなく利用しよう。利用してるつもりが利用されているのかもしれないけど。

登録する

Amazon Web Services (AWS) - Cloud Computing Servicesの上にある Sign in to the AWS Management Console から登録できる。
特に注意することはなし。

AWSを使う準備

登録を終えてログインしたら、Security Credentialsというページにアクセスして鍵を手に入れる。
この鍵はプログラム中でAWSを使うために必要。
認証の種類が3種類あるようだけど、Access Keys以外はどうやってNet::Amazonから使えばいいのかわからなかった。

Access Keys

Create a new Access Keyをクリックすると、Access Key IDとSecret Access Keyという一対の鍵が出力される。
これらをスクリプトに書き込んで使う。

Net::Amazonで遊ぼう

ここからが本番。以下のPerlスクリプトで、書籍の情報*1が出力されます。

#!/usr/bin/perl -w
use strict;
use Net::Amazon;
use utf8;
binmode STDOUT, ":utf8";

my $ua = Net::Amazon->new(
	token => 'kyaaaaaaaaaaaaaaaaaaaaaa',	# Access Key ID
	secret_key => 'uwaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',	# Secret Access Key
	locale => 'jp',
	max_pages => 1,
);

my $response = $ua->search( isbn  => $ARGV[0]);

if(not $response->is_success()) {
	print "Error: ", $response->message(), "\n";
	exit;
}

for ($response->properties()) {
	# 著者, タイトル, 出版年, 出版社
	printf( "%s 「%s」(%s) %s\n", $_->authors(), $_->ProductName(),
		$_->year(), $_->Manufacturer());
#	print $_->ImageUrlMedium(), "\n";	# 画像URL
}
これの使い方

コマンドライン引数でISBNを渡すと、Amazonから調べてきます。

文字化け
use utf8;
binmode STDOUT, ":utf8";

これが無いと文字化けした。MacOS Xutf-8な環境。

token, secret_keyにそれぞれ、Accsess_key、Seecret accsess keyを入力。
できなかったら、何かの手違いかもしれません。何度か作り直すとうまく行くかも。

*1:書誌情報とかいったけ?