#!/Perl5.10/bin/perl.exe
# ExeMode = 1
# Title = ISBN2AMAZON
# Input
# Output
# Copyright 2009 jscripter(jscripter9@gmail.com)
use Net::Amazon;
use utf8;
binmode STDOUT, ':encoding(cp932)';
my $isbn = "";
while(<>){
chomp;
($isbn = $_) =~ s/^i*s*bn: (.+)$/$1/i;
}
my($isbn13, $localenum) = &isbn10to13($isbn);
my $locale = "";
if($localenum == 0){
$locale = 'us';
}elsif($localenum == 1){
$locale = 'uk';
}elsif($localenum == 2){
$locale = 'fr';
}elsif($localenum == 3){
$locale = 'de';
}elsif($localenum == 4){
$locale = 'jp';
}
my $ua = Net::Amazon->new(token => 'Your Subscription ID', locale => $locale);# Set Your Subscription ID
# Get a request object
my $response = $ua->search(isbn => $isbn13);
if($response->is_success()) {
for ($response->properties){
print "ImageUrlMedium(),"\" align=LEFT hspace=20>",
join("/", $_->authors), "่ใ", $_->title(), "ใ(",
$_->publisher(), ", ", $_->year(), "ๅนด)
";
}
} else {
print "Error: ", $response->message(), "\n";
}
sub isbn10to13{
my($isbn10) = @_;
my $isbn13 = "";
my $localenum = 0;
$isbn10 =~ s/-//g;
if($isbn10 =~ /^(\d{9}).$/){
$isbn13 = "978" . $1;
$isbn13 =~ /^(\d)(\d)(\d)(\d)(\d)(\d)(\d)(\d)(\d)(\d)(\d)(\d)$/;
$localenum = $4;
$e = $2 + $4 + $6 + $8 + $10 + $12;
$o = $1 + $3 + $5 + $7 + $9 + $11;
($f = $e * 3 + $o) =~ s/^\d*(\d)$/$1/;
if($f == 0){
$isbn13 .= "0";
}else{
$isbn13 .= 10 - $f;
}
}else{
$isbn13 = $isbn10;
$localenum = (split(//, $isbn13))[3];
}
return $isbn13, $localenum;
}