Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
11933 kshitij.so 1
from elixir import *
2
from shop2020.config.client.ConfigClient import ConfigClient
3
from shop2020.clients.CatalogClient import CatalogClient
4
from shop2020.model.v1.catalog.impl import DataService
5
from shop2020.model.v1.catalog.impl.DataService import PrivateDealsPriceComparison, PrivateDeals, Amazonlisted, \
6
SnapdealItem, FlipkartItem
7
from shop2020.model.v1.catalog.script import FlipkartScraper, AmazonScraper
8
from operator import itemgetter
9
import urllib2
10
import time
11
import simplejson as json
12
from datetime import datetime
13
 
14
 
15
config_client = ConfigClient()
16
host = config_client.get_property('staging_hostname')
17
DataService.initialize(db_hostname=host)
18
 
19
scrapedInfo = []
20
scraperFk = FlipkartScraper.FlipkartScraper()
21
scraperAmazon = AmazonScraper.AmazonScraper()
22
 
23
class __ScrapingInfo:
24
    def __init__(self,itemId, dealPrice, saholicPrice, sdPrice, fkPrice, amazonPrice, supc, fsn, asin):
25
        self.itemId = itemId
26
        self.dealPrice = dealPrice
27
        self.saholicPrice = saholicPrice
28
        self.sdPrice = sdPrice
29
        self.fkPrice = fkPrice
30
        self.amazonPrice = amazonPrice
31
        self.supc = supc
32
        self.fsn = fsn
33
        self.asin = asin
34
 
35
def getAllActivePDFromMaster():
36
    catalog_client = CatalogClient().get_client()
37
    allActivePrivateDeals = catalog_client.getAllActivePrivateDeals(None, 0)
38
    return allActivePrivateDeals
39
 
40
def scrapeSnapdeal():
41
    for data in scrapedInfo:
42
        if data.supc is None or len(data.supc)==0:
43
            continue
44
        try:
45
            url="http://www.snapdeal.com/acors/json/gvbps?supc=%s&catId=91&sort=sellingPrice"%(data.supc)
46
            print url
47
            time.sleep(1)
48
            req = urllib2.Request(url)
49
            response = urllib2.urlopen(req)
50
            json_input = response.read()
51
            vendorInfo = json.loads(json_input)
52
            lowestOfferPrice, iterator = (0,)*2
53
            for vendor in vendorInfo:
54
                if iterator == 0:
55
                    lowestOfferPrice = vendor['sellingPrice']
56
                break
57
            data.sdPrice = lowestOfferPrice
58
        except:
59
            continue
60
 
61
def scrapeFlipkart():
62
    for data in scrapedInfo:
63
        if data.fsn is None or len(data.fsn)==0:
64
            continue
65
        try:
66
            url = "http://www.flipkart.com/ps/%s"%(data.fsn)
67
            scraperFk.read(url)
68
            vendorsData = scraperFk.createData()
69
            sortedVendorsData = []
70
            sortedVendorsData = sorted(vendorsData, key=itemgetter('sellingPrice'))
71
            lowestSp, iterator = (0,)*2
72
            for vData in sortedVendorsData:
73
                if iterator == 0:
74
                    lowestSp = vData['sellingPrice']
75
                    data.fkPrice = lowestSp
76
                break
77
        except:
78
            continue    
79
 
80
def scrapeAmazon():
81
    for data in scrapedInfo:
82
        if data.asin is None or len(data.asin)==0:
83
            continue
84
        try:
85
            url = "http://www.amazon.in/gp/offer-listing/%s/ref=olp_sort_ps"%(data.asin)
86
            scraperAmazon.read(url)
87
            lowestSp = scraperAmazon.createData()
88
            data.amazonPrice = lowestSp
89
        except:
90
            continue
91
 
92
def populateScrapingInfo():
93
    for data in scrapedInfo:
94
        amazon = Amazonlisted.get_by(itemId=data.itemId)
95
        snapdeal = SnapdealItem.get_by(item_id=data.itemId)
96
        flipkart = FlipkartItem.get_by(item_id=data.itemId)
97
        if amazon is not None:
98
            data.asin = amazon.asin
99
        if snapdeal is not None:
100
            data.supc = snapdeal.supc
101
        if flipkart is not None:
102
            data.fsn = flipkart.flipkartSerialNumber
103
 
104
def populateOurPrices():
105
    catalog_client = CatalogClient().get_client()
106
    for data in scrapedInfo:
107
        cat_item = catalog_client.getItem(data.itemId)
108
        data.saholicPrice = cat_item.sellingPrice
109
 
110
def commitData():
111
    PrivateDealsPriceComparison.query.delete()
112
    session.commit()
113
    for data in scrapedInfo:
114
        pdComp = PrivateDealsPriceComparison()
115
        pdComp.item_id = data.itemId
116
        pdComp.dealPrice = data.dealPrice
117
        pdComp.saholicPrice = data.saholicPrice
118
        pdComp.sdPrice = data.sdPrice
119
        pdComp.fkPrice = data.fkPrice
120
        pdComp.amazonPrice = data.amazonPrice
12152 kshitij.so 121
        pdComp.asin = data.asin
122
        pdComp.fsn = data.fsn
123
        pdComp.supc = data.supc
11933 kshitij.so 124
        pdComp.lastProcessedTimestamp = datetime.now()
125
    session.commit()
126
 
127
 
128
def main():
129
    privateDeals = getAllActivePDFromMaster()
130
    global scrapedInfo
131
    for itemId in privateDeals.iterkeys():
132
        temp = __ScrapingInfo(itemId,privateDeals.get(itemId).dealPrice,None,None,None,None,None,None,None )
133
        scrapedInfo.append(temp)
134
    privateDeals = {}
135
    populateScrapingInfo()
136
    scrapeSnapdeal()
137
    scrapeFlipkart()
138
    scrapeAmazon()
139
    populateOurPrices()
140
    commitData()
141
 
142
 
143
 
144
if __name__=='__main__':
145
    main()