def __getMediaLinkForGuest(self): url = self.__sUrl oRequest = cRequestHandler(url) oRequest.addHeaderEntry('User-Agent', UA) oRequest.addHeaderEntry( 'Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8') sHtmlContent = oRequest.request() api_call = False sPattern = '(\$=.+?;)\s*<' aResult = re.search(sPattern, sHtmlContent, re.DOTALL) if aResult: decoded = temp_decode(aResult.group(1)) if decoded: r = re.search("setAttribute\(\'src\', *\'([^']+)\'\)", decoded, re.DOTALL) if r: api_call = r.group(1) if (api_call): return True, api_call + '|User-Agent=' + UA + '&Referer=' + self.__sUrl + '&Origin=https://embed.mystream.to' return False, False
def __getMediaLinkForGuest(self): api_call = False oRequest = cRequestHandler(self.__sUrl) sHtmlContent = oRequest.request() SubTitle = '' SubTitle = self.checkSubtitle(sHtmlContent) #VSlog(SubTitle) oParser = cParser() sPattern = 'src":[\'"]([^<>\'"]+)[\'"],"type":[\'"][^\'"><]+?[\'"],"label":[\'"]([0-9]+p)[\'"].+?"lang":[\'"]([^\'"]+)' aResult = oParser.parse(sHtmlContent, sPattern) #VSlog(str(aResult)) if (aResult[0] == True): url=[] qua=[] lang=[] for aEntry in aResult[1]: url.append(aEntry[0]) tmp_qua = aEntry[1] if (len(aEntry)>2): if 'unknow' not in aEntry[2]: tmp_qua = tmp_qua + ' (' + aEntry[2] + ')' qua.append(tmp_qua) api_call = [qua, url] return True, str(api_call) return False, False
def __modifyUrl(self, sUrl): if (sUrl.startswith('http://')): oRequestHandler = cRequestHandler(sUrl) oRequestHandler.request() sRealUrl = oRequestHandler.getRealUrl() self.__sUrl = sRealUrl return self.__getIdFromUrl() return sUrl
def __getMediaLinkForGuest(self): api_call = False oRequest = cRequestHandler(self.__sUrl) oRequest.addHeaderEntry('User-Agent', UA) sHtmlContent = oRequest.request() urlDonwload = oRequest.getRealUrl() oParser = cParser() possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789" fin_url = ''.join(random.choice(possible) for _ in range(10)) sPattern = 'return a\+"(\?token=[^"]+)"' d = oParser.parse(sHtmlContent, sPattern)[1][0] fin_url = fin_url + d + str(int(1000 * time.time())) sPattern = "\$\.get\('(\/pass_md5[^']+)" aResult = oParser.parse(sHtmlContent, sPattern) url2 = 'https://' + urlDonwload.split('/')[2] + aResult[1][0] #VSlog(url2) oRequest = cRequestHandler(url2) oRequest.addHeaderEntry('User-Agent', UA) oRequest.addHeaderEntry('Referer', urlDonwload) sHtmlContent = oRequest.request() #VSlog(sHtmlContent) #api_call = compute(sHtmlContent) + fin_url api_call = sHtmlContent + fin_url #VSlog(api_call) if (api_call): api_call = api_call + '|Referer=' + urlDonwload return True, api_call return False, False
def __getKey(self): oRequestHandler = cRequestHandler(self.__sUrl) sHtmlContent = oRequestHandler.request() sPattern = 'flashvars.filekey="(.+?)";' oParser = cParser() aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == True): aResult = aResult[1][0].replace('.', '%2E') return aResult return ''
def getPage(self, baseUrl, addParams={}, post_data=None): printDBG('etap1') if not post_data: post_data = (None, None) sts, data = self.cm.getPage(baseUrl, addParams, post_data[1]) if not data: data = '' if '!![]+!![]' in data: try: printDBG('etap2') oRequestHandler = cRequestHandler(baseUrl) if post_data: oRequestHandler.setRequestType( cRequestHandler.REQUEST_TYPE_POST) oRequestHandler.addParametersLine(post_data[0]) data = oRequestHandler.request() sts = True cook = GestionCookie().Readcookie('www_dpstream_top') self.cookieHeader = str(cook) if ';' in cook: cook_tab = cook.split(';') else: cook_tab = cook cj = self.cm.getCookie(self.COOKIE_FILE) for item in cook_tab: if '=' in item: cookieKey, cookieValue = item.split('=') cookieItem = cookielib.Cookie( version=0, name=cookieKey, value=cookieValue, port=None, port_specified=False, domain='.' + self.cm.getBaseUrl(baseUrl, True), domain_specified=True, domain_initial_dot=True, path='/', path_specified=True, secure=False, expires=time.time() + 3600 * 48, discard=True, comment=None, comment_url=None, rest={'HttpOnly': None}, rfc2109=False) cj.set_cookie(cookieItem) cj.save(self.COOKIE_FILE, ignore_discard=True) printDBG('ffffff' + self.cookieHeader) except Exception, e: printDBG('ERREUR:' + str(e)) addParams['cloudflare_params'] = { 'domain': self.up.getDomain(baseUrl), 'cookie_file': self.COOKIE_FILE, 'User-Agent': self.USER_AGENT } sts, data = self.cm.getPageCFProtection( baseUrl, addParams, post_data[1])
def getPage1(self,baseUrl, addParams = {}, post_data = None): sts = False try: oRequestHandler = cRequestHandler(baseUrl) if post_data: oRequestHandler.setRequestType(cRequestHandler.REQUEST_TYPE_POST) oRequestHandler.addParametersLine(post_data) if addParams!={}: oRequestHandler.addParameters(addParams) sHtmlContent = oRequestHandler.request() sts = True except Exception, e: sHtmlContent='ERREUR:'+str(e)
def GetIp(): if (False): oRequest = cRequestHandler('http://hqq.tv/player/ip.php?type=json') oRequest.addHeaderEntry sHtmlContent = oRequest.request() ip = re.search('"ip":"([^"]+)"', sHtmlContent, re.DOTALL).group(1) else: import random for x in xrange(1, 100): ip = "192.168." ip += ".".join(map(str, (random.randint(0, 255) for _ in range(2)))) ip = base64.b64encode(ip) return ip
def getMediaLink(self): self.oPremiumHandler = cPremiumHandler('uptobox') premium = self.oPremiumHandler.isPremiumModeAvailable() api_call = False SubTitle = '' # compte gratuit ou payant token = '' if premium: if self.oPremiumHandler.Authentificate(): sHtmlContent = self.oPremiumHandler.GetHtml(self.__sUrl) sPattern = "window\.token = '([^']+)';" token = re.search(sPattern, sHtmlContent, re.DOTALL) if token: token = token.group(1) SubTitle = self.checkSubtitle(sHtmlContent) else: VSlog('no Premium') if token: sUrl2 = "https://uptostream.com/api/streaming/source/get?token={}&file_code={}".format( token, self.__getIdFromUrl()) sHtml = self.oPremiumHandler.GetHtml(sUrl2) else: # pas de compte sUrl2 = "https://uptostream.com/api/streaming/source/get?token=null&file_code={}".format( self.__getIdFromUrl()) oRequest = cRequestHandler(sUrl2) sHtml = oRequest.request() qua, url_list = decodeur1(sHtml) VSlog('qua=' + str(qua)) VSlog('url_list=' + str(url_list)) if qua and url_list: api_call = dialog().VSselectqual(qua, url_list) if (api_call): if SubTitle: return True, api_call.replace('\\', ''), SubTitle else: return True, api_call.replace('\\', '') return False, False
def __getMediaLinkForGuest(self): api_call = '' oParser = cParser() oRequest = cRequestHandler(self.__sUrl) sHtmlContent = oRequest.request() sPattern1 = 'ById\(\'ideoo.+?=\s*["\']([^"\']+)[\'"].+?["\']([^"\']+)\'\)' aResult = oParser.parse(sHtmlContent, sPattern1) if (aResult[0] == True): url = aResult[1][0][1] api_call = 'https://streamtape.com/get_video' + url[url.find('?'):] + "&stream=1" if api_call: return True, api_call + '|User-Agent=' + UA + '&Referer=' + self.__sUrl return False, False
def getPage1(self,baseUrl, addParams = {}, post_data = None): if addParams == {}: addParams = dict(self.defaultParams) sts, data = self.cm.getPage(baseUrl,addParams,post_data) if not data: data=strwithmeta('',{}) printDBG('ddddaaattttaaaa'+str(data.meta)) #printDBG('ddddaaattttaaaa'+data) if ('!![]+!![]' in data) or (data.meta.get('status_code',0)==503): try: if os.path.exists(self.COOKIE_FILE): os.remove(self.COOKIE_FILE) printDBG('cookie removed') printDBG('Start CLoudflare Vstream methode') oRequestHandler = cRequestHandler(baseUrl) if post_data: post_data_vstream = '' for key in post_data: if post_data_vstream=='': post_data_vstream=key+'='+post_data[key] else: post_data_vstream=post_data_vstream+'&'+key+'='+post_data[key] oRequestHandler.setRequestType(cRequestHandler.REQUEST_TYPE_POST) oRequestHandler.addParametersLine(post_data_vstream) data = oRequestHandler.request() sts = True printDBG('cook_vstream_file='+self.up.getDomain(baseUrl).replace('.','_')) cook = GestionCookie().Readcookie(self.up.getDomain(baseUrl).replace('.','_')) printDBG('cook_vstream='+cook) #printDBG('cook_vstream='+data) if ';' in cook: cook_tab = cook.split(';') else: cook_tab = cook cj = self.cm.getCookie(self.COOKIE_FILE) for item in cook_tab: if '=' in item: printDBG('item='+item) cookieKey, cookieValue = item.split('=') cookieItem = cookielib.Cookie(version=0, name=cookieKey, value=cookieValue, port=None, port_specified=False, domain='.'+self.cm.getBaseUrl(baseUrl, True), domain_specified=True, domain_initial_dot=True, path='/', path_specified=True, secure=False, expires=time.time()+3600*48, discard=True, comment=None, comment_url=None, rest={'HttpOnly': None}, rfc2109=False) cj.set_cookie(cookieItem) cj.save(self.COOKIE_FILE, ignore_discard = True) except Exception, e: printDBG('ERREUR:'+str(e)) printDBG('Start CLoudflare E2iplayer methode') addParams['cloudflare_params'] = {'domain':self.up.getDomain(baseUrl), 'cookie_file':self.COOKIE_FILE, 'User-Agent':self.USER_AGENT} sts, data = self.cm.getPageCFProtection(baseUrl, addParams, post_data)
def __getMediaLinkForGuest(self): api_call = '' url_list = [] qua = [] sId = self.__getIdFromUrl(self.__sUrl) sUrl = 'https://api.tune.pk/v3/videos/' + sId oRequest = cRequestHandler(sUrl) oRequest.addHeaderEntry('User-Agent', UA) oRequest.addHeaderEntry('X-KEY', '777750fea4d3bd585bf47dc1873619fc') oRequest.addHeaderEntry('X-REQ-APP', 'web') #pour les mp4 oRequest.addHeaderEntry('Referer', self.__sUrl) #au cas ou sHtmlContent1 = oRequest.request() if (sHtmlContent1): sHtmlContent = cUtil().removeHtmlTags(sHtmlContent1) sHtmlContent = cUtil().unescape(sHtmlContent1) content = json.loads(sHtmlContent) content = content["data"]["videos"]["files"] if content: for x in content: if 'Auto' in str(content[x]['label']): continue url2 = str(content[x]['file']).replace( 'index', str(content[x]['label'])) url_list.append(url2) qua.append(repr(content[x]['label'])) if qua and url_list: i = 0 url = '' for x1 in qua: if url != '': url = url + '||' url = url + url_list[i] + '|tag:' + x1 i = i + 1 return True, url return False, False
def __getMediaLinkForGuest(self, premium=False): api_call = False SubTitle = '' # compte gratuit ou payant token = '' if premium: if self.oPremiumHandler.Authentificate(): sHtmlContent = self.oPremiumHandler.GetHtml(self.__sUrl) sPattern = "window\.token = '([^']+)';" token = re.search(sPattern, sHtmlContent, re.DOTALL) if token: token = token.group(1) SubTitle = self.checkSubtitle(sHtmlContent) if token: sUrl2 = "https://uptostream.com/api/streaming/source/get?token={}&file_code={}".format( token, self.__getIdFromUrl()) sHtml = self.oPremiumHandler.GetHtml(sUrl2) else: # pas de compte sUrl2 = "https://uptostream.com/api/streaming/source/get?token=null&file_code={}".format( self.__getIdFromUrl()) oRequest = cRequestHandler(sUrl2) sHtml = oRequest.request() qua, url_list = decodeur1(sHtml) if qua and url_list: i = 0 url = '' for x1 in qua: if url != '': url = url + '||' url = url + url_list[i] + '|tag:' + x1 i = i + 1 return True, url return False, False
def __getMediaLinkForGuest(self): api_call = False sUrl = 'https://www.vidbm.com/embed-' + self.__sUrl + '.html?auto=1' oRequest = cRequestHandler(sUrl) sHtmlContent = oRequest.request() oParser = cParser() packed = CheckCpacker(sHtmlContent) if packed: aa = CheckAADecoder(packed) if aa: sPattern = 'sources: *\[{file:"([^"]+)"' aResult = oParser.parse(aa, sPattern) if (aResult[0] == True): api_call = aResult[1][0] + '|User-Agent=' + UA if (api_call): return True, api_call return False, False
def __getMediaLinkForGuest(self): api_call = '' oParser = cParser() oRequest = cRequestHandler(self.__sUrl) sHtmlContent = oRequest.request() sPattern1 = "innerHTML = ([^;]+)" aResult = oParser.parse(sHtmlContent, sPattern1) if (aResult[0] == True): url = aResult[1][0] url = url.replace(' ', '').replace('"', '').replace("'", "").replace("+", "") VSlog(url) api_call = 'https:' + url + "&stream=1" if (api_call): return True, api_call + '|User-Agent=' + UA + '&Referer=' + self.__sUrl return False, False
def __getMediaLinkForGuest(self): api_call = False url = self.__sUrl keymorocco = '' keymycountry = '' morocco = '' mycountry = '' urlapi = "https://userload.co/api/assets/userload/js/videojs.js" # ne marche plus (sur kodi18.7) # sHtmlContent1 = decodeData(requests.get(urlapi).text) oRequestHandler = cRequestHandler(urlapi) sHtmlContent1 = oRequestHandler.request() oParser = cParser() sPattern = '(゚ω゚.+?\(\'_\'\);)' aResult = oParser.parse(sHtmlContent1, sPattern) if (aResult[0] == True): sdecode = AADecoder(aResult[1][0]).decode() sPattern = 'morocco=".([^\W]+).+?"&mycountry=".([^\W]+)' aResult_2 = oParser.parse(sdecode, sPattern) if (aResult_2[0] == True): keymorocco = aResult_2[1][0][0] keymycountry = aResult_2[1][0][1] referer = url.split('|Referer=')[1] url = url.split('|Referer=')[:-1][0] oRequestHandler = cRequestHandler(url) oRequestHandler.addHeaderEntry('Referer', referer) sHtmlContent1 = oRequestHandler.request() sPattern2 = '<script type="text/javascript">(\s*eval\s*\(\s*function(?:.|\s)+?{}\)\))' aResult = re.findall(sPattern2, sHtmlContent1) if aResult: str2 = aResult[0] if not str2.endswith(';'): str2 = str2 + ';' strs = cPacker().unpack(str2) oParser = cParser() sPattern = 'var\s(.+?)="([^"]*)' aResult = oParser.parse(strs, sPattern) if (aResult[0] == True): for r in aResult[1]: if r[0] == keymorocco: morocco = r[1] if r[0] == keymycountry: mycountry = r[1] if morocco and mycountry: url2 = 'https://userload.co/api/request/' pdata = 'morocco=' + morocco + '&mycountry=' + mycountry oRequest = cRequestHandler(url2) oRequest.setRequestType(1) oRequestHandler.addHeaderEntry('User-Agent', UA) oRequest.addHeaderEntry('Content-Type', 'application/x-www-form-urlencoded') oRequest.addHeaderEntry('Content-Length', len(str(pdata))) oRequest.addHeaderEntry('Referer', url) oRequest.addParametersLine(pdata) api_call = oRequest.request() if 'mp4' in api_call and 'uloadcdn.com' in api_call: return True, api_call.strip() return False, False
def __getMediaLinkForGuest(self): url = self.__sUrl #url = self.__sUrl.replace('embed.mystream.to','mstream.cloud') #url = 'https://mstream.cloud/gfa35ebu1nt1' oRequest = cRequestHandler(url) oRequest.addHeaderEntry('User-Agent', UA) oRequest.addHeaderEntry( 'Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8') sHtmlContent = oRequest.request() oParser = cParser() api_call = False a = '' b = '' c = '' urlcoded = '' sPattern = '(?:[>;]\s*)(゚ω゚.+?\(\'_\'\);)' aResult = oParser.parse(sHtmlContent, sPattern) if aResult[0]: for i in aResult[1]: decoded = AADecoder(i).decode() #VSlog(decoded) r = re.search("atob\(\'([^']+)\'\)", decoded, re.DOTALL | re.UNICODE) if r: urlcoded = r.group(1) break reducesHtmlContent = oParser.abParse(sHtmlContent, '<z9></z9><script>', '{if(document') sPattern = '(\w+)' aResult = oParser.parse(reducesHtmlContent, sPattern) if aResult[0]: mlist = sorted(aResult[1], key=len) mlist = mlist[-2:] a = mlist[0] b = mlist[1] #VSlog('a= ' + str(a)) #VSlog('b= ' + str(b)) sPattern = "=\['getAttribute','*([^']+)'*\]" aResult = oParser.parse(sHtmlContent, sPattern) if aResult[0]: encodedC = aResult[1][0].replace('window.', '') #VSlog('encodec= ' + str(encodedC)) c = Cdecode(sHtmlContent, encodedC) if c: #VSlog('c= ' + str(c)) api_call = decode(urlcoded, a, b, c) if (api_call): return True, api_call + '|User-Agent=' + UA return False, False
def __getMediaLinkForGuest(self): api_call = '' ids = self.__getIdFromUrl() self.__sUrl = 'http://hqq.tv/player/embed_player.php?vid=' + ids + '&autoplay=no' player_url = self.__sUrl headers = { 'User-Agent': UA, #'Host': 'hqq.tv', 'Referer': 'http://hqq.tv/', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', #'Accept-Encoding': 'gzip, deflate, br', #'Content-Type': 'text/html; charset=utf-8' } oRequestHandler = cRequestHandler(player_url) oRequestHandler.addHeaderEntry('User-Agent', UA) oRequestHandler.addHeaderEntry( 'Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8') oRequestHandler.addHeaderEntry('Referer', 'http://hqq.tv/') html = oRequestHandler.request() Host = 'https://' + self.GetHost(player_url) + '/' data = '' data = DecodeAllThePage(html) #data = '' #code_crypt = re.search('(;eval\(function\(w,i,s,e\){.+?\)\);)\s*<', html, re.DOTALL) #if code_crypt: # data = unwise.unwise_process(code_crypt.group(1)) #else: # VSlog('prb1') if data: http_referer = '' _pass = '' iss = GetIp() vid = re.search("videokeyorig=\'(.+?)\'", data, re.DOTALL).group(1) at = re.search("attoken=\'(.+?)\'", data, re.DOTALL).group(1) r = re.search('var referer = "([^"]+)"', data, re.DOTALL) if r: http_referer = r.group(1) import string, random _BOUNDARY_CHARS = string.digits boundary = ''.join( random.choice(_BOUNDARY_CHARS) for i in range(17)) url2 = "https://hqq.tv/sec/player/embed_player_" + boundary + ".php?iss=" + iss + "=&vid=" + vid + "&at=" + at + "&autoplayed=yes&referer=on&http_referer=" + http_referer + "&pass=&embed_from=&need_captcha=0&secure=0&g-recaptcha-response=" oRequestHandler = cRequestHandler(url2) oRequestHandler.addHeaderEntry('User-Agent', UA) oRequestHandler.addHeaderEntry( 'Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' ) oRequestHandler.addHeaderEntry('Referer', 'http://hqq.tv/') sHtmlContent = oRequestHandler.request() key = re.search("\'sitekey\' : \'(.+?)\'", str(sHtmlContent)).group(1) gToken = ResolveCaptcha(key, self.__sUrl) url2 = url2 + gToken oRequestHandler = cRequestHandler(url2) oRequestHandler.addHeaderEntry('User-Agent', UA) oRequestHandler.addHeaderEntry( 'Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' ) oRequestHandler.addHeaderEntry('Referer', 'http://hqq.tv/') data = oRequestHandler.request() data = urllib.unquote(data) data = DecodeAllThePage(data) #VSlog(data) at = re.search(r'var\s*at\s*=\s*"([^"]*?)"', data).group(1) nameVar = re.search( 'true.+?\s*.+?link_1="\+encodeURIComponent\((.+?)\)\+"&server_2="\+encodeURIComponent\((.+?)\)\+"&vid="\+encodeURIComponent\("(.+?)"\)', data) var1 = re.search('var ' + nameVar.group(1) + ' = "(.+?)"', data).group(1) var2 = re.search('var ' + nameVar.group(2) + ' = "(.+?)"', data).group(1) #bricolage api_call = "https://hqq.tv/player/get_md5.php?ver=2&at=" + urllib.quote( at, safe='~()*!.\'') + "&adb=" + urllib.quote( "1/", safe='~()*!.\'') + "&b=1&link_1=" + urllib.quote( var1, safe='~()*!.\'') + "&server_2=" + urllib.quote( var2, safe='~()*!.\'') + "&vid=" + urllib.quote( nameVar.group(3), safe='~()*!.\'') + "&ext=.mp4.m3u8" #use a fake headers Header = "Accept-Language= fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3&Accept-Encoding= gzip, deflate, br" api_call = api_call + '|' + Header if not (api_call == False): return True, api_call return False, False