Subversion Repositories SmartDukaan

Rev

Rev 21319 | Rev 21322 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
13569 amit.gupta 1
'''
2
Created on Jan 15, 2015
3
 
4
@author: amit
5
'''
13690 amit.gupta 6
from BeautifulSoup import BeautifulSoup
13721 amit.gupta 7
from datetime import datetime, date, timedelta
13569 amit.gupta 8
from dtr import main
21319 amit.gupta 9
from dtr.dao import AffiliateInfo, Order, SubOrder, FlipkartAffiliateInfo, obj
13690 amit.gupta 10
from dtr.main import getBrowserObject, getStore, ParseException, ungzipResponse, \
14398 amit.gupta 11
    Store as MStore, sourceMap, tprint
21246 amit.gupta 12
from dtr.storage.DataService import Clicks, Users, FlipkartOrders, OrdersRaw
16209 amit.gupta 13
from dtr.utils import utils
21310 amit.gupta 14
from dtr.utils.utils import fetchResponseUsingProxy, todict, getSkuData, \
21319 amit.gupta 15
    ORDER_PLACED, readSSh
15539 amit.gupta 16
from elixir import *
13690 amit.gupta 17
from pprint import pprint
18
from pymongo.mongo_client import MongoClient
21310 amit.gupta 19
from urlparse import urlparse
17238 amit.gupta 20
import StringIO
21
import csv
13690 amit.gupta 22
import hashlib
13658 manas 23
import importlib
13690 amit.gupta 24
import json
25
import mechanize
14412 amit.gupta 26
import pymongo
13658 manas 27
import re
21310 amit.gupta 28
import time
14338 amit.gupta 29
import traceback
13658 manas 30
import urllib
18156 amit.gupta 31
import urllib2
17238 amit.gupta 32
import zipfile
13658 manas 33
USERNAME='saholic1@gmail.com'
34
PASSWORD='spice@2020'
21264 amit.gupta 35
ORDER_TRACK_URL='https://www.flipkart.com/order_details?src=or&pr=1&type=physical&'
17238 amit.gupta 36
AFFILIATE_URL='https://affiliate.flipkart.com/'
37
AFFILIATE_LOGIN_URL='https://affiliate.flipkart.com/a_login'
38
AFF_REPORT_URL = "https://affiliate.flipkart.com/downloads/a_downloadRequest?type=OrdersReport&parameters=%s"
39
AFF_DOWNLOAD_URL="https://affiliate.flipkart.com/downloads/file?id=%s"
13690 amit.gupta 40
AFF_STATUS_CANCELLED='cancelled'
41
AFF_STATUS_APPROVED='approved'
42
AFF_STATUS_DISAPPROVED='disapproved'
43
AFF_STATUS_PENDING='pending'
17238 amit.gupta 44
statuses = [AFF_STATUS_CANCELLED, AFF_STATUS_APPROVED, AFF_STATUS_DISAPPROVED,AFF_STATUS_PENDING ]
15539 amit.gupta 45
categoryMap = {3:"Mobiles", 5:"Tablets"}
21269 amit.gupta 46
mobileAgent = 'Mozilla/5.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/600.1.3 (KHTML, like Gecko) Version/8.0 Mobile/12A4345d Safari/600.1.4'
13658 manas 47
 
21266 amit.gupta 48
headers = { 
21269 amit.gupta 49
            'User-Agent':'Mozilla/5.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/600.1.3 (KHTML, like Gecko) Version/8.0 Mobile/12A4345d Safari/600.1.4',
21266 amit.gupta 50
            'Accept' : 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',      
51
            'Accept-Language' : 'en-US,en;q=0.8',                     
52
            'Accept-Charset' : 'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
53
            'Connection':'keep-alive',
54
            'Accept-Encoding' : 'gzip,deflate,sdch'
55
        }
56
 
