Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
13828 kshitij.so 1
import pymongo
2
from dtr.utils.utils import to_java_date
3
from datetime import datetime
4
from operator import itemgetter
13833 kshitij.so 5
from dtr.utils import FlipkartScraper
13828 kshitij.so 6
 
7
con = None
8
now = datetime.now()
9
print to_java_date(now)
10
scraperFk = FlipkartScraper.FlipkartScraper()
11
 
12
def get_mongo_connection(host='localhost', port=27017):
13
    global con
14
    if con is None:
15
        print "Establishing connection %s host and port %d" %(host,port)
16
        try:
17
            con = pymongo.MongoClient(host, port)
18
        except Exception, e:
19
            print e
20
            return None
21
    return con
22
 
23
def scrapeFlipkart():
24
    flipkartBestSellers = list(get_mongo_connection().Catalog.MasterData.find({'rank':{'$gt':0},'source_id':2}))
25
    for data in flipkartBestSellers:
26
        inStock = 0
13841 kshitij.so 27
        retryCount = 0
13828 kshitij.so 28
        print str(data['identifier'])
13845 kshitij.so 29
        if data['identifier'] is None or len(data['identifier'].strip())==0:
13828 kshitij.so 30
            print "continue"
31
            continue
32
 
33
        url = "http://www.flipkart.com/ps/%s"%(data['identifier'])
13841 kshitij.so 34
        while(retryCount < 3):
35
            try:
36
                vendorsData = scraperFk.read(url)
37
                fetched = True
38
            except Exception as e:
13842 kshitij.so 39
                print "***Retry count ",retryCount 
13841 kshitij.so 40
                retryCount+=1
41
                if retryCount == 3:
42
                    fetched = False
43
                print e
44
        if not fetched:
45
            print "Unable to fetch data after multiple tries.Continue for ",data['identifier']
46
            continue
13828 kshitij.so 47
        sortedVendorsData = []
48
        sortedVendorsData = sorted(vendorsData, key=itemgetter('sellingPrice'))
49
        print "data",sortedVendorsData
50
        lowestSp, iterator = (0,)*2
51
        for vData in sortedVendorsData:
52
            if iterator == 0:
53
                lowestSp = vData['sellingPrice']
54
            break
55
        if lowestSp > 0:
56
            inStock = 1
57
        print lowestSp
58
        print inStock
59
        if lowestSp > 0:
60
            get_mongo_connection().Catalog.MasterData.update({'identifier':data['identifier']}, {'$set' : {'available_price':lowestSp,'updatedOn':to_java_date(now),'in_stock':inStock}}, multi=True)
61
        else:
62
            get_mongo_connection().Catalog.MasterData.update({'identifier':data['identifier']}, {'$set' : {'updatedOn':to_java_date(now),'in_stock':inStock}}, multi=True)
63
        print "+++++++++++++++++++++++++++"
64
 
65
 
66
 
67
 
68
def main():
69
    scrapeFlipkart()
70
 
71
if __name__=='__main__':
72
    main()