Library tech blog

Thoughts and ideas on technology

Playing with Amazon’s Web Services and Perl

Well here is some code that I adapted. It goes out and hits the Amazon Webservice and does a keyword search. It is my first go at using the service. I plan to combind this with the library card code below along with some code I need to write to display books we have entered into the catalog. The Data:Dumper was just me taking a look at the xml layout and trying to figure things out.

#####################################################################
# testaws-2.pl
# I have taken a typical script to access the Amazon webservices and made some
# adpaptions to it.
# Usage: testaws-2.pl <keyword>
#
#####################################################################
#Your Amazon developer’s token
my $dev_key=’insert developer’s token ‘;

#Your Amazon affiliate code
my $af_tag=’insert associate tag’;

#Take the keyword from the command-line
my $keyword =shift @ARGV or die “Usage:perl testaws-2.pl <keyword>\n”;

#Assemble the URL
my $url = “http://xml.amazon.com/onca/xml3?t=” . $af_tag .
“&dev-t=” . $dev_key .
“&type=lite&f=xml&mode=books&” .
“KeywordSearch=” . $keyword;

use strict;

#Use the XML::Parser  and LWP::Simple Perl modules
use XML::Simple;
use LWP::Simple;
use Data::Dumper;
my $content = get($url);
#print $content;
die “Could not retrieve $url” unless $content;

my $xmlsimple = XML::Simple->new( );
my $response = $xmlsimple->XMLin($content);
print Dumper($response);

foreach my $result (@{$response->{Details}}){
#Print out the main bits of each result

join “\n”,
print $result->{ProductName} .  “\n” ||”no title,\n”;
if (eval {$result->{Authors}->{Author}->[0] }){
for (my $i =0; $result->{Authors}->{Author}->[$i]; $i++){
print “Author: ” . $result->{Authors}->{Author}->[$i] . “\n”;
}
}
else {
print “Author: ” . $result->{Authors}->{Author}. “\n” ;
}

print “ASIN: ” . $result->{Asin} . “, ” ;
print $result->{OurPrice} . “\n\n”;
}

October 10, 2006 Posted by tscrobinson | Uncategorized | | No Comments Yet