21319 amit.gupta 57
TRACK_URLS = ['https://www.flipkart.com/api/1/self-serve/orders?pageNum=1&link=myAccounts', 'https://www.flipkart.com/api/1/self-serve/orders?pageNum=2&link=myAccounts', 'https://www.flipkart.com/api/1/self-serve/orders?pageNum=3&link=myAccounts']
21273 amit.gupta 58
TRACK_HEADERS = {
59
        "sn":"2.VIBAC8BD9D21024F649B0482FAC385814A.SIE6C5F25D78974A5EB850D89167D52009.VSE7C76F85C2EE463786F89407CA46CA31.1492756338",
60
        "Connection":"keep-alive",
61
        "Referer":"https://www.flipkart.com/rv/orders?link=myAccounts",
62
        "cache-control":"no-cache",
63
        "Accept":"/",
64
        "Accept-Language":"en-US,en;q=0.8",
65
        "content-type":"application/json",
66
        "User-Agent":"Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML:like Gecko) Chrome/48.0.2564.23 Mobile Safari/537.36",
67
        "flipkart_secure":"true",
68
        "sc":"",
69
        "Accept-Encoding":"gzip:deflate:sdch:br",
70
        "x-user-agent":"Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML:like Gecko) Chrome/48.0.2564.23 Mobile Safari/537.36 FKUA/msite/0.0.1/msite/Mobile,Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML:like Gecko) Chrome/48.0.2564.23 Mobile Safari/537.36 FKUA/msite/0.0.1/msite/Mobile",
71
        "pragma":"no-cache",
72
        "issecureresource":"true"
73
}
74
 
75
 
13781 amit.gupta 76
class Store(MStore):
13658 manas 77
    OrderStatusMap = {
21319 amit.gupta 78
                      main.Store.ORDER_PLACED : ['approval', 'processing', 'shipping', 'your order has been placed.'],
14679 amit.gupta 79
                      main.Store.ORDER_DELIVERED : ['your item has been delivered'],
14680 amit.gupta 80
                      main.Store.ORDER_SHIPPED : ['in transit', 'shipment yet to be delivered'],
81
                      main.Store.ORDER_CANCELLED : ['shipment is returned', 'your item has been returned', 'your shipment has been cancelled', 'your shipment has been cancelled.']
13658 manas 82
 
83
                      }
84
    def __init__(self,store_id):
85
        client = MongoClient('mongodb://localhost:27017/')
86
        self.db = client.dtr
87
        super(Store, self).__init__(store_id)
88
 
13569 amit.gupta 89
    def getName(self):
90
        return "flipkart"
91
 
21310 amit.gupta 92
    def _parseJSON(self,merchantOrder, transaction):
21319 amit.gupta 93
        merchantOrder = obj(merchantOrder)
21310 amit.gupta 94
        update = False
21319 amit.gupta 95
        if not hasattr(merchantOrder, 'subOrders'):
21310 amit.gupta 96
            merchantOrder.placedOn = transaction['orderDate'] 
97
            merchantOrder.paidAmount = transaction['amount']
98
            subOrders = []
99
            merchantOrder.subOrders = subOrders
100
            for shipment in transaction['groupedItems']:
101
                for item in shipment:
21319 amit.gupta 102
                    productUrl = "https://www.flipkart.com" + item['itemMetadata']['url']
21320 amit.gupta 103
                    merchantsubOrder = SubOrder(" ".join([item['title'], item['itemMetadata']['color']]), productUrl, merchantOrder.placedOn, item['amount'],MStore.ORDER_PLACED, item['quantity'])
21310 amit.gupta 104
                    merchantsubOrder.merchantSubOrderId = item['orderItemId']
105
                    merchantsubOrder.imgUrl  = item['itemMetadata']['images']['1000x1000']
106
                    productCode=productUrl.split("pid=")[1]
107
                    merchantsubOrder.productCode = productCode
108
                    merchantsubOrder.merchantSubOrderId = item['orderItemId']
21319 amit.gupta 109
                    merchantsubOrder.amount = item['itemSellingPrice']*merchantsubOrder.quantity
110
                    merchantsubOrder.unitPrice = item['itemSellingPrice']
21310 amit.gupta 111
                    merchantsubOrder.detailedStatus = item['desktopSubStatus']
112
                    subOrders.append(merchantsubOrder)
113
        else:
114
            update = True
115
            for shipment in transaction['groupedItems']:
116
                for item in shipment:
117
                    subOrder = self._isSubOrderActive(merchantOrder,  item['orderItemId'])
118
                    if subOrder:
119
                        subOrder.detailedStatus = item['desktopSubStatus']
120
 
121
        self.populateDerivedFields(merchantOrder, update)
