def __loadRemote(self, inputList, lItem): try: inputList.curr_url = lItem['url'] count = 0 i = 1 maxits = 2 # 1 optimistic + 1 demystified ignoreCache = False demystify = False startUrl = inputList.curr_url #print inputList, lItem while count == 0 and i <= maxits: if i > 1: ignoreCache = True demystify = True # Trivial: url is from known streamer items = self.__parseHtml(inputList.curr_url, '"' + inputList.curr_url + '"', inputList.rules, inputList.skill, inputList.cfg, lItem) count = len(items) # try to find items in html source code if count == 0: referer = '' if lItem['referer']: referer = lItem['referer'] data = common.getHTML(inputList.curr_url, referer, ignoreCache, demystify) if data == '': return False msg = 'Remote URL ' + str(inputList.curr_url) + ' opened' if demystify: msg += ' (demystified)' common.log(msg) if inputList.section != '': section = inputList.section data = self.__getSection(data, section) if lItem['section']: section = lItem['section'] data = self.__getSection(data, section) items = self.__parseHtml(inputList.curr_url, data, inputList.rules, inputList.skill, inputList.cfg, lItem) count = len(items) common.log(' -> ' + str(count) + ' item(s) found') # find rtmp stream #common.log('Find rtmp stream') if count == 0: item = self.__findRTMP(data, startUrl, lItem) if item: items = [] items.append(item) count = 1 # find embedding javascripts #common.log('Find embedding javascripts') if count == 0: item = findJS(data) if item: firstJS = item[0] streamId = firstJS[0] jsUrl = firstJS[1] streamerName = getHostName(jsUrl) jsSource = getHTML(jsUrl, startUrl, True, False) phpUrl = findPHP(jsSource, streamId) if phpUrl: data = getHTML(phpUrl, startUrl, True, True) item = self.__findRTMP(data, phpUrl, lItem) if item: if streamerName: item['title'] = item['title'].replace( 'RTMP', streamerName) items = [] items.append(item) count = 1 # find vcods #common.log('find vcods') if count == 0: vcods = findVCods(data) if vcods: sUrl = vcods[0] cod1 = vcods[1] cod2 = vcods[2] swfUrl = vcods[3] unixTS = str(dt.getUnixTimestamp()) sUrl = sUrl + '?callback=jQuery1707757964063647694_1347894980192&v_cod1=' + cod1 + '&v_cod2=' + cod2 + '&_=' + unixTS tmpData = getHTML(sUrl, urllib.unquote_plus(startUrl), True, False) if tmpData and tmpData.find("Bad Request") == -1: newReg = '"result1":"([^\"]+)","result2":"([^\"]+)"' link = regexUtils.findall(tmpData, newReg) if link: _file = link[0][0] rtmp = link[0][1].replace('\\', '') #.replace('/redirect','/vod') item = CListItem() item['title'] = getHostName( sUrl) + '* - ' + _file item['type'] = 'video' item[ 'url'] = rtmp + ' playPath=' + _file + ' swfUrl=' + swfUrl + ' swfVfy=1 live=true pageUrl=' + startUrl item.merge(lItem) items.append(item) count = 1 # find redirects #common.log('find redirects') if count == 0: red = self.__findRedirect(startUrl, inputList.curr_url) if startUrl == red: common.log(' -> No redirect found') else: common.log(' -> Redirect: ' + red) inputList.curr_url = red common.log( str(len(inputList.items)) + ' items ' + inputList.cfg + ' -> ' + red) startUrl = red if lItem['referer']: lItem['referer'] = red i = 0 i += 1 if count != 0: inputList.items = inputList.items + items except IOError: if common.enable_debug: traceback.print_exc(file=sys.stdout) return False return True
def __parseCommands(self, item, src, convCommands): #common.log('_parseCommands called') # helping function def parseCommand(txt): command = {"command": txt, "params": ""} if txt.find("(") > -1: command["command"] = txt[0:txt.find("(")] command["params"] = txt[len(command["command"]) + 1:-1] return command try: src = src.encode('utf-8') except: pass for convCommand in convCommands: pComm = parseCommand(convCommand) command = pComm["command"] params = pComm["params"] if params.find('@REFERER@'): referer = item['referer'] if not referer: referer = '' params = params.replace('@REFERER@', referer) if command == 'convDate': src = cc.convDate(params, src) elif command == 'convTimestamp': src = cc.convTimestamp(params, src) elif command == 'select': src = cc.select(params, src) if not src: continue elif command == 'smart_unicode': src = enc.smart_unicode(params.strip("'").replace('%s', src)) elif command == 'safeGerman': src = enc.safeGerman(src) elif command == 'safeRegex': src = enc.safeRegexEncoding( params.strip("'").replace('%s', enc.smart_unicode(src))) elif command == 'replaceFromDict': dictName = str(params.strip('\'')) path = os.path.join(common.Paths.dictsDir, dictName + '.txt') if not (os.path.exists(path)): common.log('Dictionary file not found: ' + path) continue src = cc.replaceFromDict(path, src) elif command == 'time': src = time.time() elif command == 'timediff': src = dt.timediff(src, params.strip('\'')) elif command == 'offset': src = cc.offset(params, src) elif command == 'getSource': src = cc.getSource(params, src) elif command == 'getRedirect': src = get_redirected_url(params.strip("'").replace('%s', src)) elif command == 'quote': try: src = urllib.quote( params.strip("'").replace('%s', urllib.quote(src))) except: cleanParams = params.strip("'") cleanParams = cleanParams.replace("%s", src.encode('utf-8')) src = urllib.quote(cleanParams) elif command == 'unquote': src = urllib.unquote(params.strip("'").replace('%s', src)) elif command == 'parseText': src = cc.parseText(item, params, src) elif command == 'getInfo': src = cc.getInfo(item, params, src) elif command == 'decodeBase64': src = cc.decodeBase64(src) elif command == 'decodeRawUnicode': src = cc.decodeRawUnicode(src) elif command == 'replace': src = cc.replace(params, src) elif command == 'replaceRegex': src = cc.replaceRegex(params, src) elif command == 'ifEmpty': src = cc.ifEmpty(item, params, src) elif command == 'isEqual': src = cc.isEqual(item, params, src) elif command == 'ifFileExists': src = cc.ifFileExists(item, params, src) elif command == 'ifExists': src = cc.ifExists(item, params, src) elif command == 'encryptJimey': src = crypt.encryptJimey(params.strip("'").replace('%s', src)) elif command == 'destreamer': src = crypt.destreamer(params.strip("'").replace('%s', src)) elif command == 'unixTimestamp': src = dt.getUnixTimestamp() elif command == 'urlMerge': src = cc.urlMerge(params, src) elif command == 'translate': try: src = common.translate(int(src)) except: pass elif command == 'camelcase': src = enc.smart_unicode(src) src = string.capwords(string.capwords(src, '-')) elif command == 'demystify': print 'demystify' src = crypt.doDemystify(src) print 'after demystify', src elif command == 'random': paramArr = params.split(',') minimum = int(paramArr[0]) maximum = int(paramArr[1]) src = str(random.randrange(minimum, maximum)) elif command == 'debug': common.log('Debug from cfg file: ' + src) elif command == 'divide': paramArr = params.split(',') a = paramArr[0].strip().strip("'").replace('%s', src) a = resolveVariable(a, item) b = paramArr[1].strip().strip("'").replace('%s', src) b = resolveVariable(b, item) if not a or not b: continue a = int(a) b = int(b) try: src = str(a / b) except: pass return src
def __loadRemote(self, inputList, lItem): try: inputList.curr_url = lItem['url'] count = 0 i = 1 maxits = 2 # 1 optimistic + 1 demystified ignoreCache = False demystify = False startUrl = inputList.curr_url #print inputList, lItem while count == 0 and i <= maxits: if i > 1: ignoreCache = True demystify = True # Trivial: url is from known streamer items = self.__parseHtml(inputList.curr_url, '"' + inputList.curr_url + '"', inputList.rules, inputList.skill, inputList.cfg, lItem) count = len(items) # try to find items in html source code if count == 0: referer = '' if lItem['referer']: referer = lItem['referer'] inputList.curr_url = HTMLParser.HTMLParser().unescape(urllib.unquote(inputList.curr_url)) data = common.getHTML(inputList.curr_url, None, referer, ignoreCache, demystify) if data == '': return False msg = 'Remote URL ' + str(inputList.curr_url) + ' opened' if demystify: msg += ' (demystified)' common.log(msg) if inputList.section != '': section = inputList.section data = self.__getSection(data, section) if lItem['section']: section = lItem['section'] data = self.__getSection(data, section) items = self.__parseHtml(inputList.curr_url, data, inputList.rules, inputList.skill, inputList.cfg, lItem) count = len(items) common.log(' -> ' + str(count) + ' item(s) found') # find rtmp stream #common.log('Find rtmp stream') if count == 0: item = self.__findRTMP(data, startUrl, lItem) if item: items = [] items.append(item) count = 1 # find embedding javascripts #common.log('Find embedding javascripts') if count == 0: item = findJS(data) if item: firstJS = item[0] streamId = firstJS[0] jsUrl = firstJS[1] streamerName = getHostName(jsUrl) jsSource = getHTML(jsUrl, None, startUrl, True, False) phpUrl = findPHP(jsSource, streamId) if phpUrl: data = getHTML(phpUrl, None, startUrl, True, True) item = self.__findRTMP(data, phpUrl, lItem) if item: if streamerName: item['title'] = item['title'].replace('RTMP', streamerName) items = [] items.append(item) count = 1 else: red = phpUrl common.log(' -> Redirect: ' + red) inputList.curr_url = red common.log(str(len(inputList.items)) + ' items ' + inputList.cfg + ' -> ' + red) startUrl = red if lItem['referer']: lItem['referer'] = red continue # find vcods #common.log('find vcods') if count == 0: vcods = findVCods(data) if vcods: sUrl = vcods[0] cod1 = vcods[1] cod2 = vcods[2] swfUrl = vcods[3] unixTS = str(dt.getUnixTimestamp()) sUrl = sUrl + '?callback=jQuery1707757964063647694_1347894980192&v_cod1=' + cod1 + '&v_cod2=' + cod2 + '&_=' + unixTS tmpData = getHTML(sUrl, None, urllib.unquote_plus(startUrl), True, False) if tmpData and tmpData.find("Bad Request") == -1: newReg = '"result1":"([^\"]+)","result2":"([^\"]+)"' link = regexUtils.findall(tmpData, newReg) if link: _file = link[0][0] rtmp = link[0][1].replace('\\','') #.replace('/redirect','/vod') item = CListItem() item['title'] = getHostName(sUrl) + '* - ' + _file item['type'] = 'video' item['url'] = rtmp + ' playPath=' + _file + ' swfUrl=' + swfUrl +' swfVfy=1 live=true pageUrl=' + startUrl item.merge(lItem) items.append(item) count = 1 # find redirects #common.log('find redirects') if count == 0: red = self.__findRedirect(startUrl, inputList.curr_url) if startUrl == red: common.log(' -> No redirect found') else: red = HTMLParser.HTMLParser().unescape(red) red = urllib.unquote(red) common.log(' -> Redirect: ' + red) inputList.curr_url = red common.log(str(len(inputList.items)) + ' items ' + inputList.cfg + ' -> ' + red) startUrl = red if lItem['referer']: lItem['referer'] = red i = 0 i += 1 if count != 0: inputList.items = inputList.items + items except IOError: if common.enable_debug: traceback.print_exc(file = sys.stdout) return False return True
def __parseCommands(self, item, src, convCommands): common.log('_parseCommands called') # helping function def parseCommand(txt): command = {"command": txt, "params": ""} if txt.find("(") > -1: command["command"] = txt[0:txt.find("(")] command["params"] = txt[len(command["command"]) + 1:-1] return command for convCommand in convCommands: pComm = parseCommand(convCommand) command = pComm["command"] params = pComm["params"] if params.find('@REFERER@'): referer = item['referer'] if not referer: referer = '' params = params.replace('@REFERER@', referer) if command == 'convDate': src = cc.convDate(params, src) elif command == 'convTimestamp': src = cc.convTimestamp(params, src) elif command == 'select': src = cc.select(params, src) if not src: continue elif command == 'unicode_escape': src = src.decode('unicode-escape') elif command == 'replaceFromDict': dictName = str(params.strip('\'')) path = os.path.join(common.Paths.dictsDir, dictName + '.txt') if not (os.path.exists(path)): common.log('Dictionary file not found: ' + path) continue src = cc.replaceFromDict(path, src) elif command == 'time': src = time.time() elif command == 'timediff': src = dt.timediff(src,params.strip('\'')) elif command == 'offset': src = cc.offset(params, src) elif command == 'getSource': src = cc.getSource(params, src) elif command == 'quote': try: src = urllib.quote(params.strip("'").replace('%s', src),'') except: print (">>>>>>>>>>>>>",src) cleanParams = params.strip("'") cleanParams = cleanParams.replace("%s",src) src = urllib.quote(cleanParams.encode('utf-8'),'') elif command == 'unquote': src = urllib.unquote(params.strip("'").replace('%s', src)) elif command == 'parseText': src = cc.parseText(item, params, src) elif command == 'getInfo': src = cc.getInfo(item, params, src) elif command == 'getXML': src = cc.getInfo(item, params, src, xml=True) elif command == 'getMobile': src = cc.getInfo(item, params, src, mobile=True) elif command == 'decodeBase64': src = cc.decodeBase64(src) elif command == 'decodeRawUnicode': src = cc.decodeRawUnicode(src) elif command == 'resolve': src = cc.resolve(src) elif command == 'decodeXppod': src = cc.decodeXppod(src) elif command == 'decodeXppodHLS': src = cc.decodeXppod_hls(src) elif command == 'replace': src = cc.replace(params, src) elif command == 'replaceRegex': src = cc.replaceRegex(params, src) elif command == 'ifEmpty': src = cc.ifEmpty(item, params, src) elif command == 'isEqual': src = cc.isEqual(item, params, src) elif command == 'ifFileExists': src = cc.ifFileExists(item, params, src) elif command == 'ifExists': src = cc.ifExists(item, params, src) elif command == 'encryptJimey': src = crypt.encryptJimey(params.strip("'").replace('%s', src)) elif command == 'gAesDec': src = crypt.gAesDec(src,item.infos[params]) elif command == 'aesDec': src = crypt.aesDec(src,item.infos[params]) elif command == 'getCookies': src = cc.getCookies(params, src) elif command == 'destreamer': src = crypt.destreamer(params.strip("'").replace('%s', src)) elif command == 'unixTimestamp': src = dt.getUnixTimestamp() elif command == 'rowbalance': src = rb.get() elif command == 'urlMerge': src = cc.urlMerge(params, src) elif command == 'translate': try: src = common.translate(int(src)) except: pass elif command == 'camelcase': src = string.capwords(string.capwords(src, '-')) elif command == 'lowercase': src = string.lower(src) elif command == 'reverse': src = src[::-1] elif command == 'demystify': print 'demystify' src = crypt.doDemystify(src) print 'after demystify',src elif command == 'random': paramArr = params.split(',') minimum = int(paramArr[0]) maximum = int(paramArr[1]) src = str(random.randrange(minimum,maximum)) elif command == 'debug': common.log('Debug from cfg file: ' + src) elif command == 'divide': paramArr = params.split(',') a = paramArr[0].strip().strip("'").replace('%s', src) a = resolveVariable(a, item) b = paramArr[1].strip().strip("'").replace('%s', src) b = resolveVariable(b, item) if not a or not b: continue a = int(a) b = int(b) try: src = str(a/b) except: pass return src
def __parseCommands(self, item, src, convCommands): common.log('_parseCommands called') #common.log('_parseCommands called %s | %s | %s' % (item,src, convCommands)) # helping function def parseCommand(txt): command = {"command": txt, "params": ""} if txt.find("(") > -1: command["command"] = txt[0:txt.find("(")] command["params"] = txt[len(command["command"]) + 1:-1] return command for convCommand in convCommands: pComm = parseCommand(convCommand) command = pComm["command"] params = pComm["params"] if params.find('@REFERER@'): referer = item['referer'] if not referer: referer = '' params = params.replace('@REFERER@', referer) if command == 'convDate': src = cc.convDate(params, src) elif command == 'currenturl': print("--------------curenturl ------------------------") src = getFileContent( os.path.join(common.Paths.cacheDir, 'lasturl')) print("--------------curenturl ------------------------", src) elif command == 'iklub': common.log('--------------ikulb ------------------------') common.log('src: %s' % src) src = cc.decodeIklub(src) common.log('src: %s' % src) #common.log('--------------ikulb ------------------------') elif command == 'decodemrknow2': common.log( '--------------decodemrknow2 ------------------------') #common.log('src: %s' % src) src = cc.decodeMrknow2(src) #common.log('src: %s' % src) elif command == 'convTimestamp': src = cc.convTimestamp(params, src) elif command == 'select': src = cc.select(params, src) if not src: continue elif command == 'unicode_escape': src = src.decode('unicode-escape') elif command == 'replaceFromDict': dictName = str(params.strip('\'')) path = os.path.join(common.Paths.dictsDir, dictName + '.txt') if not (os.path.exists(path)): common.log('Dictionary file not found: ' + path) continue src = cc.replaceFromDict(path, src) elif command == 'time': src = time.time() elif command == 'timediff': src = dt.timediff(src, params.strip('\'')) elif command == 'offset': src = cc.offset(params, src) elif command == 'getSource': src = cc.getSource(params, src) elif command == 'quote': try: src = urllib.quote( params.strip("'").replace('%s', src), '') except: cleanParams = params.strip("'") cleanParams = cleanParams.replace("%s", src) src = urllib.quote(cleanParams.encode('utf-8'), '') elif command == 'unquote': src = urllib.unquote(params.strip("'").replace('%s', src)) elif command == 'parseText': src = cc.parseText(item, params, src) elif command == 'getInfo': src = cc.getInfo(item, params, src) elif command == 'getXML': src = cc.getInfo(item, params, src, xml=True) elif command == 'getMobile': src = cc.getInfo(item, params, src, mobile=True) elif command == 'decodeBase64': src = cc.decodeBase64(src) elif command == 'decodeRawUnicode': src = cc.decodeRawUnicode(src) elif command == 'resolve': src = cc.resolve(src) elif command == 'decodeXppod': src = cc.decodeXppod(src) elif command == 'decodeXppodHLS': src = cc.decodeXppod_hls(src) elif command == 'decodeMrknow1': src = cc.decodeMrknow1(src) elif command == 'replace': src = cc.replace(params, src) elif command == 'replaceRegex': src = cc.replaceRegex(params, src) elif command == 'ifEmpty': src = cc.ifEmpty(item, params, src) elif command == 'isEqual': src = cc.isEqual(item, params, src) elif command == 'ifFileExists': src = cc.ifFileExists(item, params, src) elif command == 'ifExists': src = cc.ifExists(item, params, src) elif command == 'encryptJimey': src = crypt.encryptJimey(params.strip("'").replace('%s', src)) elif command == 'gAesDec': src = crypt.gAesDec(src, item.infos[params]) elif command == 'aesDec': src = crypt.aesDec(src, item.infos[params]) elif command == 'getCookies': src = cc.getCookies(params, src) elif command == 'destreamer': src = crypt.destreamer(params.strip("'").replace('%s', src)) elif command == 'unixTimestamp': src = dt.getUnixTimestamp() elif command == 'rowbalance': src = rb.get() elif command == 'urlMerge': src = cc.urlMerge(params, src) elif command == 'translate': try: src = common.translate(int(src)) except: pass elif command == 'camelcase': src = string.capwords(string.capwords(src, '-')) elif command == 'lowercase': src = string.lower(src) elif command == 'reverse': src = src[::-1] elif command == 'demystify': print 'demystify' src = crypt.doDemystify(src) print 'after demystify', src elif command == 'random': paramArr = params.split(',') minimum = int(paramArr[0]) maximum = int(paramArr[1]) src = str(random.randrange(minimum, maximum)) elif command == 'debug': common.log('--------------debug ------------------------') common.log('Debug from cfg file: ' + src) elif command == 'divide': paramArr = params.split(',') a = paramArr[0].strip().strip("'").replace('%s', src) a = resolveVariable(a, item) b = paramArr[1].strip().strip("'").replace('%s', src) b = resolveVariable(b, item) if not a or not b: continue a = int(a) b = int(b) try: src = str(a / b) except: pass return src
def __parseCommands(self, item, src, convCommands): #common.log('_parseCommands called') # helping function def parseCommand(txt): command = {"command": txt, "params": ""} if txt.find("(") > -1: command["command"] = txt[0:txt.find("(")] command["params"] = txt[len(command["command"]) + 1:-1] return command try: src = src.encode('utf-8') except: pass for convCommand in convCommands: pComm = parseCommand(convCommand) command = pComm["command"] params = pComm["params"] if params.find('@REFERER@'): referer = item['referer'] if not referer: referer = '' params = params.replace('@REFERER@', referer) if command == 'convDate': src = cc.convDate(params, src) elif command == 'convTimestamp': src = cc.convTimestamp(params, src) elif command == 'select': src = cc.select(params, src) if not src: continue elif command == 'smart_unicode': src = enc.smart_unicode(params.strip("'").replace('%s', src)) elif command == 'safeGerman': src = enc.safeGerman(src) elif command == 'safeRegex': src = enc.safeRegexEncoding(params.strip("'").replace('%s', enc.smart_unicode(src))) elif command == 'replaceFromDict': dictName = str(params.strip('\'')) path = os.path.join(common.Paths.dictsDir, dictName + '.txt') if not (os.path.exists(path)): common.log('Dictionary file not found: ' + path) continue src = cc.replaceFromDict(path, src) elif command == 'time': src = time.time() elif command == 'timediff': src = dt.timediff(src,params.strip('\'')) elif command == 'offset': src = cc.offset(params, src) elif command == 'getSource': src = cc.getSource(params, src) elif command == 'getRedirect': src = get_redirected_url(params.strip("'").replace('%s', src)) elif command == 'quote': try: src = urllib.quote(params.strip("'").replace('%s', urllib.quote(src))) except: cleanParams = params.strip("'") cleanParams = cleanParams.replace("%s",src.encode('utf-8')) src = urllib.quote(cleanParams) elif command == 'unquote': src = urllib.unquote(params.strip("'").replace('%s', src)) elif command == 'parseText': src = cc.parseText(item, params, src) elif command == 'getInfo': src = cc.getInfo(item, params, src) elif command == 'decodeBase64': src = cc.decodeBase64(src) elif command == 'decodeRawUnicode': src = cc.decodeRawUnicode(src) elif command == 'replace': src = cc.replace(params, src) elif command == 'replaceRegex': src = cc.replaceRegex(params, src) elif command == 'ifEmpty': src = cc.ifEmpty(item, params, src) elif command == 'isEqual': src = cc.isEqual(item, params, src) elif command == 'ifFileExists': src = cc.ifFileExists(item, params, src) elif command == 'ifExists': src = cc.ifExists(item, params, src) elif command == 'encryptJimey': src = crypt.encryptJimey(params.strip("'").replace('%s', src)) elif command == 'destreamer': src = crypt.destreamer(params.strip("'").replace('%s', src)) elif command == 'unixTimestamp': src = dt.getUnixTimestamp() elif command == 'urlMerge': src = cc.urlMerge(params, src) elif command == 'translate': try: src = common.translate(int(src)) except: pass elif command == 'camelcase': src = enc.smart_unicode(src) src = string.capwords(string.capwords(src, '-')) elif command == 'random': paramArr = params.split(',') minimum = int(paramArr[0]) maximum = int(paramArr[1]) src = str(random.randrange(minimum,maximum)) elif command == 'debug': common.log('Debug from cfg file: ' + src) elif command == 'divide': paramArr = params.split(',') a = paramArr[0].strip().strip("'").replace('%s', src) a = resolveVariable(a, item) b = paramArr[1].strip().strip("'").replace('%s', src) b = resolveVariable(b, item) if not a or not b: continue a = int(a) b = int(b) try: src = a/b except: pass return src
def __parseCommands(self, item, src, convCommands): common.log('_parseCommands called ') # helping function def parseCommand(txt): command = {"command": txt, "params": ""} if txt.find("(") > -1: command["command"] = txt[0:txt.find("(")] command["params"] = txt[len(command["command"]) + 1:-1] return command for convCommand in convCommands: pComm = parseCommand(convCommand) command = pComm["command"] params = pComm["params"] if params.find('@REFERER@'): referer = item['referer'] if not referer: referer = '' params = params.replace('@REFERER@', referer) if command == 'convDate': src = cc.convDate(params, src) elif command == 'convTimestamp': src = cc.convTimestamp(params, src) elif command == 'convDateUtil': src = cc.convDateUtil(params, src) elif command == 'select': src = cc.select(params, src) if not src: continue elif command == 'unicode_escape': try: src = src.decode('unicode-escape') except: src = src elif command == 'replaceFromDict': dictName = str(params.strip('\'')) path = os.path.join(common.Paths.dictsDir, dictName + '.txt') if not (os.path.exists(path)): common.log('Dictionary file not found: ' + path) continue src = cc.replaceFromDict(path, src) elif command == 'time': src = time.time() elif command == 'timediff': src = dt.timediff(src, params.strip('\'')) elif command == 'offset': src = cc.offset(params, src) elif command == 'getSource': src = cc.getSource(params, src) elif command == 'quote': try: src = urllib.quote( params.strip("'").replace('%s', src), '') except: cleanParams = params.strip("'") cleanParams = cleanParams.replace("%s", src) src = urllib.quote(cleanParams.encode('utf-8'), '') elif command == 'unquote': src = urllib.unquote(params.strip("'").replace('%s', src)) elif command == 'parseText': src = cc.parseText(item, params, src) elif command == 'getInfo': src = cc.getInfo(item, params, src) elif command == 'getXML': src = cc.getInfo(item, params, src, xml=True) elif command == 'getMobile': src = cc.getInfo(item, params, src, mobile=True) elif command == 'decodeBase64': src = cc.decodeBase64(src) elif command == 'decodeBase64Special': src = cc.decodeBase64Special(params, src) elif command == 'encodeBase64': src = cc.encodeBase64(src) elif command == 'decodeRawUnicode': src = cc.decodeRawUnicode(src) elif command == 'decodeHex': src = cc.hex2ascii(src) elif command == 'resolve': src = cc.resolve(src) elif command == 'decodeXppod': src = cc.decodeXppod(src) elif command == 'decodeXppodHLS': if 'stkey' in item.infos: src = src.replace(item.infos['stkey'], '') src = cc.decodeXppod_hls(src) elif command == 'decodeBCast': src = cc.bcast64(src) elif command == 'replace': src = cc.replace(item, params, src) elif command == 'replaceRegex': src = cc.replaceRegex(item, params, src) elif command == 'subRegex': src = cc.subRegex(item, params, src) elif command == 'ifEmpty': src = cc.ifEmpty(item, params, src) elif command == 'ifContains': src = cc.ifContains(item, params, src) elif command == 'isEqual': src = cc.isEqual(item, params, src) elif command == 'ifFileExists': src = cc.ifFileExists(item, params, src) elif command == 'ifExists': src = cc.ifExists(item, params, src) elif command == 'encryptJimey': src = crypt.encryptJimey(params.strip("'").replace('%s', src)) elif command == 'gAesDec': src = crypt.gAesDec(src, item.infos[params]) elif command == 'cjsAesDec': src = crypt.cjsAesDec(src, item.infos[params]) elif command == 'jsCryptoAESDec': src = crypt.jsCryptoAESDec(src, item.infos[params]) elif command == 'decryptMarioCS': src = crypt.decryptMarioCS(src, item.infos[params]) elif command == 'm3u8AesDec': src = crypt.m3u8AesDec(src, item.infos[params]) elif command == 'drenchDec': src = crypt.drenchDec(src, item.infos[params]) elif command == 'onetv': src = crypt.onetv(src) elif command == 'getCookies': src = cc.getCookies(params, src) elif command == 'destreamer': src = crypt.destreamer(params.strip("'").replace('%s', src)) elif command == 'unixTimestamp': src = dt.getUnixTimestamp() elif command == 'rowbalance': src = rb.get(src) elif command == 'simpleToken': src = cc.simpleToken(src) #elif command == 'wasteg': # paramArr = params.split(',') # ref = str(paramArr[1]) # src = getsaw.compose(ref, src) elif command == 'saurusDec': src = crypt.decryptSaurus(src) elif command == 'urlMerge': src = cc.urlMerge(params, src) elif command == 'translate': try: src = common.translate(int(src)) except: pass elif command == 'camelcase': src = string.capwords(string.capwords(src, '-')) elif command == 'lowercase': src = string.lower(src) elif command == 'reverse': src = src[::-1] elif command == 'demystify': src = crypt.doDemystify(src) elif command == 'random': paramArr = params.split(',') minimum = int(paramArr[0]) maximum = int(paramArr[1]) src = str(random.randrange(minimum, maximum)) elif command == 'randomfloat': paramArr = params.split(',') minimum = float(paramArr[0]) maximum = float(paramArr[1]) src = str(random.uniform(minimum, maximum)) elif command == 'debug': common.log('Debug from cfg file: ' + src) # elif command == 'startLivestreamerProxy': # libPath = os.path.join(common.Paths.rootDir, 'lib') # serverPath = os.path.join(libPath, 'livestreamerXBMCLocalProxy.py') # try: # import requests # requests.get('http://127.0.0.1:19000/version') # proxyIsRunning = True # except: # proxyIsRunning = False # if not proxyIsRunning: # xbmc.executebuiltin('RunScript(' + serverPath + ')') # elif command == 'startLivestreamerProxy': # libPath = os.path.join(common.Paths.rootDir, 'service') # serverPath = os.path.join(libPath, 'livestreamerXBMCLocalProxy.py') # try: # import requests # requests.get('http://127.0.0.1:19000/version') # proxyIsRunning = True # except: # proxyIsRunning = False # if not proxyIsRunning: # xbmc.executebuiltin('RunScript(' + serverPath + ')') #xbmc.sleep(500) # common.log('Debug from cfg file: ' + requests.get('http://127.0.0.1:19001/version').text) elif command == 'divide': paramArr = params.split(',') a = paramArr[0].strip().strip("'").replace('%s', src) a = resolveVariable(a, item) b = paramArr[1].strip().strip("'").replace('%s', src) b = resolveVariable(b, item) if not a or not b: continue a = int(a) b = int(b) try: src = str(a / b) except: pass return src
def __parseCommands(self, item, src, convCommands): # common.log('_parseCommands called') # helping function def parseCommand(txt): command = {"command": txt, "params": ""} if txt.find("(") > -1: command["command"] = txt[0 : txt.find("(")] command["params"] = txt[len(command["command"]) + 1 : -1] return command try: src = src.encode("utf-8") except: pass for convCommand in convCommands: pComm = parseCommand(convCommand) command = pComm["command"] params = pComm["params"] if params.find("@REFERER@"): referer = item["referer"] if not referer: referer = "" params = params.replace("@REFERER@", referer) if command == "convDate": src = cc.convDate(params, src) elif command == "convTimestamp": src = cc.convTimestamp(params, src) elif command == "select": src = cc.select(params, src) if not src: continue elif command == "smart_unicode": src = enc.smart_unicode(params.strip("'").replace("%s", src)) elif command == "safeGerman": src = enc.safeGerman(src) elif command == "safeRegex": src = enc.safeRegexEncoding(params.strip("'").replace("%s", enc.smart_unicode(src))) elif command == "replaceFromDict": dictName = str(params.strip("'")) path = os.path.join(common.Paths.dictsDir, dictName + ".txt") if not (os.path.exists(path)): common.log("Dictionary file not found: " + path) continue src = cc.replaceFromDict(path, src) elif command == "time": src = time.time() elif command == "timediff": src = dt.timediff(src, params.strip("'")) elif command == "offset": src = cc.offset(params, src) elif command == "getSource": src = cc.getSource(params, src) elif command == "getRedirect": src = get_redirected_url(params.strip("'").replace("%s", src)) elif command == "quote": try: src = urllib.quote(params.strip("'").replace("%s", urllib.quote(src))) except: cleanParams = params.strip("'") cleanParams = cleanParams.replace("%s", src.encode("utf-8")) src = urllib.quote(cleanParams) elif command == "unquote": src = urllib.unquote(params.strip("'").replace("%s", src)) elif command == "parseText": src = cc.parseText(item, params, src) elif command == "getInfo": src = cc.getInfo(item, params, src) elif command == "decodeBase64": src = cc.decodeBase64(src) elif command == "decodeRawUnicode": src = cc.decodeRawUnicode(src) elif command == "replace": src = cc.replace(params, src) elif command == "replaceRegex": src = cc.replaceRegex(params, src) elif command == "ifEmpty": src = cc.ifEmpty(item, params, src) elif command == "isEqual": src = cc.isEqual(item, params, src) elif command == "ifFileExists": src = cc.ifFileExists(item, params, src) elif command == "ifExists": src = cc.ifExists(item, params, src) elif command == "encryptJimey": src = crypt.encryptJimey(params.strip("'").replace("%s", src)) elif command == "destreamer": src = crypt.destreamer(params.strip("'").replace("%s", src)) elif command == "unixTimestamp": src = dt.getUnixTimestamp() elif command == "urlMerge": src = cc.urlMerge(params, src) elif command == "translate": try: src = common.translate(int(src)) except: pass elif command == "camelcase": src = enc.smart_unicode(src) src = string.capwords(string.capwords(src, "-")) elif command == "demystify": print "demystify" src = crypt.doDemystify(src) print "after demystify", src elif command == "random": paramArr = params.split(",") minimum = int(paramArr[0]) maximum = int(paramArr[1]) src = str(random.randrange(minimum, maximum)) elif command == "debug": common.log("Debug from cfg file: " + src) elif command == "divide": paramArr = params.split(",") a = paramArr[0].strip().strip("'").replace("%s", src) a = resolveVariable(a, item) b = paramArr[1].strip().strip("'").replace("%s", src) b = resolveVariable(b, item) if not a or not b: continue a = int(a) b = int(b) try: src = str(a / b) except: pass return src
def __parseCommands(self, item, src, convCommands): common.log('_parseCommands called') # helping function def parseCommand(txt): command = {"command": txt, "params": ""} if txt.find("(") > -1: command["command"] = txt[0:txt.find("(")] command["params"] = txt[len(command["command"]) + 1:-1] return command for convCommand in convCommands: pComm = parseCommand(convCommand) command = pComm["command"] params = pComm["params"] if params.find('@REFERER@'): referer = item['referer'] if not referer: referer = '' params = params.replace('@REFERER@', referer) if command == 'convDate': src = cc.convDate(params, src) elif command == 'convTimestamp': src = cc.convTimestamp(params, src) elif command == 'convDateUtil': src = cc.convDateUtil(params, src) elif command == 'select': src = cc.select(params, src) if not src: continue elif command == 'unicode_escape': src = src.decode('unicode-escape') elif command == 'replaceFromDict': dictName = str(params.strip('\'')) path = os.path.join(common.Paths.dictsDir, dictName + '.txt') if not (os.path.exists(path)): common.log('Dictionary file not found: ' + path) continue src = cc.replaceFromDict(path, src) elif command == 'time': src = time.time() elif command == 'timediff': src = dt.timediff(src,params.strip('\'')) elif command == 'offset': src = cc.offset(params, src) elif command == 'getSource': src = cc.getSource(params, src) elif command == 'quote': try: src = urllib.quote(params.strip("'").replace('%s', src),'') except: cleanParams = params.strip("'") cleanParams = cleanParams.replace("%s",src) src = urllib.quote(cleanParams.encode('utf-8'),'') elif command == 'unquote': src = urllib.unquote(params.strip("'").replace('%s', src)) elif command == 'parseText': src = cc.parseText(item, params, src) elif command == 'getInfo': src = cc.getInfo(item, params, src) elif command == 'getXML': src = cc.getInfo(item, params, src, xml=True) elif command == 'getMobile': src = cc.getInfo(item, params, src, mobile=True) elif command == 'decodeBase64': src = cc.decodeBase64(src) elif command == 'encodeBase64': src = cc.encodeBase64(src) elif command == 'decodeRawUnicode': src = cc.decodeRawUnicode(src) elif command == 'resolve': src = cc.resolve(src) elif command == 'decodeXppod': src = cc.decodeXppod(src) elif command == 'decodeXppodHLS': if 'stkey' in item.infos: src = src.replace(item.infos['stkey'],'') src = cc.decodeXppod_hls(src) elif command == 'decodeBCast': src = cc.bcast64(src) elif command == 'replace': src = cc.replace(params, src) elif command == 'replaceRegex': src = cc.replaceRegex(params, src) elif command == 'ifEmpty': src = cc.ifEmpty(item, params, src) elif command == 'isEqual': src = cc.isEqual(item, params, src) elif command == 'ifFileExists': src = cc.ifFileExists(item, params, src) elif command == 'ifExists': src = cc.ifExists(item, params, src) elif command == 'encryptJimey': src = crypt.encryptJimey(params.strip("'").replace('%s', src)) elif command == 'gAesDec': src = crypt.gAesDec(src,item.infos[params]) elif command == 'cjsAesDec': src = crypt.cjsAesDec(src,item.infos[params]) elif command == 'm3u8AesDec': src = crypt.m3u8AesDec(src,item.infos[params]) elif command == 'drenchDec': src = crypt.drenchDec(src,item.infos[params]) elif command == 'onetv': src = crypt.onetv(src) elif command == 'getCookies': src = cc.getCookies(params, src) elif command == 'destreamer': src = crypt.destreamer(params.strip("'").replace('%s', src)) elif command == 'unixTimestamp': src = dt.getUnixTimestamp() elif command == 'rowbalance': src = rb.get(src) elif command == 'simpleToken': src = cc.simpleToken(src) #elif command == 'wasteg': # paramArr = params.split(',') # ref = str(paramArr[1]) # src = getsaw.compose(ref, src) elif command == 'saurusDec': src = crypt.decryptSaurus(src) elif command == 'urlMerge': src = cc.urlMerge(params, src) elif command == 'translate': try: src = common.translate(int(src)) except: pass elif command == 'camelcase': src = string.capwords(string.capwords(src, '-')) elif command == 'lowercase': src = string.lower(src) elif command == 'reverse': src = src[::-1] elif command == 'demystify': src = crypt.doDemystify(src) elif command == 'random': paramArr = params.split(',') minimum = int(paramArr[0]) maximum = int(paramArr[1]) src = str(random.randrange(minimum,maximum)) elif command == 'debug': common.log('Debug from cfg file: ' + src) elif command == 'startLivestreamerProxy': libPath = os.path.join(common.Paths.rootDir, 'lib') serverPath = os.path.join(libPath, 'livestreamerXBMCLocalProxy.py') try: import requests requests.get('http://127.0.0.1:19000/version') proxyIsRunning = True except: proxyIsRunning = False if not proxyIsRunning: xbmc.executebuiltin('RunScript(' + serverPath + ')') elif command == 'divide': paramArr = params.split(',') a = paramArr[0].strip().strip("'").replace('%s', src) a = resolveVariable(a, item) b = paramArr[1].strip().strip("'").replace('%s', src) b = resolveVariable(b, item) if not a or not b: continue a = int(a) b = int(b) try: src = str(a/b) except: pass return src