def getFlashVars(): cookie = common.mechanizeLogin() if not cookie: return False url = common.BASE_URL + '/gp/deal/ajax/getNotifierResources.html' showpage = json.loads(common.getURL(url, useCookie=cookie)) if not showpage: Dialog.notification(common.__plugin__, Error({'errorCode': 'invalidrequest', 'message': 'getFlashVars'}), xbmcgui.NOTIFICATION_ERROR) return False values = {'asin': common.args.asin, 'deviceTypeID': 'AOAGZA014O5RE', 'userAgent': common.UserAgent} values.update(showpage['resourceData']['GBCustomerData']) if 'customerId' not in values: Dialog.notification(common.getString(30200), common.getString(30210), xbmcgui.NOTIFICATION_ERROR) return False values['deviceID'] = common.gen_id() rand = 'onWebToken_' + str(random.randint(0, 484)) pltoken = common.getURL(common.BASE_URL + "/gp/video/streaming/player-token.json?callback=" + rand, useCookie=cookie) try: values['token'] = re.compile('"([^"]*).*"([^"]*)"').findall(pltoken)[0][1] except: Dialog.notification(common.getString(30200), common.getString(30201), xbmcgui.NOTIFICATION_ERROR) return False return values
def new_plot(self): params = bottle.request.params id_ = gen_id() comment = params.comment with self.conn: self.conn.execute(r'INSERT INTO plots VALUES(?,?)', (id_, comment)) return {'id': id_}
def main(): parser = argparse.ArgumentParser() parser.add_argument('--comment', default='') parser.add_argument('log') args = parser.parse_args() id_ = gen_id() path = os.path.abspath(args.log) conn = connect_db() try: with conn: conn.execute( r'INSERT INTO logs VALUES(?,?,?)', (id_, path, args.comment)) except sqlite3.IntegrityError: sys.exit('{:s} is already registered'.format(path))
def GETFLASHVARS(pageurl): cookie = common.mechanizeLogin() showpage = common.getURL(pageurl, useCookie=cookie) common.WriteLog(showpage, 'flashvars', 'w') if not showpage: Dialog.notification(common.__plugin__, Error('CDP.InvalidRequest'), xbmcgui.NOTIFICATION_ERROR) return False values = {} search = {'asin' : '"pageAsin":"(.*?)"', 'sessionID' : "ue_sid='(.*?)'", 'marketplace': "ue_mid='(.*?)'", 'customer' : '"customerID":"(.*?)"'} if 'var config' in showpage: flashVars = re.compile('var config = (.*?);',re.DOTALL).findall(showpage) flashVars = demjson.decode(unicode(flashVars[0], errors='ignore')) values = flashVars['player']['fl_config']['initParams'] swfUrl = flashVars['player']['fl_config']['playerSwf'] else: for key, pattern in search.items(): result = re.compile(pattern, re.DOTALL).findall(showpage) if result: values[key] = result[0] values['swfUrl'] = 'http://ecx.images-amazon.com/images/G/01/digital/video/webplayer/1.0.379.0/swf/UnboxScreeningRoomClient.swf' for key in values.keys(): if not values.has_key(key): Dialog.notification(common.getString(30200), common.getString(30210), xbmcgui.NOTIFICATION_ERROR) return False values['deviceTypeID'] = 'A324MFXUEZFF7B' #Sony GoogleTV unenc Flash #values['deviceTypeID'] = 'A13Q6A55DBZB7M' #enc Flash #values['deviceTypeID'] = 'A35LWR0L7KC0TJ' #Logitech GoogleTV unenc Flash #values['deviceTypeID'] = 'A63V4FRV3YUP9' #enc Silverlight values['userAgent'] = "GoogleTV 162671" values['deviceID'] = common.hmac.new(common.UserAgent, common.gen_id(), hashlib.sha224).hexdigest() rand = 'onWebToken_' + str(random.randint(0,484)) pltoken = common.getURL(common.BASE_URL + "/gp/video/streaming/player-token.json?callback=" + rand, useCookie=cookie) try: values['token'] = re.compile('"([^"]*).*"([^"]*)"').findall(pltoken)[0][1] except: Dialog.notification(common.getString(30200), common.getString(30201), xbmcgui.NOTIFICATION_ERROR) return False return values
def new_series(self, plot): params = bottle.request.params id_ = gen_id() log = params.log key = params.key color = params.color yaxis = params.yaxis try: color = int(color if not color == '' else 0) except ValueError: return bottle.HTTPResponse(status=400) try: yaxis = int(yaxis if not yaxis == '' else 0) except ValueError: return bottle.HTTPResponse(status=400) try: with self.conn: cur = self.conn.cursor() cur.execute(r'SELECT null FROM plots WHERE id=?', (plot, )) if cur.fetchone() is None: return bottle.HTTPResponse(status=400) cur.execute(r'SELECT null FROM logs WHERE id=?', (log, )) if cur.fetchone() is None: return bottle.HTTPResponse(status=400) cur.execute(r'INSERT INTO series VALUES(?,?,?,?,?,?)', (id_, plot, log, key, color, yaxis)) except sqlite3.IntegrityError: return bottle.HTTPResponse(status=400) return {'id': id_}
def getFlashVars(url): cookie = common.mechanizeLogin() showpage = common.getURL(url, useCookie=cookie) #common.WriteLog(showpage, 'flashvars', 'w') if not showpage: Dialog.notification(common.__plugin__, Error('CDP.InvalidRequest'), xbmcgui.NOTIFICATION_ERROR) return False values = {} search = {'asin' : '"pageAsin":"(.*?)"', 'sessionID' : "ue_sid='(.*?)'", 'marketplace': "ue_mid='(.*?)'", 'customer' : '"customerID":"(.*?)"'} if 'var config' in showpage: flashVars = re.compile('var config = (.*?);',re.DOTALL).findall(showpage) flashVars = json.loads(unicode(flashVars[0], errors='ignore')) values = flashVars['player']['fl_config']['initParams'] else: for key, pattern in search.items(): result = re.compile(pattern, re.DOTALL).findall(showpage) if result: values[key] = result[0] for key in values.keys(): if not values.has_key(key): Dialog.notification(common.getString(30200), common.getString(30210), xbmcgui.NOTIFICATION_ERROR) return False values['deviceTypeID'] = 'AOAGZA014O5RE' values['userAgent'] = common.UserAgent values['deviceID'] = common.hmac.new(common.UserAgent, common.gen_id(), hashlib.sha224).hexdigest() rand = 'onWebToken_' + str(random.randint(0,484)) pltoken = common.getURL(common.BASE_URL + "/gp/video/streaming/player-token.json?callback=" + rand, useCookie=cookie) try: values['token'] = re.compile('"([^"]*).*"([^"]*)"').findall(pltoken)[0][1] except: Dialog.notification(common.getString(30200), common.getString(30201), xbmcgui.NOTIFICATION_ERROR) return False return values
# 'library/Purchase' # 'library/GetRecentPurchases' # # 'link/LinkDevice' # 'link/UnlinkDevice' # 'link/RegisterClient' # 'licensing/Release' # # 'usage/UpdateStream' # 'usage/ReportLogEvent' # 'usage/ReportEvent' # 'usage/GetServerConfig' #=============================================================================== MAX = 20 deviceID = common.gen_id() #Android id: A2W5AJPLW5Q6YM, A1PY8QQU9P0WJV, A1MPSLFC7L5AFK // fmw:{AndroidSDK}-app:{AppVersion} #deviceTypeID = 'A13Q6A55DBZB7M' #WEB Type #firmware = 'fmw:15-app:1.1.19' #Android #firmware = 'fmw:10-app:1.1.23' deviceTypeID = 'A3VN4E5F7BBC7S' #Roku firmware = 'fmw:045.01E01164A-app:4.7' #deviceTypeID = 'A63V4FRV3YUP9' #firmware = '1' format = 'json' PARAMETERS = '?firmware='+firmware+'&deviceTypeID='+deviceTypeID+'&deviceID='+deviceID+'&format='+format def BUILD_BASE_API(MODE,HOST=common.ATV_URL + '/cdp/'): return HOST+MODE+PARAMETERS
# # 'link/LinkDevice' # 'link/UnlinkDevice' # 'link/RegisterClient' # 'licensing/Release' # # 'usage/UpdateStream' # 'usage/ReportLogEvent' # 'usage/ReportEvent' # 'usage/GetServerConfig' # =============================================================================== PARAMETERS = { "firmware": common.FIRMWARE, "deviceTypeID": common.DEVICETYPE_ID, "deviceID": common.gen_id(), "format": "json" } PARAMETERS = '?' + urllib.urlencode(PARAMETERS) def BUILD_BASE_API(MODE, HOST=common.ATV_URL + '/cdp/'): return HOST + MODE + PARAMETERS def getList(ContentType=False, start=0, isPrime=True, NumberOfResults=False, OrderBy='MostPopular', version=2,
# 'library/GetRecentPurchases' # # 'link/LinkDevice' # 'link/UnlinkDevice' # 'link/RegisterClient' # 'licensing/Release' # # 'usage/UpdateStream' # 'usage/ReportLogEvent' # 'usage/ReportEvent' # 'usage/GetServerConfig' # =============================================================================== PARAMETERS = {"firmware": common.FIRMWARE, "deviceTypeID": common.DEVICETYPE_ID, "deviceID": common.gen_id(), "format": "json"} PARAMETERS = '?' + urllib.urlencode(PARAMETERS) def BUILD_BASE_API(MODE, HOST=common.ATV_URL + '/cdp/'): return HOST + MODE + PARAMETERS def getList(ContentType=False, start=0, isPrime=True, NumberOfResults=False, OrderBy='MostPopular', version=2, AsinList=False, catalog='Browse', asin=False): BROWSE_PARAMS = '&StartIndex=' + str(start) if NumberOfResults: BROWSE_PARAMS += '&NumberOfResults=' + str(NumberOfResults) if ContentType: BROWSE_PARAMS += '&ContentType=' + ContentType BROWSE_PARAMS += '&OrderBy=' + OrderBy
# 'library/Purchase' # 'library/GetRecentPurchases' # # 'link/LinkDevice' # 'link/UnlinkDevice' # 'link/RegisterClient' # 'licensing/Release' # # 'usage/UpdateStream' # 'usage/ReportLogEvent' # 'usage/ReportEvent' # 'usage/GetServerConfig' #=============================================================================== MAX = 20 deviceID = common.gen_id() #Android id: A2W5AJPLW5Q6YM, A1PY8QQU9P0WJV, A1MPSLFC7L5AFK // fmw:{AndroidSDK}-app:{AppVersion} #deviceTypeID = 'A13Q6A55DBZB7M' #WEB Type #firmware = 'fmw:15-app:1.1.19' #Android #firmware = 'fmw:10-app:1.1.23' deviceTypeID = 'A3VN4E5F7BBC7S' #Roku firmware = 'fmw:045.01E01164A-app:4.7' #deviceTypeID = 'A63V4FRV3YUP9' #firmware = '1' format = 'json' PARAMETERS_STD = '?firmware='+firmware+'&deviceTypeID='+deviceTypeID+'&deviceID='+deviceID+'&format='+format PARAMETERS_CAT = '?firmware=fmw:15-app:1.1.23&deviceTypeID=A1MPSLFC7L5AFK&deviceID='+deviceID+'&format='+format
def simulate(sim_data): scrip = sim_data['SC'] trans = sim_data['TP'] capt = sim_data['CP'] sl = sim_data['SL'] tar1 = sim_data['T1'] tar2 = sim_data['T2'] start = sim_data['TS'] end_time = sim_data['EN'] sim_name = sim_data['NM'] sim_type = sim_data['ST'] str_id = sim_data['ID'] data = sim_data['DATA'] sl_val = 0 t1_val = 0 t2_val = 0 t1_vol = 0 t2_vol = 0 vol = 0 results = {} entry = 0 status = "" end = c.get_timestamp(c.get_only_date(start)+" "+end_time) sim_id = c.gen_id("sim_tracker","sim_id") c.pr("I","Starting simulation for [SIM ID -> "+sim_id+"] [Scrip -> "+scrip +"] [Type -> "+sim_type+"] [Transaction -> "+trans+"] [Entry Point -> "+c.get_date(start)+"] [Capital -> "+str(capt)+"] [T1 -> "+str(tar1)+"%] [T2 -> "+str(tar2)+"%] [SL -> "+str(sl)+"%]",1) #Step 1 Load the Scrip #data = c.fetch_scrip_data(scrip,start,end) #data = c.fetch_scrip_cache(cdata,start,end) tkeys = list(data.keys()) tkeys.sort() tctr = 0 for tk in tkeys: if tk == start: break else: tctr += 1 tkeys = tkeys[tctr:] #Step 2 Take entry at the entry point at average price of first data candle entry = tkeys[0] ep_data = data[tkeys[0]] #Removing key which corresponds to EP tkeys.pop(0) avg_ent = round((ep_data['open'] + ep_data['close'] + ep_data['high'] + ep_data['low'])/4,1) #Step 3 Calulate the volume which can be undertaken vol = math.floor(capt/avg_ent) #Step 4 Calculate SL/T1/T2 after entry if trans == "SELL": sl_val = round(avg_ent + (round((avg_ent * sl),1)),1) t1_val = round(avg_ent - (round((avg_ent * tar1),1)),1) t2_val = round(avg_ent - (round((avg_ent * tar2),1)),1) if trans == "BUY": sl_val = round(avg_ent - (round((avg_ent * sl),1)),1) t1_val = round(avg_ent + (round((avg_ent * tar1),1)),1) t2_val = round(avg_ent + (round((avg_ent * tar2),1)),1) #Calculate Volume split t1_vol = math.ceil(vol * 0.7) t2_vol = vol - t1_vol #Step 4.1 Record the simulation data in DB sim_query = "INSERT INTO sim_tracker VALUES ('"+sim_id+"','"+str_id+"','"+scrip+"','"+sim_type+"','"+trans+"',"+str(capt)+","+str(tar1)+","+str(tar2)+","+str(sl)+","+str(t1_vol)+","+str(t2_vol)+",'"+start+"','"+end+"')" s.execQuery(sim_query) #c.pr("I","First Candle [Open "+str(ep_data['open'])+"] [Low "+str(ep_data['low'])+"] [High "+str(ep_data['high'])+"] [Close "+str(ep_data['close'])+"]",1) c.pr("I","[EP AVG(OLHC) "+str(avg_ent)+"] [SL "+str(sl_val)+"] [T1 "+str(t1_val)+"] [T2 "+str(t2_val)+"] [Vol "+str(vol)+"] [T1 Vol "+str(t1_vol)+"] [T2 Vol "+str(t2_vol)+"]" ,1) #Step 5 Loop through time keys and check for condition for key in tkeys: #Check if there is volume to sell if vol: ep_data = data[key] avg_prc = round((ep_data['open'] + ep_data['close'] + ep_data['high'] + ep_data['low'])/4,1) if trans == "SELL": #Check if this did hit SL if sl_val >= avg_prc: if t1_vol: if avg_prc <= t1_val: #c.pr("I","Volume Is At "+str(vol)+" On "+c.get_time(key)+" AVG Price "+str(avg_prc)+ " T1 Hit -> Yes" ,1) results[key] = {} results[key]['EN'] = avg_ent results[key]['EX'] = avg_prc results[key]['VL'] = t1_vol results[key]['ST'] = "T1H" vol = vol - t1_vol t1_vol = 0 if t1_vol == 0 and t2_vol: if avg_prc <= t2_val: #c.pr("I","Volume Is At "+str(vol)+" On "+c.get_time(key)+" AVG Price "+str(avg_prc)+ " T2 Hit -> Yes" ,1) if key in results: results[key]['VL'] += t2_vol results[key]['ST'] = "T2H" vol = vol - t2_vol t2_vol = 0 else: results[key] = {} results[key]['EN'] = avg_ent results[key]['EX'] = avg_prc results[key]['VL'] = t2_vol results[key]['ST'] = "T2H" vol = vol - t2_vol t2_vol = 0 else: #c.pr("I","Volume Is At "+str(vol)+" On "+c.get_time(key)+" AVG Price "+str(avg_prc)+ " SL Hit -> Yes" ,1) results[key] = {} results[key]['EN'] = avg_ent results[key]['EX'] = avg_prc results[key]['VL'] = vol results[key]['ST'] = "SLH" vol = 0 #exit() if trans == "BUY": if sl_val <= avg_prc: if t1_vol: if avg_prc >= t1_val: #c.pr("I","Volume Is At "+str(vol)+" On "+c.get_time(key)+" AVG Price "+str(avg_prc)+ " T1 Hit -> Yes" ,1) results[key] = {} results[key]['EN'] = avg_ent results[key]['EX'] = avg_prc results[key]['VL'] = t1_vol results[key]['ST'] = "T1H" vol = vol - t1_vol t1_vol = 0 if t1_vol == 0 and t2_vol: if avg_prc >= t2_val: #c.pr("I","Volume Is At "+str(vol)+" On "+c.get_time(key)+" AVG Price "+str(avg_prc)+ " T2 Hit -> Yes" ,1) if key in results: results[key]['VL'] += t2_vol results[key]['ST'] = "T2H" vol = vol - t2_vol t2_vol = 0 else: results[key] = {} results[key]['EN'] = avg_ent results[key]['EX'] = avg_prc results[key]['VL'] = t2_vol results[key]['ST'] = "T2H" vol = vol - t2_vol t2_vol = 0 else: #c.pr("I","Volume Is At "+str(vol)+" On "+c.get_time(key)+" AVG Price "+str(avg_prc)+ " SL Hit -> Yes" ,1) results[key] = {} results[key]['EN'] = avg_ent results[key]['EX'] = avg_prc results[key]['VL'] = vol results[key]['ST'] = "SLH" vol = 0 else: c.pr("I","Ending Simulations As Volume is 0",1) break #If the volume is still there at 3:10 square off at 3:10 if vol: #c.pr("I","Squaring of Position At 03:10 PM",1) ed_data = data[key] avg_ext = round((ed_data['open'] + ed_data['close'] + ed_data['high'] + ed_data['low'])/4,1) results[key] = {} results[key]['EN'] = avg_ent results[key]['EX'] = avg_ext results[key]['VL'] = vol results[key]['ST'] = "SQF" #Step 6. Display Result c.pr("I","Simulation Resuts",1) for res in results: PL = 0 if trans == "BUY": PL = round(((results[res]['EX'] - results[res]['EN']) * results[res]['VL']),1) if trans == "SELL": PL = round(((results[res]['EN'] - results[res]['EX']) * results[res]['VL']),1) c.pr("I","[ET -> "+c.get_time(entry)+"] [EP -> "+str(results[res]['EN'])+"] [ET -> "+c.get_time(res)+"] [XP -> "+str(results[res]['EX'])+"] [Volume -> "+str(results[res]['VL'])+"] [P/L -> "+str(PL)+"] [Status -> "+results[res]['ST']+"]",1) res_query = "INSERT INTO sim_results VALUES ('"+sim_id+"',"+str(start)+","+res+","+str(results[res]['EN'])+","+str(results[res]['EX'])+","+str(results[res]['VL'])+","+str(PL)+",'"+results[res]['ST']+"')" s.execQuery(res_query) c.pr("I","--------------------------------------------------------",1) return