21319 amit.gupta 122
        self._saveToOrder(todict(merchantOrder))
21310 amit.gupta 123
 
124
    def _getActiveOrders(self, searchMap={}, collectionMap={}):
125
        collection = self.db.merchantOrder
126
        searchMap = dict(searchMap.items()+ {"closed": False, "storeId" : self.store_id}.items()) 
127
        #collectionMap =  dict(collectionMap.items() + {"orderSuccessUrl":1, "orderId":1,"subOrders":1, "placedOn":1, "orderTracking"}.items())
128
        stores = collection.find(searchMap)
129
        return [store for store in stores]    
130
 
131
 
21273 amit.gupta 132
    def trackOrdersForUser(self, userId, url, rawHtml):
133
        rawHtml = re.sub(r'[^\x00-\x7F]+',' ', rawHtml)
134
        if url not in TRACK_URLS:
135
            for lis in re.findall('SN:"(.*?)"', rawHtml):
136
                TRACK_HEADERS['sn'] = lis
137
                break
138
            for lis in re.findall('SN:"(.*?)"', rawHtml):
139
                TRACK_HEADERS['User-Agent'] = lis.split(" fkUA")[0]
140
                TRACK_HEADERS['x-user-agent'] = lis
141
                break
21317 amit.gupta 142
 
21318 amit.gupta 143
            if self._getActiveOrders({"createdOnInt":{"$gt":int(time.mktime(datetime.now().timetuple()))- 30*86400}}):
21310 amit.gupta 144
                return {"headers":TRACK_HEADERS, "urls":TRACK_URLS}
145
            else:
146
                return {"headers":TRACK_HEADERS, "urls":[]}
21273 amit.gupta 147
        else:
21310 amit.gupta 148
            jsonObject = json.loads(rawHtml)
149
            #Get only orders less than one month old
21319 amit.gupta 150
            activeOrders = self._getActiveOrders({"createdOnInt":{"$gt":int(time.mktime(datetime.now().timetuple())) - 30*86400}})
21310 amit.gupta 151
            for order in activeOrders:
152
                for transaction in jsonObject['RESPONSE']['orderGranularDetails']:
21319 amit.gupta 153
                    if transaction['orderId'][:-2] == order["merchantOrderId"]:
21310 amit.gupta 154
                        self._parseJSON(order, transaction)
155
                        break
156
 
157
 
158
 
21273 amit.gupta 159
            return 'PARSED_SUCCESS'
160
 
17238 amit.gupta 161
 
162
    def requestDownload(self):
163
    #"https://affiliate.flipkart.com/downloads/a_downloadRequest?type=OrdersReport&parameters=%7B%22filter%22%3A%22approved%22%2C%22till%22%3A%222015-10-03%22%2C%22from%22%3A%222015-04-03%22%7D"
164
        requestReportUrl = "https://affiliate.flipkart.com/downloads/a_downloadRequest?type=OrdersReport&parameters=%s"
165
        br = getBrowserObject()
166
        br.set_debug_responses(True)
167
        br.open(AFFILIATE_URL)
168
        response = br.response()  # copy
169
        #token =  re.findall('window.__FK = "(.*?)"', utils.ungzipResponse(response), re.IGNORECASE)[0]
170
        data = {
171
                    'j_username':'saholic1@gmail.com',
172
                    'j_password':'spice@2020'
173
            }
174
        print utils.ungzipResponse(br.open(AFFILIATE_LOGIN_URL, urllib.urlencode(data)))
175
        till = datetime.strftime(date.today(),"%Y-%m-%d")
176
        start = datetime.strftime(date.today() - timedelta(4), "%Y-%m-%d")
177
        #target = open("dowloadreportids", 'w')
178
        #target.truncate()
179
        for status in statuses:
180
            #try:
181
                data = {"till":till, "from":start, "filter":status}
182
                print json.dumps(data)
183
                request = requestReportUrl%(urllib.quote_plus(json.dumps(data).replace(" ", "")))
184
                print request
185
                response = utils.ungzipResponse(br.open(request))
186
                response = json.loads(response)
187
                print response
188
                if(response['status']=="OK"):
189
                    self.db.flipkartdownloadids.save(response)
190
                else:
