Subversion Repositories SmartDukaan

Rev

Rev 20315 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 20315 Rev 20324
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()