Use existing Python functions to handle Amazon requests for you.
This hack is another example of using someone else's interface to AWS to speed up your development. Behind the scenes, these functions handle all the work of building the proper URL, making the request, and organizing the results. The only thing you need to do is learn how the wrapper works.
Mark Pilgrim's pyAmazon (http://diveintomark.org/projects/#pyamazon) makes quick work of an Amazon query in Python. The wrapper is a single file called amazon_wrap.py; be sure to save it to the same directory as the script that uses it.
The code in amazon_wrap.py sets the License argument with your developer's token, and calls the searchByKeyword function using the argument supplied on the command line.
#!/usr/bin/python # amazon_wrap.py # A typical Amazon Web API Python script using Mark Pilgrim's # pyAmazon Amazon Web Service API wrapper # [http://diveintomark.org/projects/#pyamazon] # Usage: python amazon_wrap.py <keyword> import sys # Use the pyAmazon Functions import amazon # Set your dev token amazon.setLicense(' insert developer token here ') # Get the Keyword from input if sys.argv [1:]: actor = sys.argv [1 ] else: sys.exit('Usage: python amazon_wrap.py <keyword>') # Make the Request pythonBooks = amazon.searchByKeyword(actor) # Print the Results for book in pythonBooks: print book.ProductName print "by", authorList = book.Authors.Author if len(authorList) < 5: for author in authorList: print author + ", ", else: print book.Authors.Author, print book.OurPrice + "\n"
The searchByKeyword function is shorthand that the program uses to make the Amazon request. There are several other shorthand functions, including searchByASIN, searchByUPC, searchByAuthor, and searchByArtist. Check the source of amazon.py for a full list.
The for statement at the end of the code loops through the results. The variable names mirror Amazon's results. By changing book.OurPrice to book.ListPrice or book.Asin, you can change what the script returns.
Run the script on the command line like so:
python amazon_wrap.py "query words"
Replace query words with your preferred query; "google hacks", for example. Be sure to enclose phrases or queries consisting of more than one keyword in quotes, as otherwise spaces will separate the words into different script arguments.
Python lets you work with the interpreter interactively, a fabulous way to get to know packages like pyAmazon and what information they return. Here's a sample interactive session (what I typed is called out in bold) that retrieves a list of Beatles CDs, gets information about the first CD listed, and looks for similar products based on its ASIN.
C:\Python22>python Python 2.2.1 (#34, Apr 9 2002, 19:34:33) [MSC 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import amazon >>> amazon.setLicense(' insert developer token ') >>> pythonCDs = amazon.searchByArtist('Beatles') >>> pythonCDs.ProductName u'Abbey Road' >>> pythonCDs.OurPrice u'$13.49' >>> pythonCDs.Asin u'B000002UB3' >>> moreCDs = amazon.searchSimilar('B000002UB3') >>> moreCDs.ProductName u"Sgt. Pepper's Lonely Hearts Club Band" >>>