| Line 38... |
Line 38... |
| 38 |
params['ItemCondition'] = 'New'
|
38 |
params['ItemCondition'] = 'New'
|
| 39 |
params.update(extra_data)
|
39 |
params.update(extra_data)
|
| 40 |
request_description = '&'.join(['%s=%s' % (k, urllib.quote(params[k], safe='-_.~').encode('utf-8')) for k in sorted(params)])
|
40 |
request_description = '&'.join(['%s=%s' % (k, urllib.quote(params[k], safe='-_.~').encode('utf-8')) for k in sorted(params)])
|
| 41 |
signature = self.calc_signature(method, request_description)
|
41 |
signature = self.calc_signature(method, request_description)
|
| 42 |
url = '%s%s?%s&Signature=%s' % (self.domain, self.uri, request_description, urllib.quote(signature))
|
42 |
url = '%s%s?%s&Signature=%s' % (self.domain, self.uri, request_description, urllib.quote(signature))
|
| 43 |
print url
|
- |
|
| 44 |
#headers = {'User-Agent': 'AmazonJavascriptScratchpad/1.0 (Language=Python)'}
|
43 |
#headers = {'User-Agent': 'AmazonJavascriptScratchpad/1.0 (Language=Python)'}
|
| 45 |
#headers.update(kwargs.get('extra_headers', {}))
|
44 |
#headers.update(kwargs.get('extra_headers', {}))
|
| 46 |
response = request(method, url)
|
45 |
response = request(method, url)
|
| 47 |
if action=='GetLowestOfferListingsForSKU':
|
46 |
if action=='GetLowestOfferListingsForSKU':
|
| 48 |
return self.parse_competitor_pricing_response(response)
|
47 |
return self.parse_competitor_pricing_response(response)
|
| Line 52... |
Line 51... |
| 52 |
return self.parse_product_category_for_sku(response)
|
51 |
return self.parse_product_category_for_sku(response)
|
| 53 |
elif action=='GetMatchingProductForId':
|
52 |
elif action=='GetMatchingProductForId':
|
| 54 |
return self.parse_product_attributes(response)
|
53 |
return self.parse_product_attributes(response)
|
| 55 |
elif action=='GetLowestOfferListingsForASIN':
|
54 |
elif action=='GetLowestOfferListingsForASIN':
|
| 56 |
return self.parse_lowest_pricing_asins(response)
|
55 |
return self.parse_lowest_pricing_asins(response)
|
| - |
|
56 |
elif action == 'GetMatchingProduct':
|
| - |
|
57 |
return self.parse_get_matching_product(response)
|
| 57 |
else:
|
58 |
else:
|
| 58 |
raise
|
59 |
raise
|
| 59 |
|
60 |
|
| - |
|
61 |
def parse_get_matching_product(self, response):
|
| - |
|
62 |
spString = re.sub('<\?.*\?>','',response.text)
|
| - |
|
63 |
spString = "<dom>" + spString + "</dom>"
|
| - |
|
64 |
dom = parseString(spString)
|
| - |
|
65 |
asinStatuses = dom.getElementsByTagName('GetMatchingProductResult')
|
| - |
|
66 |
asinMap = {}
|
| - |
|
67 |
for asinStatus in asinStatuses:
|
| - |
|
68 |
#print asinStatus.attributes.items()
|
| - |
|
69 |
status = asinStatus.attributes.items()[0][1]
|
| - |
|
70 |
asin = asinStatus.attributes.items()[1][1]
|
| - |
|
71 |
asinMap[asin] = status
|
| - |
|
72 |
return asinMap
|
| - |
|
73 |
|
| 60 |
def parse_product_category_for_sku(self,response):
|
74 |
def parse_product_category_for_sku(self,response):
|
| 61 |
print response.text
|
- |
|
| 62 |
browseNodes = []
|
75 |
browseNodes = []
|
| 63 |
#node = ""
|
76 |
#node = ""
|
| 64 |
spString = re.sub('<\?.*\?>','',response.text)
|
77 |
spString = re.sub('<\?.*\?>','',response.text)
|
| 65 |
spString = "<dom>" + spString + "</dom>"
|
78 |
spString = "<dom>" + spString + "</dom>"
|
| 66 |
dom = parseString(spString)
|
79 |
dom = parseString(spString)
|
| Line 273... |
Line 286... |
| 273 |
num=0
|
286 |
num=0
|
| 274 |
for sku in skus:
|
287 |
for sku in skus:
|
| 275 |
data['IdList.Id.%d' % (num + 1)] = sku
|
288 |
data['IdList.Id.%d' % (num + 1)] = sku
|
| 276 |
num+=1
|
289 |
num+=1
|
| 277 |
data['IdType'] = 'ASIN'
|
290 |
data['IdType'] = 'ASIN'
|
| 278 |
print data
|
- |
|
| 279 |
return self.make_request(data,'GetMatchingProductForId')
|
291 |
return self.make_request(data,'GetMatchingProductForId')
|
| 280 |
|
292 |
|
| 281 |
def get_competitive_pricing_for_asin(self, marketplaceid, asins):
|
293 |
def get_competitive_pricing_for_asin(self, marketplaceid, asins):
|
| 282 |
data = dict(SellerId=self.merchant_id, MarketplaceId=marketplaceid)
|
294 |
data = dict(SellerId=self.merchant_id, MarketplaceId=marketplaceid)
|
| 283 |
num=0
|
295 |
num=0
|
| 284 |
for asin in asins:
|
296 |
for asin in asins:
|
| 285 |
data['ASINList.ASIN.%d' % (num + 1)] = asin
|
297 |
data['ASINList.ASIN.%d' % (num + 1)] = asin
|
| 286 |
num+=1
|
298 |
num+=1
|
| 287 |
return self.make_request(data,'GetLowestOfferListingsForASIN')
|
299 |
return self.make_request(data,'GetLowestOfferListingsForASIN')
|
| 288 |
|
300 |
|
| - |
|
301 |
def get_matching_product(self, marketplaceid, asins):
|
| - |
|
302 |
data = dict(SellerId=self.merchant_id, MarketplaceId=marketplaceid)
|
| - |
|
303 |
num=0
|
| - |
|
304 |
for asin in asins:
|
| - |
|
305 |
data['ASINList.ASIN.%d' % (num + 1)] = asin
|
| - |
|
306 |
num+=1
|
| - |
|
307 |
return self.make_request(data,'GetMatchingProduct')
|
| - |
|
308 |
|
| 289 |
|
309 |
|
| 290 |
|
310 |
|
| 291 |
def main():
|
311 |
def main():
|
| 292 |
p = Products("AKIAII3SGRXBJDPCHSGQ", "B92xTbNBTYygbGs98w01nFQUhbec1pNCkCsKVfpg", "AF6E3O0VE0X4D")
|
312 |
p = Products("AKIAII3SGRXBJDPCHSGQ", "B92xTbNBTYygbGs98w01nFQUhbec1pNCkCsKVfpg", "AF6E3O0VE0X4D")
|
| 293 |
print p.get_competitive_pricing_for_asin("A21TJRUUN4KGV", ["B0168L23VS", "B017LRFNBK", "B01B7LZS8O", "B01CTWJIX6", "B01BHWRDVS", "B015J6B94U", "B015U5MBVA", "B01ALFQM82", "B0188ZHVZU", "B01CZPKANO", "B018K47ZK0", "B01BIYAXGW", "B01AUXJYMQ", "B01AI57N6K", "B01DY912SM", "B0119F11PW", "B0191UMYV2", "B017G6BPZY", "B01DDE8U88", "B01BGMMJZO"])
|
313 |
print p.get_matching_product("A21TJRUUN4KGV", ["B016QBT87W","B0168L23VS"])
|
| 294 |
|
314 |
|
| 295 |
if __name__=='__main__':
|
315 |
if __name__=='__main__':
|
| 296 |
main()
|
316 |
main()
|