[Checkins] SVN: Sandbox/luciano/kirbi/src/kirbi/ first stab at
fetching Amazon.com metadata
Luciano Ramalho
luciano at ramalho.org
Mon Jul 9 14:07:15 EDT 2007
Log message for revision 77666:
first stab at fetching Amazon.com metadata
Changed:
U Sandbox/luciano/kirbi/src/kirbi/book.py
U Sandbox/luciano/kirbi/src/kirbi/demo/dump.py
A Sandbox/luciano/kirbi/src/kirbi/fetch/
A Sandbox/luciano/kirbi/src/kirbi/fetch/amazon_fetch.py
A Sandbox/luciano/kirbi/src/kirbi/fetch/item-ok.xml
A Sandbox/luciano/kirbi/src/kirbi/tests/
A Sandbox/luciano/kirbi/src/kirbi/tests/book_tests.py
-=-
Modified: Sandbox/luciano/kirbi/src/kirbi/book.py
===================================================================
--- Sandbox/luciano/kirbi/src/kirbi/book.py 2007-07-09 15:53:10 UTC (rev 77665)
+++ Sandbox/luciano/kirbi/src/kirbi/book.py 2007-07-09 18:07:15 UTC (rev 77666)
@@ -23,7 +23,7 @@
description=u"ISBN in 10 or 13 digit format"
)
creators = schema.List(title=u"Authors", required=False,
- value_type=schema.TextLine(), default=[])
+ value_type=schema.TextLine())
edition = schema.TextLine(title=u"Edition", required=False)
publisher = schema.TextLine(title=u"Publisher", required=False)
issued = schema.TextLine(title=u"Issued", required=False)
Modified: Sandbox/luciano/kirbi/src/kirbi/demo/dump.py
===================================================================
--- Sandbox/luciano/kirbi/src/kirbi/demo/dump.py 2007-07-09 15:53:10 UTC (rev 77665)
+++ Sandbox/luciano/kirbi/src/kirbi/demo/dump.py 2007-07-09 18:07:15 UTC (rev 77666)
@@ -66,6 +66,14 @@
for book in books.values():
books2.append(book)
pprint(books2)
+
+def dump_tr():
+ import MySQLdb
+ db = MySQLdb.connect(host="localhost", user="luciano", passwd=sys.argv[1],
+ db="horde")
+ cursor = db.cursor()
+
if __name__=='__main__':
- dump()
\ No newline at end of file
+ # dump()
+ dump_tr()
\ No newline at end of file
Added: Sandbox/luciano/kirbi/src/kirbi/fetch/amazon_fetch.py
===================================================================
--- Sandbox/luciano/kirbi/src/kirbi/fetch/amazon_fetch.py (rev 0)
+++ Sandbox/luciano/kirbi/src/kirbi/fetch/amazon_fetch.py 2007-07-09 18:07:15 UTC (rev 77666)
@@ -0,0 +1,75 @@
+#!/usr/bin/env python
+
+import httplib2
+from urllib import quote
+from lxml import etree
+from StringIO import StringIO
+
+class AmazonECS(object):
+
+ xml_namespace = """http://webservices.amazon.com/AWSECommerceService/2005-10-05"""
+ base_url = """http://ecs.amazonaws.com/onca/xml"""
+
+ def __init__(self, AWSAccessKeyId, AssociateTag=None):
+ self.base_params = { 'Service':'AWSECommerceService',
+ 'AWSAccessKeyId':AWSAccessKeyId, }
+ if AssociateTag:
+ self.base_params['AssociateTag'] = AssociateTag
+ self.httpcli = httplib2.Http('.cache')
+
+ def buildURL(self, **kw):
+ query = []
+ kw.update(self.base_params)
+ for key, val in kw.items():
+ query.append('%s=%s' % (key,quote(val)))
+ return self.base_url + '?' + '&'.join(query)
+
+ def fetchTree(self, url):
+ resp, content = self.httpcli.request(url, 'GET')
+ self.tree = etree.parse(StringIO(content))
+ return resp, content
+
+ def buildQPath(path, ns):
+ """build a path with fully qualified tags"""
+ ns = '{%s}' % ns
+ parts = path.split('/')
+ return ns+('/'+ns).join(parts)
+
+ def itemLookup(self,itemId):
+ params = {'Operation':'ItemLookup', 'ItemId':itemId}
+ url = self.buildURL(**params)
+ return self.fetchTree(url)
+
+ def findAll(self,path):
+ pass
+
+
+def fetch(asin):
+ params['asin'] = asin
+ params['op'] = 'ItemLookup'
+ print asin
+ resp, content = h.request(URL % params, 'GET')
+ tree = etree.parse(StringIO(content))
+ # the tree root is the toplevel html element
+ items = tree.findall(qPath('Items/Item/ItemAttributes',NS))
+ for item in items:
+ print item.find(qPath('Title',NS)).text
+ for author in item.findall(qPath('Author',NS)):
+ print 'author: ', author.text
+ for creator in item.findall(qPath('Creator',NS)):
+ print 'creator: ', creator.text
+
+
+
+if __name__=='__main__':
+ from amazon_config import ACCESS_KEY_ID, ASSOCIATE_TAG
+
+ ecs = AmazonECS(ACCESS_KEY_ID, ASSOCIATE_TAG)
+ alice = '0393048470'
+ gof = '0201633612'
+ awpr = '0977616630'
+ oss = '1565925823'
+ print ecs.itemLookup(alice)
+
+
+
Property changes on: Sandbox/luciano/kirbi/src/kirbi/fetch/amazon_fetch.py
___________________________________________________________________
Name: svn:executable
+ *
Added: Sandbox/luciano/kirbi/src/kirbi/fetch/item-ok.xml
===================================================================
--- Sandbox/luciano/kirbi/src/kirbi/fetch/item-ok.xml (rev 0)
+++ Sandbox/luciano/kirbi/src/kirbi/fetch/item-ok.xml 2007-07-09 18:07:15 UTC (rev 77666)
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ItemLookupResponse xmlns="http://webservices.amazon.com/AWSECommerceService/2005-10-05">
+ <OperationRequest>
+ <HTTPHeaders>
+ <Header Name="UserAgent" Value="Python-httplib2/$Rev: 235 $"></Header>
+ </HTTPHeaders>
+ <RequestId>1TNDRF1510DSSJZQRP69</RequestId>
+ <Arguments>
+ <Argument Name="ItemId" Value="1565926226"></Argument>
+ <Argument Name="Service" Value="AWSECommerceService"></Argument>
+ <Argument Name="Operation" Value="ItemLookup"></Argument>
+ <Argument Name="AWSAccessKeyId" Value="13W2MMDG65QJJK9GG402"></Argument>
+ </Arguments>
+ <RequestProcessingTime>0.0254600048065186</RequestProcessingTime>
+ </OperationRequest>
+ <Items>
+ <Request>
+ <IsValid>True</IsValid>
+ <ItemLookupRequest>
+ <ItemId>1565926226</ItemId>
+ </ItemLookupRequest>
+ </Request>
+ <Item>
+ <ASIN>1565926226</ASIN>
+ <DetailPageURL>http://www.amazon.com/gp/redirect.html%3FASIN=1565926226%26tag=circulante-20%26lcode=xm2%26cID=2025%26ccmID=165953%26location=/o/ASIN/1565926226%253FSubscriptionId=13W2MMDG65QJJK9GG402</DetailPageURL>
+ <ItemAttributes>
+ <Author>Eric Meyer</Author>
+ <Manufacturer>O'Reilly</Manufacturer>
+ <ProductGroup>Book</ProductGroup>
+ <Title>Cascading Style Sheets: The Definitive Guide</Title>
+ </ItemAttributes>
+ </Item>
+ </Items>
+</ItemLookupResponse>
Added: Sandbox/luciano/kirbi/src/kirbi/tests/book_tests.py
===================================================================
--- Sandbox/luciano/kirbi/src/kirbi/tests/book_tests.py (rev 0)
+++ Sandbox/luciano/kirbi/src/kirbi/tests/book_tests.py 2007-07-09 18:07:15 UTC (rev 77666)
@@ -0,0 +1,6 @@
+#!/usr/bin/env python
+
+import unittest
+from kirbi.book import Book
+
+
More information about the Checkins
mailing list