191
                    utils.sendmail(['amit.gupta@shop2020.in'], '', "Could not get request data for Flipkart Affiliate downlaod")
192
                    #break 
193
            #except:
194
                utils.sendmail(['amit.gupta@shop2020.in'], '', "Could not get request data for Flipkart Affiliate downlaod due to Internal Server Error")
195
                #break 
196
 
197
 
13690 amit.gupta 198
    def scrapeStoreOrders(self,):
21311 amit.gupta 199
        pass
13690 amit.gupta 200
        orders = self._getActiveOrders()
13721 amit.gupta 201
        for order in orders:
14692 amit.gupta 202
            print "Order", self.store_name, order['orderId']
14398 amit.gupta 203
            try:
204
                closed = True
20421 amit.gupta 205
                url = ORDER_TRACK_URL + urlparse(order['orderSuccessUrl']).query    
21266 amit.gupta 206
                page = fetchResponseUsingProxy(url, headers)
14398 amit.gupta 207
                soup = BeautifulSoup(page,convertEntities=BeautifulSoup.HTML_ENTITIES)
208
 
209
                sections = soup.findAll("div", {"class":"ui-app-card-body"})
210
                sections.pop(1)
13721 amit.gupta 211
 
14398 amit.gupta 212
                mainOrder = soup.find("ul",{"class":"m-bottom p-cart"})
213
                fkSubOrders = mainOrder.findAll("li")
214
 
215
                #remove unwanted list
216
                fkSubOrders.pop(-1)
217
 
218
 
219
                bulk = self.db.merchantOrder.initialize_ordered_bulk_op()
220
                #fetching suborders details
221
                for subOrder in fkSubOrders:
222
                    updateMap = {}
14692 amit.gupta 223
                    ul = subOrder.find("ul")
224
                    if ul is None:
225
                        ul = subOrder.findAll("div", recursive=False)[0].div.div
226
                    orderItems = ul.findAll("div", recursive=False)
14398 amit.gupta 227
                    for orderItem in orderItems:
228
                        closedStatus = False
20422 amit.gupta 229
                        divs = orderItem.findAll('div', recursive=False)
230
                        orderTracking = divs[2]
231
                        merchantSubOrderId = divs[3].get('id')
14398 amit.gupta 232
                        subOrder =  self._isSubOrderActive(order, merchantSubOrderId)
233
                        if subOrder is None:
234
                            break
14460 amit.gupta 235
                        elif subOrder['closed']:
236
                            break
14398 amit.gupta 237
                        findMap = {"orderId": order['orderId'], "subOrders.merchantSubOrderId": merchantSubOrderId}
238
                        orderTrackingDetDiv = divs[3].find('div',{'class':'c-tabs-content m-top active'})
20422 amit.gupta 239
                        cashbackStatus = subOrder.get("cashBackStatus")
20420 amit.gupta 240
                        if orderTrackingDetDiv is not None:
241
                            orderTrackingDet = str(orderTrackingDetDiv.find("div", "tracking-remark").text)
242
                            updateMap["subOrders.$.detailedStatus"] = orderTrackingDet
243
                            tr = orderTracking.findAll("div",{"class":"tap-bullet-area c-tab-trigger"})
244
 
245
                            tr = orderTracking.findAll("div",{"class":"tap-bullet-area c-tab-trigger"})
246
 
247
                            if "approveDetails-ongoing" in str(tr) or "processingDetails-ongoing" in str(tr):
248
                                status=MStore.ORDER_PLACED
249
                            elif "shippingDetails-ongoing" in str(tr):
250
                                status = MStore.ORDER_SHIPPED
251
                            elif "delivery-complete" in str(tr):
252
                                status = MStore.ORDER_DELIVERED
20421 amit.gupta 253
                                if cashbackStatus != Store.CB_NA:
20420 amit.gupta 254
                                    cashbackStatus = Store.CB_APPROVED
255
                                closedStatus = True
256
                            if "dead" in str(tr) or "shippingDetails-returnOngoing" in str(tr) or "shippingDetails-return" in str(tr):
257
                                status = MStore.ORDER_CANCELLED
258
                                closedStatus = True
259
                                if cashbackStatus == Store.CB_PENDING:
260
                                    cashbackStatus = Store.CB_CANCELLED
261
                        else:
