def getStreams(url): myurl, ret = url.split('@') content = getUrl(myurl) sources=re.compile('<span id=["\']span_link_links[\'"] onClick="\w+\(\'(.*?)\'').findall(content) out = [] for i, s in enumerate(set(sources)): enc_data=json.loads(base64.b64decode(s)) ciphertext = 'Salted__' + enc_data['s'].decode('hex') + base64.b64decode(enc_data['ct']) src= magic_aes.decrypt(ret,base64.b64encode(ciphertext)) src=src.strip('"').replace('\\','') title = 'Link %d' % (i+1) out.append({"title": title, "tvid": title, "key": ret, "url": src, "refurl": myurl}) return out
def getChannelVideo(item): import xbmc #xbmc.log('@#@CHANNEL-VIDEO-ITEM: %s' % item, xbmc.LOGNOTICE) s = requests.Session() header = {'User-Agent': UA, 'Referer': item.get('url')} content = s.get(item['url'], headers=header).content # import uuid # hash = uuid.uuid4().hex # url = re.findall(r'location.replace\(\'([^\']+)', content)[0] # uri = url + hash # content = s.get(uri, headers=header).content links = re.compile('(http://www.[^\.]+.pw/(?!&#)[^"]+)', re.IGNORECASE + re.DOTALL + re.MULTILINE + re.UNICODE).findall(content) link = [x for x in links if '&#' in x] if link: link = re.sub(r'&#(\d+);', lambda x: chr(int(x.group(1))), link[0]) data = s.get(link, headers=header).content #xbmc.log('@#@CHANNEL-VIDEO-DATA: %s' % data, xbmc.LOGNOTICE) f = re.compile('.*?name="f"\s*value=["\']([^"\']+)["\']').findall(data) d = re.compile('.*?name="d"\s*value=["\']([^"\']+)["\']').findall(data) r = re.compile('.*?name="r"\s*value=["\']([^"\']+)["\']').findall(data) # b = re.compile('.*?name="b"\s*value=["\']([^"\']+)["\']').findall(data) action = re.compile( '[\'"]action[\'"][,\s]*[\'"](http.*?)[\'"]').findall(data) srcs = re.compile('src=[\'"](.*?)[\'"]').findall(data) if f and r and d and action: # payload = urllib.urlencode({'b': b[0], 'd': d[0], 'f': f[0], 'r': r[0]}) payload = urllib.urlencode({'f': f[0], 'd': d[0], 'r': r[0]}) data2, c = getUrlc(action[0], payload, header=header, usecookies=True) try: #######ads banners######### bheaders = header bheaders['Referer'] = action[0] banner = re.findall(r'<script\s*src=[\'"](.+?)[\'"]', data2)[-1] #xbmc.log('@#@BANNER-LINK: %s' % banner, xbmc.LOGNOTICE) bsrc = s.get(banner, headers=bheaders).content #xbmc.log('@#@BANNER-DATA: %s' % bsrc, xbmc.LOGNOTICE) banner = re.findall(r"url:'([^']+)", bsrc)[0] #xbmc.log('@#@BANNER-LINK2: %s' % banner, xbmc.LOGNOTICE) bsrc = s.get(banner, headers=bheaders).content #xbmc.log('@#@BANNER-DATA2: %s' % bsrc, xbmc.LOGNOTICE) bheaders['Referer'] = banner banner = re.findall( r'window.location.replace\("([^"]+)"\);\s*}\)<\/script><div', bsrc)[0] banner = urllib.quote(banner, ':/()!@#$%^&;><?') #xbmc.log('@#@BANNER-LINK3: %s' % bsrc, xbmc.LOGNOTICE) bsrc = s.get(banner).status_code ########################### except BaseException: pass link = re.compile( '\([\'"][^"\']+[\'"], [\'"][^"\']+[\'"], [\'"]([^"\']+)[\'"], 1\)' ).findall(data2) enc_data = json.loads(base64.b64decode(link[0])) ciphertext = 'Salted__' + enc_data['s'].decode( 'hex') + base64.b64decode(enc_data['ct']) src = magic_aes.decrypt(item['key'], base64.b64encode(ciphertext)) src = src.replace('"', '').replace('\\', '').encode('utf-8') a, c = getUrlc(srcs[-1], header=header, usecookies=True) if srcs else '', '' a, c = getUrlc(src, header=header, usecookies=True) # print a url_head = '|User-Agent={0}&Referer={1}'.format( urllib.quote(UA), urllib.quote('http://h5.adshell.net/peer5')) if src.startswith('http'): href = src + url_head # print href return href, srcs[-1], header, item['title'] else: href = magic_aes.decode_hls(src) if href: href += url_head return href, srcs[-1], header, item['title'] return ''