Subversion Repositories SmartDukaan

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
20318 kshitij.so 1
from xml.dom.minidom import parseString
2
import re
3
import urllib
4
import hashlib
5
import hmac
6
import base64
7
from time import strftime, gmtime
8
from requests import request
9
 
10
domain ="http://webservices.amazon.in"
11
uri="/onca/xml"
12
method="GET"
13
 
14
params = {
15
            'Service':'AWSECommerceService',
16
            'AWSAccessKeyId': 'AKIAIRUCTFGTAU6O5SBA',
17
            'AssociateTag': 'wwwinstaprice-21',
18
            'Operation':'ItemSearch',
19
            'SearchIndex':'Electronics',
20
            'Sort':'salesrank',
21
            'Version':'2011-10-01'
22
        }
23
 
24
secret_key = "90AyycyFWbvJqck2yKdA/1Z3uDggR56TkHcPhA6O"
25
 
26
class Asin:
27
    def __init__(self, asin, brand, product_name):
28
        self.asin = asin
29
        self.brand = brand
30
        self.product_name = product_name
31
 
32
def calc_signature(method,request_description):
33
    sig_data = method + '\n' + domain.replace('http://', '').lower() + '\n' + uri + '\n' + request_description
34
    return base64.b64encode(hmac.new(secret_key, sig_data, hashlib.sha256).digest())
35
 
36
def get_timestamp():
37
        return strftime("%Y-%m-%dT%H:%M:%SZ", gmtime())
38
 
39
def get_best_seller_rank(browse_node, page):
40
    params['Timestamp'] = get_timestamp()
41
    params['BrowseNode'] = browse_node
42
    params['ItemPage'] = str(page)
43
    request_description = '&'.join(['%s=%s' % (k, urllib.quote(params[k], safe='-_.~').encode('utf-8')) for k in sorted(params)])
44
    signature = calc_signature(method,request_description)
45
    url = '%s%s?%s&Signature=%s' % (domain, uri, request_description, urllib.quote(signature))
46
    response = request(method, url)
47
    spString = re.sub('<\?.*\?>','',response.text)
48
    spString = "<dom>" + spString + "</dom>"
49
    dom = parseString(spString)
50
    items = dom.getElementsByTagName('Items')
51
    bestsellers = []
52
    for item in items:
53
        for itemDet in item.getElementsByTagName('Item'):
54
            asin =  itemDet.getElementsByTagName('ASIN')[0].firstChild.nodeValue
55
            try:
56
                brand =  itemDet.getElementsByTagName('ItemAttributes')[0].getElementsByTagName('Manufacturer')[0].firstChild.nodeValue
57
            except:
58
                brand = ""
59
            try:
60
                title = itemDet.getElementsByTagName('ItemAttributes')[0].getElementsByTagName('Title')[0].firstChild.nodeValue
61
            except:
62
                title= ""
63
            asin_obj = Asin(asin, brand, title)
64
            bestsellers.append(asin_obj.__dict__)
65
    return bestsellers
66
 
67
if __name__=='__main__':
68
    #mobiles 1389432031
69
    #tablets 1375458031
70
    for i in range(1,11):
71
        print get_best_seller_rank("1375458031", i)
72
        print "=========================="