262
                            updateMap["subOrders.$.detailedStatus"] = "Refunded"
14398 amit.gupta 263
                            status = MStore.ORDER_CANCELLED
264
                            closedStatus = True
265
                            if cashbackStatus == Store.CB_PENDING:
266
                                cashbackStatus = Store.CB_CANCELLED
20417 amit.gupta 267
                        print "Sub Order Status " + str(status)
14398 amit.gupta 268
 
269
                        updateMap["subOrders.$.cashBackStatus"] = cashbackStatus
270
                        updateMap["subOrders.$.status"] = status
271
                        updateMap["subOrders.$.closed"] = closedStatus
272
                        if closed:
273
                            closed = closedStatus
274
                        bulk.find(findMap).update({'$set' : updateMap})
14692 amit.gupta 275
                bulk.find({'orderId': order['orderId']}).update({'$set':{'closed': closed, 'parseError':False}})
14398 amit.gupta 276
                bulk.execute()            
277
            except:
14692 amit.gupta 278
                self.db.merchantOrder.update({"orderId":order['orderId']}, {"$set":{"parseError":True}})
14847 amit.gupta 279
                tprint("Could not update " + str(order['orderId']) + ' for store ' + self.getName())
14398 amit.gupta 280
                traceback.print_exc()
17238 amit.gupta 281
 
282
    def scrapeAffiliate(self, deltaDays=0):
283
        if deltaDays is None:
284
            deltaDays=0
285
        endDate=date.today() - timedelta(days=1)
286
        startDate = endDate - timedelta(days=deltaDays)
15539 amit.gupta 287
 
17238 amit.gupta 288
        endDate = datetime.strftime(endDate, "%Y-%m-%d")
289
        startDate = datetime.strftime(startDate, "%Y-%m-%d")
17241 amit.gupta 290
        url  = "https://affiliate-api.flipkart.net/affiliate/report/orders/detail/json?startDate=%s&endDate=%s&status=%s&offset=0"
17238 amit.gupta 291
 
292
        for status in statuses:
17241 amit.gupta 293
            nextUrl = url%(startDate, endDate, status)
294
            while nextUrl:
17243 amit.gupta 295
                req = urllib2.Request(nextUrl)
17242 amit.gupta 296
                nextUrl=''
17238 amit.gupta 297
                req.add_header('Fk-Affiliate-Id', 'saholic1g')
298
                req.add_header('Fk-Affiliate-Token', 'a757444e260c46be8c4aeb20352246ac')
299
                resp = urllib2.urlopen(req)
300
                resString = json.loads(resp.read())
301
                orderList = resString["orderList"]
302
                if orderList:
303
                    for order in orderList:
304
                        order['sales'] = int(order['sales']['amount'])
305
                        order['tentativeCommission'] = int(order['tentativeCommission']['amount'])
306
                        subTagId = order.get("affExtParam1")
307
                        userId = None
308
                        email = None
309
                        if subTagId:
310
                            click = session.query(Clicks).filter_by(tag = subTagId).first()
311
                            if click is not None:
312
                                userId= click.user_id 
313
                                user = session.query(Users.email).filter_by(id = userId).first()
314
                                if user is not None:
315
                                    email = user.email
316
 
317
                        flipkartOrder = FlipkartOrders()
318
                        flipkartOrder.subtagId = subTagId
319
                        flipkartOrder.user_id = userId
320
                        flipkartOrder.identifier = order.get("identifier")
321
                        flipkartOrder.email = email
18465 amit.gupta 322
                        flipkartOrder.created = datetime.strptime(order.get("orderDate"), "%d-%m-%Y %H:%M:%S")
17238 amit.gupta 323
                        flipkartOrder.status = order.get("status")
324
                        flipkartOrder.title = order.get("title")
325
                        flipkartOrder.price = order.get("price")
326
                        flipkartOrder.quantity = order.get("quantity")
327
                        flipkartOrder.productCode = order.get("productId")
328
                        flipkartOrder.affiliateOrderItemId = order.get("affiliateOrderItemId")
329
                        flipkartOrder.payOut = order['tentativeCommission']
330
                        flipkartOrder.payOutPercentage = order['commissionRate']
331
                        skuData = getSkuData(2, order.get("productId"))
332
                        if skuData is not None:
