Subversion Repositories SmartDukaan

Rev

Rev 16408 | Blame | Compare with Previous | Last modification | View Log | RSS feed

from dtr.utils.utils import fetchResponseUsingProxy, transformUrl
from sys import exit
import json
import traceback
import datetime
import chardet


class PaytmScraper:
    def __init__(self):
        self.count_trials = 0
        self.redirectCount = 0
    
    def read(self, url):
        response_data = ""
        try:
            
            """quick fix,need to add it conf""" 
            
            response_data = fetchResponseUsingProxy(url,  proxy=True)                
            print "Fetched response from paytm for %s" %(url)
            #redirect_url = response.url

        except Exception as e:
            traceback.print_exc()
            print 'ERROR: ', e
            print 'Retrying'
            self.count_trials += 1

            if self.count_trials < 3:
                return self.read(url)

        self.response_data=response_data
        return self.createData()
    
    def createData(self):
        try:
            encoding =  chardet.detect(self.response_data)
            try:
                self.response_data = self.response_data.decode(encoding.get('encoding'))
            except:
                self.response_data = self.response_data.decode('ascii')
            input_json = json.loads(self.response_data)
            offerPrice = float(input_json['offer_price'])
            cod = int(input_json['pay_type_supported'].get('COD'))
            offerUrl = (input_json['offer_url'])
            inStock = (input_json['instock'])
            shareUrl =  input_json['shareurl']
            return {'offerPrice':offerPrice,'codAvailable':cod,'offerUrl':offerUrl,'inStock':inStock, 'shareUrl':shareUrl}
        except:
            return {'offerPrice':0.0,'codAvailable':0,'offerUrl':"",'inStock':False,'shareUrl':None}
            
if __name__ == '__main__':
    scraper = PaytmScraper()
    scraper.read('https://catalog.paytm.com/v1/mobile/product/25735648')