333
                            flipkartOrder.catalogId = skuData.get("skuBundleId")
334
                            flipkartOrder.brand = skuData.get("brand")
335
                            flipkartOrder.model = skuData.get("model_name")
336
                            flipkartOrder.category = categoryMap.get(skuData.get("category_id"))
337
                            flipkartOrder.title =skuData.get("source_product_name")
338
 
339
                    session.commit()
17241 amit.gupta 340
                    nextUrl = resString['next']  
13721 amit.gupta 341
 
14412 amit.gupta 342
    def _saveToAffiliate(self, offers):
17238 amit.gupta 343
        collection = self.db.flipkartOrderAffiliateInfo1
344
        count=0
345
        for row in offers:
346
            if count==0:
347
                count += 1
348
                continue
349
            offer = self.covertToObj(row)
350
            collection.save(offer)
351
 
352
    def covertToObj(self,offer):
353
        affiliateorderitemid,title,productid,category,quantity,sales,price,commissionrate,tentativecommission,status,orderdate,saleschannel,customertype,affextparam1, affextparam2  = offer
354
        saleMap = {
355
               "affiliateorderitemid":affiliateorderitemid,
356
                "title":title,
357
                "productid":productid,
358
                "category":category,
359
                "quantity":quantity,
360
                "saleAmount":sales,
361
                "price":price,
362
                "commissionrate":commissionrate,
363
                "payOut":tentativecommission,
364
                "conversionStatus":status,
365
                "saleDate":orderdate,
366
                "saleschannel":saleschannel,
367
                "customertype":customertype,
368
                "affextparam1":affextparam1,
369
                "_id":affiliateorderitemid
370
        }
371
        return saleMap
14412 amit.gupta 372
 
373
 
21312 amit.gupta 374
    def parseOrderRawHtml(self, orderId, subTagId, userId, rawHtml, orderSuccessUrl):
375
        resp= {}
376
        try:
377
            url = ORDER_TRACK_URL + urlparse(orderSuccessUrl).query 
378
            merchantOrderId = re.findall('reference_id=(.*?)&', orderSuccessUrl,re.IGNORECASE)[0]
21310 amit.gupta 379
 
21312 amit.gupta 380
            merchantOrder = Order(orderId, userId, subTagId, self.store_id, orderSuccessUrl)
381
            merchantOrder.closed = False
382
            merchantOrder.merchantOrderId = merchantOrderId
383
            merchantOrder.orderTrackingUrl = url
384
            if self._saveToOrder(todict(merchantOrder)):
385
                resp['result'] = 'ORDER_CREATED'
386
            else:
387
                resp['result'] = 'ORDER_ALREADY_CREATED_IGNORED'
388
 
389
            return resp 
390
        except:
391
            traceback.print_exc()
392
            resp['result'] = 'ORDER_NOT_CREATED'
393
            return resp 
394
 
21310 amit.gupta 395
 
396
 
14617 amit.gupta 397
    def _getStatusFromDetailedStatus(self, detailedStatus):
398
        for key, value in Store.OrderStatusMap.iteritems():
14626 amit.gupta 399
            if detailedStatus.lower() in value:
14617 amit.gupta 400
                return key
14676 amit.gupta 401
        print "Detailed Status need to be mapped", detailedStatus, "Store:", self.store_name
20392 amit.gupta 402
        raise ParseException("_getStatusFromDetailedStatus", "Found new order status" + detailedStatus)           
13658 manas 403
 
404
def _saveToOrderFlipkart(self, order):
405
        collection = self.db.merchantOrder
406
        order = collection.insert(order)
407
 
13690 amit.gupta 408
 
409
 
410
def hex_md5(password):
411
    m = hashlib.md5()
412
    print(m.digest())
413
 
13658 manas 414
def main():
16210 amit.gupta 415
    store = getStore(2)
21319 amit.gupta 416
    store.trackOrdersForUser(30916, "https://www.flipkart.com/api/1/self-serve/orders?pageNum=1&link=myAccounts", readSSh("/home/amit/Downloads/htmldata"))
21246 amit.gupta 417
    #store.scrapeStoreOrders()
13679 manas 418
 
16209 amit.gupta 419
if __name__ == '__main__':
420
        main()
14145 amit.gupta 421