def UptomyAccount(): if (cConfig().getSetting('hoster_uptobox_username') == '') and (cConfig().getSetting('hoster_uptobox_password') == ''): return oInputParameterHandler = cInputParameterHandler() sMediaUrl = oInputParameterHandler.getValue('sMediaUrl') oPremiumHandler = cPremiumHandler('uptobox') sHtmlContent = oPremiumHandler.GetHtml(URL_MAIN) cookies = GestionCookie().Readcookie('uptobox') aResult = re.search( '<div id="div_url".+?action="([^"]+)".+?name="sess_id" value="([^"]+)".+?name="srv_tmp_url" value="([^"]+)"', sHtmlContent, re.DOTALL) if (aResult): aCt = aResult.group(1) sId = aResult.group(2) sTmp = aResult.group(3) UPurl = ('%s%s&js_on=1&utype=reg&upload_type=url' % (aCt, sId)) fields = { 'sess_id': sId, 'upload_type': 'url', 'srv_tmp_url': sTmp, 'url_mass': sMediaUrl, 'tos': '1', 'submit_btn': 'Uploader' } mpartdata = MPencode(fields) req = urllib2.Request(UPurl, mpartdata[1], headers) req.add_header('Content-Type', mpartdata[0]) req.add_header('Cookie', cookies) req.add_header('Content-Length', len(mpartdata[1])) #req.add_data(mpartdata[1]) xbmcgui.Dialog().notification('Info upload', 'Envoi de la requete patienter ..', xbmcgui.NOTIFICATION_INFO, 2000, False) try: rep = urllib2.urlopen(req) except: return '' sHtmlContent = rep.read() rep.close() xbmc.executebuiltin("Dialog.Close(all,true)") if '>OK<' in sHtmlContent: xbmcgui.Dialog().notification('Info upload', 'Upload réussie', xbmcgui.NOTIFICATION_INFO, 2000, False) else: xbmcgui.Dialog().notification('Info upload', 'Fichier introuvable', xbmcgui.NOTIFICATION_INFO, 2000, False) else: xbmcgui.Dialog().notification('Info upload', 'Erreur pattern', xbmcgui.NOTIFICATION_ERROR, 2000, False)
def load(): oGui = cGui() addons = addon() oPremiumHandler = cPremiumHandler('uptobox') if (addons.getSetting('hoster_uptobox_username') == '') and (addons.getSetting('hoster_uptobox_password') == ''): oGui.addText( SITE_IDENTIFIER, '[COLOR red]' + 'Nécessite Un Compte Uptobox Premium ou Gratuit' + '[/COLOR]') oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', 'http://venom/') oGui.addDir(SITE_IDENTIFIER, 'opensetting', addons.VSlang(30023), 'none.png', oOutputParameterHandler) else: if (GestionCookie().Readcookie('uptobox') != ''): oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', 'http://venom/') oGui.addDir(SITE_IDENTIFIER, 'showSearch', 'Recherche', 'search.png', oOutputParameterHandler) oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', 'http://venom/') oOutputParameterHandler.addParameter('file', 'fileonly') oGui.addDir(SITE_IDENTIFIER, 'showFile', 'Mes Fichiers', 'genres.png', oOutputParameterHandler) oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', 'http://Dossier/') oGui.addDir(SITE_IDENTIFIER, 'showFolder', 'Mes Dossiers', 'genres.png', oOutputParameterHandler) else: Connection = oPremiumHandler.Authentificate() if (Connection == False): dialog().VSinfo('Connexion refusée') return oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', 'http://venom/') oGui.addDir(SITE_IDENTIFIER, 'showSearch', 'Recherche', 'search.png', oOutputParameterHandler) oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', 'http://venom/') oOutputParameterHandler.addParameter('file', 'fileonly') oGui.addDir(SITE_IDENTIFIER, 'showFile', 'Mes Fichiers', 'genres.png', oOutputParameterHandler) oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', 'http://Dossier/') oGui.addDir(SITE_IDENTIFIER, 'showFolder', 'Mes Dossiers', 'genres.png', oOutputParameterHandler) oGui.setEndOfDirectory()
def AddmyAccount(): if (cConfig().getSetting('hoster_uptobox_username') == '') and (cConfig().getSetting('hoster_uptobox_password') == ''): return oInputParameterHandler = cInputParameterHandler() sMediaUrl = oInputParameterHandler.getValue('sMediaUrl') sId = sMediaUrl.replace(URL_MAIN, '') if 'https://uptostream.com/iframe/' in sMediaUrl: sId = sMediaUrl.replace('https://uptostream.com/iframe/', '') else: sId = sMediaUrl.replace('http://uptobox.com/', '') Upurl = URL_MAIN + '?op=my_files&add_my_acc=' + sId oPremiumHandler = cPremiumHandler('uptobox') if (GestionCookie().Readcookie('uptobox') != ''): cookies = GestionCookie().Readcookie('uptobox') sHtmlContent = oPremiumHandler.GetHtmlwithcookies(Upurl, None, cookies) if (len(sHtmlContent) > 25): oPremiumHandler.Authentificate() cookies = GestionCookie().Readcookie('uptobox') sHtmlContent = oPremiumHandler.GetHtmlwithcookies( Upurl, None, cookies) else: sHtmlContent = oPremiumHandler.GetHtml(Upurl) xbmc.executebuiltin("Dialog.Close(all,true)") if ('dded to your account' in sHtmlContent): xbmcgui.Dialog().notification('Info upload', 'Fichier ajouté à votre compte', xbmcgui.NOTIFICATION_INFO, 2000, False) elif ('nvalid file' in sHtmlContent): xbmcgui.Dialog().notification('Info upload', 'Fichier introuvable', xbmcgui.NOTIFICATION_INFO, 2000, False) else: xbmcgui.Dialog().notification('Info upload', 'Erreur', xbmcgui.NOTIFICATION_ERROR, 2000, False)
def load(): oGui = cGui() oPremiumHandler = cPremiumHandler('uptobox') if (cConfig().getSetting('hoster_uptobox_username') == '') and (cConfig().getSetting('hoster_uptobox_password') == ''): oGui.addText( SITE_IDENTIFIER, '[COLOR red]' + 'Nécessite Un Compte Uptobox Premium ou Gratuit' + '[/COLOR]') else: if (GestionCookie().Readcookie('uptobox') != ''): oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', 'http://venom/') oGui.addDir(SITE_IDENTIFIER, 'showSearch', 'Recherche', 'search.png', oOutputParameterHandler) oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', 'http://venom/') oOutputParameterHandler.addParameter('file', 'fileonly') oGui.addDir(SITE_IDENTIFIER, 'showFile', 'Mes Fichiers', 'genres.png', oOutputParameterHandler) oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', 'http://Dossier/') oGui.addDir(SITE_IDENTIFIER, 'showFolder', 'Mes Dossiers', 'genres.png', oOutputParameterHandler) else: Connection = oPremiumHandler.Authentificate() if (Connection == False): xbmcgui.Dialog().notification('Info connexion', 'Connexion refusée', xbmcgui.NOTIFICATION_ERROR, 2000, False) return oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', 'http://venom/') oGui.addDir(SITE_IDENTIFIER, 'showSearch', 'Recherche', 'search.png', oOutputParameterHandler) oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', 'http://venom/') oOutputParameterHandler.addParameter('file', 'fileonly') oGui.addDir(SITE_IDENTIFIER, 'showFile', 'Mes Fichiers', 'genres.png', oOutputParameterHandler) oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', 'http://Dossier/') oGui.addDir(SITE_IDENTIFIER, 'showFolder', 'Mes Dossiers', 'genres.png', oOutputParameterHandler) oGui.setEndOfDirectory()
def DecryptDlProtecte(url): VSlog('DecryptDlProtecte : ' + url) dialogs = dialog() if not (url): return '' #VSlog(url) # 1ere Requete pour recuperer le cookie oRequestHandler = cRequestHandler(url) oRequestHandler.addHeaderEntry('User-Agent', UA) sHtmlContent = oRequestHandler.request() cookies = GestionCookie().Readcookie('www_dl-protect1_com') #VSlog( 'cookie' + str(cookies)) #Tout ca a virer et utiliser oRequestHandler.addMultipartFiled('sess_id':sId,'upload_type':'url','srv_tmp_url':sTmp) quand ca marchera import string _BOUNDARY_CHARS = string.digits boundary = ''.join(random.choice(_BOUNDARY_CHARS) for i in range(15)) multipart_form_data = {'submit': 'continuer', 'submit': 'Continuer'} data, headersMulti = encode_multipart(multipart_form_data, {}, boundary) #2 eme requete pour avoir le lien oRequestHandler = cRequestHandler(url) oRequestHandler.setRequestType(1) oRequestHandler.addHeaderEntry('Host', 'www.dl-protect1.com') oRequestHandler.addHeaderEntry('Referer', url) oRequestHandler.addHeaderEntry( 'Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8') oRequestHandler.addHeaderEntry('User-Agent', UA) oRequestHandler.addHeaderEntry('Accept-Language', 'fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3') oRequestHandler.addHeaderEntry('Content-Length', headersMulti['Content-Length']) oRequestHandler.addHeaderEntry('Content-Type', headersMulti['Content-Type']) oRequestHandler.addHeaderEntry('Cookie', cookies) oRequestHandler.addHeaderEntry('Accept-Encoding', 'gzip, deflate') oRequestHandler.addParametersLine(data) sHtmlContent = oRequestHandler.request() #fh = open('d:\\test.txt', "w") #fh.write(sHtmlContent) #fh.close() return sHtmlContent
def GetHtml(self, url, data=None): cookies = GestionCookie().Readcookie(self.__sHosterIdentifier) # aucun ne marche sans cookies if (cookies == '') and not self.__LoginTry and self.__Ispremium: self.Authentificate() if not self.isLogin: return '' cookies = GestionCookie().Readcookie(self.__sHosterIdentifier) sHtmlContent = self.GetHtmlwithcookies(url, data, cookies) # Les cookies ne sont plus valables, mais on teste QUE si la personne n'a pas essaye de s'authentifier if not self.Checklogged(sHtmlContent) and not self.__LoginTry and self.__Ispremium: VSlog('Cookies non valables') self.Authentificate() if self.isLogin: cookies = GestionCookie().Readcookie(self.__sHosterIdentifier) sHtmlContent = self.GetHtmlwithcookies(url, data, cookies) else: return '' return sHtmlContent
def Rename(): #voir public ou privée oInputParameterHandler = cInputParameterHandler() aParams = oInputParameterHandler.getAllParameter() sTitle = oInputParameterHandler.getValue('sFileName') #sTitle = sTitle.replace('.mp4','') xbmc.log(str(aParams)) sUrl = oInputParameterHandler.getValue('siteUrl') sText = cConfig().showKeyBoard(sTitle) if sText == False: return post_data = {} if 'fld_id=' in sUrl: sId = sUrl.replace('https://uptobox.com/?op=my_files&fld_id=', '').replace( 'http://uptobox.com/?op=my_files&fld_id=', '') sUrl = 'http://uptobox.com/?op=fld_edit&fld_id=' + sId post_data['op'] = 'fld_edit' post_data['fld_id'] = sId post_data['fld_name'] = sText post_data['save'] = 'Soumettre' else: sId = sUrl.replace('https://uptobox.com/', '').replace('http://uptobox.com/', '') sUrl = 'https://uptobox.com/?op=file_edit&file_code=' + sId post_data['op'] = 'file_edit' post_data['file_code'] = sId post_data['file_name'] = sText post_data['save'] = 'Soumettre' oPremiumHandler = cPremiumHandler('uptobox') cookies = GestionCookie().Readcookie('uptobox') req = urllib2.Request(sUrl, urllib.urlencode(post_data), headers) req.add_header('Cookie', cookies) try: rep = urllib2.urlopen(req) except: return '' rep.close() xbmc.executebuiltin("Container.Refresh")
def UptomyAccount(): if (cConfig().getSetting('hoster_uptobox_username') == '') and (cConfig().getSetting('hoster_uptobox_password') == ''): return oInputParameterHandler = cInputParameterHandler() sMediaUrl = oInputParameterHandler.getValue('sMediaUrl') oPremiumHandler = cPremiumHandler('uptobox') sHtmlContent = oPremiumHandler.GetHtml(URL_MAIN) cookies = GestionCookie().Readcookie('uptobox') aResult = re.search("request.open\('POST', '([^']+)'\);", sHtmlContent, re.DOTALL) if (aResult): UPurl = aResult.group(1) fields = {'urls': '["' + sMediaUrl + '"]'} mpartdata = MPencode(fields) req = urllib2.Request(UPurl, mpartdata[1], headers) req.add_header('Content-Type', mpartdata[0].replace(',', ';')) req.add_header('Cookie', cookies) req.add_header('Content-Length', len(mpartdata[1])) xbmcgui.Dialog().notification('Info upload', 'Envoi de la requete patienter ..', xbmcgui.NOTIFICATION_INFO, 2000, False) try: rep = urllib2.urlopen(req) except urllib2.URLError, e: #VSlog(e.code) #VSlog(e.reason) return '' sHtmlContent = rep.read() #VSlog(sHtmlContent) rep.close() xbmc.executebuiltin("Dialog.Close(all,true)") if 'success' in sHtmlContent: xbmcgui.Dialog().notification('Info upload', 'Upload réussie', xbmcgui.NOTIFICATION_INFO, 2000, False) else: xbmcgui.Dialog().notification('Info upload', 'Fichier introuvable', xbmcgui.NOTIFICATION_INFO, 2000, False)
def load(): addons = addon() if (addons.getSetting('hoster_onefichier_username') == '') and (addons.getSetting('hoster_onefichier_password') == ''): oGui = cGui() oGui.addText(SITE_IDENTIFIER, "[COLOR %s]%s[/COLOR]" % ("red", "Nécessite Un Compte 1Fichier Premium ou Gratuit")) oGui.setEndOfDirectory() else: if (GestionCookie().Readcookie('onefichier') != ''): showFile(URL_FILE) else: oPremiumHandler = cPremiumHandler('onefichier') Connection = oPremiumHandler.Authentificate() if (Connection == False): oGui = cGui() oGui.addText(SITE_IDENTIFIER, "[COLOR %s]%s[/COLOR]" % ("red", "Connexion refusée")) oGui.setEndOfDirectory() else: showFile(URL_FILE)
def SaveCookie(self, head, xfss=None): cookies = '' if 'Set-Cookie' in head: oParser = cParser() sPattern = '(?:^|,) *([^;,]+?)=([^;,\/]+?);' aResult = oParser.parse(str(head['Set-Cookie']), sPattern) #print aResult if (aResult[0] == True): for cook in aResult[1]: if 'deleted' in cook[1]: continue cookies = cookies + cook[0] + '=' + cook[1] + ';' if cook[0] == 'xfss': # cMySqlDB().updateXFSS(cook[1], self.xfss) self.xfss = cook[1] if xfss: cookies = cookies + "xfss=%s;" % (xfss) #save cookie GestionCookie().SaveCookie(self.__sHosterIdentifier, cookies)
def __getMediaLinkForGuest(self): api_call = '' UA = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.143 Safari/537.36' oParser = cParser() headers = {'User-Agent': UA} sHtml = Unquote( requests.get(self.__sUrl, cookies={ 'CONSENT': GestionCookie().Readcookie("youtube") }, headers=headers).text) sHtmlContent = self.deescape( sHtml[7 + sHtml.find('formats'):sHtml.rfind('adaptiveFormats')]) sPattern = '"url":"([^"]+)".+?"qualityLabel":"([^"]+)"' aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == True): url = [] qua = [] for aEntry in aResult[1]: # Py3 a besoin de la deuxieme version, je laisse le 1er replace au cas où pour Py2 url.append(aEntry[0].replace('/&', '&').replace( "\\\\u0026", "&").replace("\u0026", "&")) qua.append(aEntry[1]) if url: if self.__res: for i in range(len(qua)): if qua[i] == self.__res: api_call = url[i] if not api_call: api_call = dialog().VSselectqual(qua, url) if api_call: return True, api_call else: return False
def login(): oGui = cGui() name = oGui.showKeyBoard() password = oGui.showKeyBoard() cookies = '' oRequestHandler = cRequestHandler(URL_MAIN) oRequestHandler.setRequestType(cRequestHandler.REQUEST_TYPE_POST) #oRequestHandler.addHeaderEntry('Origin',URL_MAIN) oRequestHandler.addHeaderEntry('Referer',URL_MAIN) oRequestHandler.addParameters('login_name', name) oRequestHandler.addParameters('login_password', password) oRequestHandler.addParameters('login', 'submit') sHtmlContent = oRequestHandler.request() cookies = oRequestHandler.GetCookies() print cookies if cookies: cConfig().showInfo('vStream', 'Login OK') #save cookies GestionCookie().SaveCookie('streamase.com',cookies) oGui.setEndOfDirectory() return
def getMediaLink(self): self.oPremiumHandler = cPremiumHandler('uptobox') premium = self.oPremiumHandler.isPremiumModeAvailable() api_call = False SubTitle = "" if premium: self.oPremiumHandler.Authentificate() else: dialog().VSok('Ce hoster demande un login, meme gratuit.') return False, False cookies = GestionCookie().Readcookie("uptobox") import requests, re s = requests.Session() s.headers.update({"Cookie": cookies}) r = s.get('https://uptobox.com/api/streaming?file_code=' + self.__sUrl.split('/')[-1]).json() if r["statusCode"] != 0: # Erreur dialog().VSinfo(r["data"]) return False, False r1 = s.get(r["data"]["user_url"]).text tok = re.search('token.+?;.+?;(.+?)&', r1).group(1) r1 = s.post("https://uptobox.com/api/user/pin/validate?token=" + tok, json={ "pin": r["data"]["pin"] }).json() s.headers.update( {"Referer": "https://uptobox.com/pin?pin=" + r["data"]["pin"]}) r = s.get(r["data"]["check_url"]).json()["data"] sPattern = "'(.+?)': {(.+?)}" oParser = cParser() aResult = oParser.parse(r["streamLinks"], sPattern) url = [] qua = [] api_call = False for aEntry in aResult[1]: QUAL = aEntry[0] d = re.findall("'u*(.+?)': u*'(.+?)'", aEntry[1]) for aEntry1 in d: url.append(aEntry1[1]) qua.append(QUAL + ' (' + aEntry1[0] + ')') # Affichage du tableau api_call = dialog().VSselectqual(qua, url) SubTitle = self.checkSubtitle(r["subs"]) if (api_call): if SubTitle: return True, api_call, SubTitle else: return True, api_call return False, False
def DecryptddlProtect(url): #print 'entering DecryptddlProtect' if not (url): return '' #Get host tmp = url.split('/') host = tmp[0] + '//' + tmp[2] + '/' cookies = '' dialogs = dialog() #try to get previous cookie cookies = GestionCookie().Readcookie('liens_free-telechargement_org') oRequestHandler = cRequestHandler(url) if cookies: oRequestHandler.addHeaderEntry('Cookie', cookies) sHtmlContent = oRequestHandler.request() #A partir de la on a les bon cookies pr la protection cloudflare #Si ca demande le captcha if 'Veuillez recopier le captcha ci-dessus' in sHtmlContent: if cookies: GestionCookie().DeleteCookie('liens_free-telechargement_org') oRequestHandler = cRequestHandler(url) sHtmlContent = oRequestHandler.request() s = re.findall('src=".\/([^<>"]+?)" alt="CAPTCHA Image"', sHtmlContent) if host in s[0]: image = s[0] else: image = host + s[0] captcha,cookies2 = get_response(image, cookies) cookies = cookies + '; ' + cookies2 oRequestHandler = cRequestHandler(url) oRequestHandler.setRequestType(1) oRequestHandler.addHeaderEntry('User-Agent', UA) oRequestHandler.addHeaderEntry('Accept-Language', 'fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4') oRequestHandler.addHeaderEntry('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8') oRequestHandler.addHeaderEntry('Cookie', cookies) oRequestHandler.addHeaderEntry('Referer', url) oRequestHandler.addParameters('do', 'contact') oRequestHandler.addParameters('ct_captcha', captcha) sHtmlContent = oRequestHandler.request() if 'Code de securite incorrect' in sHtmlContent: dialogs.VSinfo("Mauvais Captcha") return 'rate' if 'Veuillez recopier le captcha ci-dessus' in sHtmlContent: dialogs.VSinfo("Rattage") return 'rate' #si captcha reussi #save cookies GestionCookie().SaveCookie('liens_free-telechargement_org', cookies) return sHtmlContent
def DecryptDlProtecte(url): VSlog('DecryptDlProtecte : ' + url) dialogs = dialog() if not (url): return '' #url2 = 'https://www.dl-protecte.org/php/Qaptcha.jquery.php' #url2 = 'https://www.protect-zt.com/php/Qaptcha.jquery.php' url2 = 'https://' + url.split('/')[2] + '/php/Qaptcha.jquery.php' #VSlog(url2) #Make random key s = "azertyupqsdfghjkmwxcvbn23456789AZERTYUPQSDFGHJKMWXCVBN_-#@"; RandomKey = ''.join(random.choice(s) for i in range(32)) oRequestHandler = cRequestHandler(url2) oRequestHandler.setRequestType(1) oRequestHandler.addHeaderEntry('Host', 'www.dl-protect.ru') oRequestHandler.addHeaderEntry('Referer', url) oRequestHandler.addHeaderEntry('Accept', 'application/json, text/javascript, */*; q=0.01') oRequestHandler.addHeaderEntry('User-Agent', UA) oRequestHandler.addHeaderEntry('Accept-Language', 'fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4') oRequestHandler.addHeaderEntry('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8') oRequestHandler.addHeaderEntry('X-Requested-With','XMLHttpRequest') oRequestHandler.addParameters('action', 'qaptcha') oRequestHandler.addParameters('qaptcha_key', RandomKey) sHtmlContent = oRequestHandler.request() cookies = oRequestHandler.GetCookies() GestionCookie().SaveCookie('dl_protect.ru',cookies) #VSlog( 'result' + sHtmlContent) if not '"error":false' in sHtmlContent: VSlog('Captcha rate') VSlog(sHtmlContent) return #tempo pas necessaire #cGui().showInfo("Patientez", 'Décodage en cours', 2) #xbmc.sleep(1000) #Ancienne methode avec POST #query_args = ( ( 'YnJYHKk4xYUUu4uWQdxxuH@JEJ2yrmJS', '' ) , ('submit', 'Valider' ) ) #data = urllib.urlencode(query_args) #Nouvelle methode avec multipart #multipart_form_data = { RandomKey : '', 'submit' : 'Valider' } import string _BOUNDARY_CHARS = string.digits + string.ascii_letters boundary = ''.join(random.choice(_BOUNDARY_CHARS) for i in range(30)) multipart_form_data = { RandomKey : '', 'submit' : 'Valider' } data, headersMulti = encode_multipart(multipart_form_data, {}, boundary) #VSlog( 'header 2' + str(headersMulti)) #VSlog( 'data 2' + str(data)) #2 eme requete pour avoir le lien cookies = GestionCookie().Readcookie('dl_protect.ru') oRequestHandler = cRequestHandler(url) oRequestHandler.setRequestType(1) oRequestHandler.addHeaderEntry('Host', 'www.dl-protect.ru') oRequestHandler.addHeaderEntry('Referer', url) oRequestHandler.addHeaderEntry('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8') oRequestHandler.addHeaderEntry('User-Agent', UA) oRequestHandler.addHeaderEntry('Accept-Language', 'fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3') oRequestHandler.addHeaderEntry('Content-Length', headersMulti['Content-Length']) oRequestHandler.addHeaderEntry('Content-Type', headersMulti['Content-Type']) oRequestHandler.addHeaderEntry('Cookie', cookies) oRequestHandler.addHeaderEntry('Accept-Encoding', 'gzip, deflate') oRequestHandler.addParametersLine(data) sHtmlContent = oRequestHandler.request() #fh = open('d:\\test.txt', "w") #fh.write(sHtmlContent) #fh.close() return sHtmlContent
def DecryptddlProtect(url): #VSlog 'entering DecryptddlProtect' if not (url): return '' #Get host tmp = url.split('/') host = tmp[0] + '//' + tmp[2] + '/' + tmp[3] + '/' host1 = tmp[2] cookies = '' dialogs = dialog() #try to get previous cookie cookies = GestionCookie().Readcookie('cinemegatoil_org') oRequestHandler = cRequestHandler(url) if cookies: oRequestHandler.addHeaderEntry('Cookie', cookies) sHtmlContent = oRequestHandler.request() #A partir de la on a les bon cookies pr la protection cloudflare #Si ca demande le captcha if 'Vérification Captcha:' in sHtmlContent: if cookies: GestionCookie().DeleteCookie('cinemegatoil_org') oRequestHandler = cRequestHandler(url) sHtmlContent = oRequestHandler.request() s = re.findall('<img src="([^<>"]+?)" /><br />', sHtmlContent) if host in s[0]: image = s[0] else: image = host + s[0] captcha,cookies2 = get_response(image, cookies) cookies = cookies2.replace(';', '') oRequestHandler = cRequestHandler(url) oRequestHandler.setRequestType(1) oRequestHandler.addHeaderEntry('Host',host1) oRequestHandler.addHeaderEntry('User-Agent', UA) oRequestHandler.addHeaderEntry('Accept-Language', 'fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4') oRequestHandler.addHeaderEntry('Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8') oRequestHandler.addHeaderEntry('Cookie', cookies) oRequestHandler.addHeaderEntry('Referer', url) oRequestHandler.addParameters('submit1', 'Submit') oRequestHandler.addParameters('security_code', captcha) sHtmlContent = oRequestHandler.request() if 'Code de securite incorrect' in sHtmlContent: dialogs.VSinfo("Mauvais Captcha") return 'rate' if 'Veuillez recopier le captcha ci-dessus' in sHtmlContent: dialogs.VSinfo("Rattage") return 'rate' #si captcha reussi #save cookies GestionCookie().SaveCookie('cinemegatoil_org', cookies) return sHtmlContent
def DecryptddlProtect(url): #print 'entering DecryptddlProtect' if not (url): return '' #Get host tmp = url.split('/') host = tmp[0] + '//' + tmp[2] + '/' #VSlog(host) cookies = '' dialogs = dialog() #try to get previous cookie cookies = GestionCookie().Readcookie('wawacity') oRequestHandler = cRequestHandler(url) if cookies: oRequestHandler.addHeaderEntry('Cookie', cookies) sHtmlContent = oRequestHandler.request() #VSlog(sHtmlContent) #A partir de la on a les bon cookies pr la protection cloudflare #Si ca demande le captcha if 'Recopiez :' in sHtmlContent: if cookies: GestionCookie().DeleteCookie('wawacity') oRequestHandler = cRequestHandler(url) sHtmlContent = oRequestHandler.request() s = re.findall('<label for=".+? >.+?</label><img src="(.+?)"', sHtmlContent) if host in s[0]: image = s[0] else: image = host + s[0] captcha, cookies2 = get_response(image, cookies) cookies = cookies + '; ' + cookies2 oRequestHandler = cRequestHandler(url) oRequestHandler.setRequestType(1) oRequestHandler.addHeaderEntry('User-Agent', UA) oRequestHandler.addHeaderEntry('Accept-Language', 'fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3') oRequestHandler.addHeaderEntry( 'Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8' ) oRequestHandler.addHeaderEntry('Cookie', cookies) oRequestHandler.addHeaderEntry('Referer', url) oRequestHandler.addParameters('submit', 'unlock') oRequestHandler.addParameters('cr-nvar', captcha.upper()) sHtmlContent = oRequestHandler.request() if 'Code de securite incorrect' in sHtmlContent: dialogs.VSinfo("Mauvais Captcha") return 'rate' if 'Veuillez recopier le captcha ci-dessus' in sHtmlContent: dialogs.VSinfo("Rattage") return 'rate' #si captcha reussi #save cookies GestionCookie().SaveCookie('wawacity', cookies) return sHtmlContent
def getHtml(sUrl, data=None): # S'occupe des requetes if 'firstonetv' in sUrl: cookies = GestionCookie().Readcookie('firstonetv') if 'myfree-tivi' and 'watch' in sUrl and not data is None: # VSlog(data) cookies = GestionCookie().Readcookie('myfree_tivi') headers = { 'Host': 'www.myfree-tivi.com', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:64.0) Gecko/20100101 Firefox/64.0', 'Accept': 'application/json, text/javascript, */*; q=0.01', 'Accept-Language': 'fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3', 'Referer': sUrl, 'X-CSRF-Token': data.replace('\n', '').replace('\r', ''), 'Connection': 'keep-alive', 'Cookie': cookies, 'Content-Length': '0', 'TE': 'Trailers' } r = requests.post('https://www.myfree-tivi.com/getdata', headers=headers) elif 'firstonetv' and '/France/' in sUrl: # On passe les redirection aResult = re.findall('Live/.+?/*[^<>]+(?:-)([^"]+)', sUrl) idChannel = aResult[0] apiNumber = random.uniform(0.0000000000000000, 0.9999999999999999) url = 'https://www.firstonetv.net/api/?cacheFucker=' + str(apiNumber) oRequestHandler = cRequestHandler(url) oRequestHandler.setRequestType(1) oRequestHandler.addHeaderEntry('User-Agent', UA) oRequestHandler.addHeaderEntry('Cookie', cookies) oRequestHandler.addParameters('action', 'hiro') oRequestHandler.addParameters('result', 'get') data = oRequestHandler.request() hiro = unFuckFirst(data) # On decode Hiro sPattern = '"hiro":(.+?),"hash":"(.+?)","time":(.+?),' oParser = cParser() aResult = oParser.parse(hiro, sPattern) for aEntry in aResult[1]: hiro = aEntry[0] Hash = aEntry[1] time = aEntry[2] apiNumber = random.uniform(0.0000000000000000, 0.9999999999999999) url = 'https://www.firstonetv.net/api/?cacheFucker=' + str(apiNumber) oRequestHandler = cRequestHandler(url) oRequestHandler.setRequestType(1) oRequestHandler.addHeaderEntry('User-Agent', UA) oRequestHandler.addHeaderEntry('Cookie', cookies) oRequestHandler.addParameters('action', 'hiro') oRequestHandler.addParameters('result', hiro) oRequestHandler.addParameters('time', time) oRequestHandler.addParameters('hash', Hash) data = oRequestHandler.request() aResult = re.findall('"ctoken":"(.+?)"}', data) cToken = aResult[0] apiNumber = random.uniform(0.0000000000000000, 0.9999999999999999) url = 'https://www.firstonetv.net/api/?cacheFucker=' + str(apiNumber) oRequestHandler = cRequestHandler(url) oRequestHandler.setRequestType(1) oRequestHandler.addHeaderEntry('User-Agent', UA) oRequestHandler.addHeaderEntry('Cookie', cookies) oRequestHandler.addParameters('action', 'channel') oRequestHandler.addParameters('ctoken', cToken) oRequestHandler.addParameters('c', 'fr') oRequestHandler.addParameters('id', idChannel) oRequestHandler.addParameters('native_hls', '0') oRequestHandler.addParameters('unsecure_hls', '0') data = oRequestHandler.request() return data elif 'firstonetv' in sUrl: oRequestHandler = cRequestHandler(sUrl) oRequestHandler.addHeaderEntry('User-Agent', UA) oRequestHandler.addHeaderEntry('Host', 'www.firstonetv.net') oRequestHandler.addHeaderEntry('Cookie', cookies) data = oRequestHandler.request() return data if data == None and 'watch' in sUrl: oRequestHandler = cRequestHandler(sUrl) data = oRequestHandler.request() cookies = oRequestHandler.GetCookies() GestionCookie().SaveCookie('myfree_tivi', cookies) return data else: oRequestHandler = cRequestHandler(sUrl) oRequestHandler.addHeaderEntry('User-Agent', UA) if not data is None and 'watch' in sUrl: data = r.text VSlog(data) else: data = oRequestHandler.request() # VSlog(data) return data
def CheckCookie(self): cookies = GestionCookie().Readcookie(self.__sHosterIdentifier) if cookies != '': return True return False
def GetHtml(self,url,htmlcontent = '',cookies = '',postdata = None,Gived_headers = ''): #Memorise headers self.Memorised_Headers = Gived_headers #Memorise postdata self.Memorised_PostData = postdata #Memorise cookie self.Memorised_Cookies = cookies #VSlog(cookies) #cookies in headers ? if Gived_headers != '': if Gived_headers.get('Cookie',None): if cookies: self.Memorised_Cookies = cookies + '; ' + Gived_headers.get('Cookie') else: self.Memorised_Cookies = Gived_headers['Cookie'] #For debug if (Mode_Debug): VSlog('Headers present ' + str(Gived_headers)) VSlog('url ' + url) if (htmlcontent): VSlog('code html ok') VSlog('cookies passés' + self.Memorised_Cookies) VSlog('post data :' + str(postdata)) self.hostComplet = re.sub(r'(https*:\/\/[^/]+)(\/*.*)','\\1',url) self.host = re.sub(r'https*:\/\/','',self.hostComplet) self.url = url cookieMem = GestionCookie().Readcookie(self.host.replace('.', '_')) if not (cookieMem == ''): if (Mode_Debug): VSlog('cookies present sur disque :' + cookieMem ) if not (self.Memorised_Cookies): cookies = cookieMem else: cookies = self.Memorised_Cookies + '; ' + cookieMem else: if (Mode_Debug): VSlog('Pas de cookies present sur disque ' ) data = {} if postdata: method = 'POST' #Need to convert data to dictionnary d = postdata.split('&') for dd in d: ddd = dd.split('=') data[ddd[0]] = ddd[1] else: method = 'GET' s = CloudflareScraper() r = s.request(method,url,headers = self.SetHeader() , cookies = self.ParseCookies(cookies) , data = data ) if r: sContent = r.text.encode("utf-8") self.RedirectionUrl = r.url self.Header = r.headers else: VSlog("Erreur, delete cookie" ) sContent = '' #self.RedirectionUrl = r.url #self.Header = r.headers s.MemCookie = '' GestionCookie().DeleteCookie(self.host.replace('.', '_')) #fh = open('c:\\test.txt', "w") #fh.write(sContent) #fh.close() #Memorisation des cookies c = '' cookie = s.MemCookie if cookie: for i in cookie: c = c + i + '=' + cookie[i] + ';' #Write them GestionCookie().SaveCookie(self.host.replace('.', '_'),c) if Mode_Debug: VSlog("Sauvegarde cookies : " + str(c) ) return sContent
class cPremiumHandler: def __init__(self, sHosterIdentifier): self.__sHosterIdentifier = sHosterIdentifier.lower() self.__sDisplayName = 'Premium mode' self.isLogin = False self.__LoginTry = False self.__ssl = False self.__Ispremium = False bIsPremium = cConfig().getSetting('hoster_' + str(self.__sHosterIdentifier) + '_premium') if (bIsPremium == 'true'): cConfig().log("Utilise compte premium pour hoster " + str(self.__sHosterIdentifier)) self.__Ispremium = True else: cConfig().log("Utilise compte gratuit pour hoster: " + str(self.__sHosterIdentifier)) def isPremiumModeAvailable(self): return self.__Ispremium def getUsername(self): sUsername = cConfig().getSetting('hoster_' + str(self.__sHosterIdentifier) + '_username') return sUsername def getPassword(self): sPassword = cConfig().getSetting('hoster_' + str(self.__sHosterIdentifier) + '_password') return sPassword def AddCookies(self): cookies = GestionCookie().Readcookie(self.__sHosterIdentifier) return 'Cookie=' + cookies def Checklogged(self,code): if 'uptobox' in self.__sHosterIdentifier: if '//uptobox.com/?op=logout">Logout</a>' in code: return True return False def CheckCookie(self): cookies = GestionCookie().Readcookie(self.__sHosterIdentifier) if cookies != '': return True return False def Authentificate(self): #un seul essais par session, pas besoin de bombarder le serveur if self.__LoginTry: return False self.__LoginTry = True if not self.__Ispremium: return False post_data = {} if 'uptobox' in self.__sHosterIdentifier: url = 'https://login.uptobox.com/logarithme' post_data['login'] = self.getUsername() post_data['password'] = self.getPassword() post_data['op'] = 'login' elif 'onefichier' in self.__sHosterIdentifier: url = 'https://1fichier.com/login.pl' post_data['mail'] = self.getUsername() post_data['pass'] = self.getPassword() post_data['lt'] = 'on' post_data['purge'] = 'on' post_data['valider'] = 'Send' self.__ssl = True elif 'uploaded' in self.__sHosterIdentifier: url = 'http://uploaded.net/io/login' post_data['id'] = self.getUsername() post_data['pw'] = self.getPassword() #si aucun de trouve on retourne else: return False #print url #print post_data if (self.__ssl): try: import ssl context = ssl._create_unverified_context() except: self.__ssl = False req = urllib2.Request(url, urllib.urlencode(post_data), headers) try: if (self.__ssl): response = urllib2.urlopen(req,context=context) else: response = urllib2.urlopen(req) except urllib2.URLError, e: if getattr(e, "code", None) == 403: #login denied cGui().showInfo(self.__sDisplayName, 'Authentification rate' , 5) elif getattr(e, "code", None) == 502: #login denied cGui().showInfo(self.__sDisplayName, 'Authentification rate' , 5) elif getattr(e, "code", None) == 234: #login denied cGui().showInfo(self.__sDisplayName, 'Authentification rate' , 5) else: cConfig().log("debug" + str(getattr(e, "code", None))) cConfig().log("debug" + str(getattr(e, "reason", None))) self.isLogin = False return False sHtmlContent = response.read() head = response.headers response.close() #print head #fh = open('c:\\prem.txt', "w") #fh.write(sHtmlContent) #fh.close() if 'uptobox' in self.__sHosterIdentifier: if 'OK' in sHtmlContent: self.isLogin = True else: cGui().showInfo(self.__sDisplayName, 'Authentification rate' , 5) return False elif 'onefichier' in self.__sHosterIdentifier: if 'You are logged in. This page will redirect you.' in sHtmlContent: self.isLogin = True else: cGui().showInfo(self.__sDisplayName, 'Authentification rate' , 5) return False elif 'uploaded' in self.__sHosterIdentifier: if sHtmlContent == '': self.isLogin = True else: cGui().showInfo(self.__sDisplayName, 'Authentification rate' , 5) return False else: return False #get cookie cookies = '' if 'Set-Cookie' in head: oParser = cParser() sPattern = '(?:^|,) *([^;,]+?)=([^;,\/]+?);' aResult = oParser.parse(str(head['Set-Cookie']), sPattern) #print aResult if (aResult[0] == True): for cook in aResult[1]: cookies = cookies + cook[0] + '=' + cook[1]+ ';' #save cookie GestionCookie().SaveCookie(self.__sHosterIdentifier,cookies) cGui().showInfo(self.__sDisplayName, 'Authentification reussie' , 5) cConfig().log( 'Auhentification reussie' ) return True
def GetHtml(self, url, htmlcontent='', cookies='', postdata=None, Gived_headers=''): #Memorise headers self.Memorised_Headers = Gived_headers #Memorise postdata self.Memorised_PostData = postdata #Memorise cookie self.Memorised_Cookies = cookies #VSlog(cookies) #cookies in headers? if Gived_headers != '': if Gived_headers.get('Cookie', None): if cookies: self.Memorised_Cookies = cookies + '; ' + Gived_headers.get( 'Cookie') else: self.Memorised_Cookies = Gived_headers['Cookie'] #For debug if (Mode_Debug): VSlog('Headers present ' + str(Gived_headers)) VSlog('url ' + url) if (htmlcontent): VSlog('code html ok') VSlog('cookies passés : ' + self.Memorised_Cookies) VSlog('post data :' + str(postdata)) self.hostComplet = re.sub(r'(https*:\/\/[^/]+)(\/*.*)', '\\1', url) self.host = re.sub(r'https*:\/\/', '', self.hostComplet) self.url = url cookieMem = GestionCookie().Readcookie(self.host.replace('.', '_')) if not (cookieMem == ''): if (Mode_Debug): VSlog('cookies present sur disque :' + cookieMem) if not (self.Memorised_Cookies): cookies = cookieMem else: cookies = self.Memorised_Cookies + '; ' + cookieMem else: if (Mode_Debug): VSlog('Pas de cookies présent sur disque ') data = {} if postdata: method = 'POST' #Need to convert data to dictionnary d = postdata.split('&') for dd in d: ddd = dd.split('=') data[ddd[0]] = ddd[1] else: method = 'GET' from resources.lib import cloudscraper #Fonctionne pour le moment sur tout les sites, donc on ne va pas se compliquer la vie. s = cloudscraper.create_scraper(browser={'custom': 'ScraperBot/1.0'}) r = s.request(method, url, headers=self.SetHeader(), cookies=self.ParseCookies(cookies), data=data) #r = s.request(method, url) MemCookie = r.cookies.get_dict() if r: sContent = r.text.encode('utf-8') self.RedirectionUrl = r.url self.Header = r.headers VSlog('Page ok') else: VSlog('Erreur, delete cookie') sContent = '' #self.RedirectionUrl = r.url #self.Header = r.headers MemCookie = {} #r.cookies.clear() GestionCookie().DeleteCookie(self.host.replace('.', '_')) #fh = open('c:\\test.txt', 'w') #fh.write(sContent) #fh.close() #Memorisation des cookies c = '' cookie = MemCookie if cookie: for i in cookie: c = c + i + '=' + cookie[i] + ';' #Write them GestionCookie().SaveCookie(self.host.replace('.', '_'), c) if Mode_Debug: VSlog('Sauvegarde cookies: ' + str(c)) return sContent
def DecryptddlProtect(url): #xbmc.log("DecryptddlProtect") #xbmc.log('>>' + url) if not (url): return '' cookies = '' #try to get previous cookie cookies = GestionCookie().Readcookie('liens_free-telechargement_org') #xbmc.log( 'cookie récupéré:') #xbmc.log( 'Ancien' + cookies ) oRequestHandler = cRequestHandler(url) if cookies: oRequestHandler.addHeaderEntry('Cookie', cookies) sHtmlContent = oRequestHandler.request() #A partir de la on a les bon cookies pr la protection cloudflare #Si ca demande le captcha if 'Veuillez recopier le captcha ci-dessus' in sHtmlContent: if cookies: GestionCookie().DeleteCookie('liens_free-telechargement_org') oRequestHandler = cRequestHandler(url) sHtmlContent = oRequestHandler.request() s = re.findall('src=".\/([^<>"]+?)" alt="CAPTCHA Image"', sHtmlContent) if URL_PROTECT in s[0]: image = s[0] else: image = URL_PROTECT + s[0] #cConfig().log(image) captcha, cookies2 = get_response(image, cookies) cookies = cookies + '; ' + cookies2 #xbmc.log( 'New ' + cookies) oRequestHandler = cRequestHandler(url) oRequestHandler.setRequestType(1) oRequestHandler.addHeaderEntry('User-Agent', UA) oRequestHandler.addHeaderEntry('Accept-Language', 'fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4') oRequestHandler.addHeaderEntry( 'Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8' ) oRequestHandler.addHeaderEntry('Cookie', cookies) oRequestHandler.addHeaderEntry('Referer', url) oRequestHandler.addParameters('do', 'contact') oRequestHandler.addParameters('ct_captcha', captcha) sHtmlContent = oRequestHandler.request() #xbmc.log( sHtmlContent ) if 'Code de securite incorrect' in sHtmlContent: cGui().showInfo("Erreur", 'Mauvais Captcha', 5) return 'rate' if 'Veuillez recopier le captcha ci-dessus' in sHtmlContent: cGui().showInfo("Erreur", 'Rattage', 5) return 'rate' #si captcha reussi #save cookies GestionCookie().SaveCookie('liens_free-telechargement_org', cookies) return sHtmlContent
def showMovies(sSearch = ''): #xbmc.log('showMovies') oGui = cGui() oInputParameterHandler = cInputParameterHandler() if sSearch: oInputParameterHandler = cInputParameterHandler() sType = oInputParameterHandler.getValue('type') Url_Search = URL_MAIN if sType: if sType == "serie": Url_Search = URL_MAIN_SERIE else: Url_Search = URL_MAIN if sSearch == URL_FAV: sUrl = URL_FAV cookies = '' #try to get previous cookie cookies = GestionCookie().Readcookie('streamase.com') oRequestHandler = cRequestHandler(sUrl) if cookies: oRequestHandler.addHeaderEntry('Cookie',cookies) sHtmlContent = oRequestHandler.request() sSearch = '' #xbmc.log(sHtmlContent) else: sUrl = Url_Search + 'index.php?do=search' if URL_SEARCH[0] in sSearch: sSearch=sSearch.replace(URL_SEARCH[0],'') oRequestHandler = cRequestHandler(sUrl) oRequestHandler.setRequestType(cRequestHandler.REQUEST_TYPE_POST) #oRequestHandler.addHeaderEntry('Origin',URL_MAIN) oRequestHandler.addHeaderEntry('Referer',Url_Search) #oRequestHandler.addParameters('do', 'search') oRequestHandler.addParameters('subaction', 'search') oRequestHandler.addParameters('search_start', '0') oRequestHandler.addParameters('full_search', '0') oRequestHandler.addParameters('result_from', '1') oRequestHandler.addParameters('story', sSearch) sHtmlContent = oRequestHandler.request() else: sUrl = oInputParameterHandler.getValue('siteUrl') #xbmc.log(sUrl) oRequestHandler = cRequestHandler(sUrl) if URL_FAV in sUrl: cookies = GestionCookie().Readcookie('streamase.com') oRequestHandler.addHeaderEntry('Cookie',cookies) sHtmlContent = oRequestHandler.request() #xbmc.log(sHtmlContent) sCom = '' sQual = '' sYear = '' sPattern = '<h3 class="btl"><a href="([^"]+)">([^<]+?)</a></h3>.+?<div class="maincont">.+?src="([^"]+)".+?<br */>([^<]+?)<br */><br */>(.+?)<div class="clr"><\/div>' oParser = cParser() aResult = oParser.parse(sHtmlContent, sPattern) #cConfig().log(str(aResult)) if (aResult[0] == True): total = len(aResult[1]) for aEntry in aResult[1]: sQual = str(aEntry[3]) sTitle = str(aEntry[1]) sUrl2 = aEntry[0] sCom = aEntry[4] sCom = sCom.decode("unicode_escape").encode("latin-1") if aEntry[2].startswith('http'): sThumbnail=aEntry[2] else: sThumbnail=URL_MAIN + aEntry[2] #Si recherche et trop de resultat, on nettoye if sSearch and total > 2: if cUtil().CheckOccurence(sSearch,sTitle) == 0: continue oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', str(sUrl2)) oOutputParameterHandler.addParameter('sMovieTitle', str(sTitle)) oOutputParameterHandler.addParameter('sThumbnail', sThumbnail) oOutputParameterHandler.addParameter('sCom', sCom) sDisplayTitle = cUtil().DecoTitle(sTitle + ' (' + sQual + ')') oGui.addMovie(SITE_IDENTIFIER, 'showHosters', sDisplayTitle, '', sThumbnail, sCom, oOutputParameterHandler) sNextPage = __checkForNextPage(sHtmlContent) if (sNextPage != False): oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sNextPage) oGui.addNext(SITE_IDENTIFIER, 'showMovies', '[COLOR teal]Next >>>[/COLOR]', oOutputParameterHandler) #Passage en mode vignette sauf en cas de recherche globale #if not bGlobal_Search: #xbmc.executebuiltin('Container.SetViewMode(500)') if not sSearch: oGui.setEndOfDirectory()
#get cookie cookies = '' if 'Set-Cookie' in head: oParser = cParser() sPattern = '(?:^|,) *([^;,]+?)=([^;,\/]+?);' aResult = oParser.parse(str(head['Set-Cookie']), sPattern) #print aResult if (aResult[0] == True): for cook in aResult[1]: if 'deleted' in cook[1]: continue cookies = cookies + cook[0] + '=' + cook[1] + ';' #save cookie GestionCookie().SaveCookie(self.__sHosterIdentifier, cookies) self.DIALOG.VSinfo('Authentification reussie', self.__sDisplayName) VSlog('Auhentification reussie') return True def GetHtmlwithcookies(self, url, data, cookies): req = urllib2.Request(url, data, headers) if not (data == None): req.add_header('Referer', url) req.add_header('Cookie', cookies)
def showMovies(sSearch=''): oGui = cGui() oParser = cParser() if sSearch: sUrl = sSearch.replace(' ', '+') else: oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') Cookie = GestionCookie().Readcookie('time2watch') oRequestHandler = cRequestHandler(sUrl) if Cookie: oRequestHandler.addHeaderEntry('Cookie', Cookie) sHtmlContent = oRequestHandler.request() # Connection pour passer la limite if not 'Déconnexion' in sHtmlContent and ADDON.getSetting( 'hoster_time2watch_premium') == "true": VSlog("Connection") data = { 'username': ADDON.getSetting('hoster_time2watch_username'), 'pwd': ADDON.getSetting('hoster_time2watch_password') } data = urlEncode(data) opener = Noredirection() opener.addheaders = [('User-Agent', UA)] opener.addheaders.append( ('Content-Type', 'application/x-www-form-urlencoded')) opener.addheaders.append(('Accept-Encoding', 'gzip, deflate')) opener.addheaders.append(('Content-Length', str(len(data)))) response = opener.open("https://time2watch.io/login/", data) head = response.info() # get cookie Cookie = '' if 'Set-Cookie' in head: oParser = cParser() sPattern = '(?:^|,) *([^;,]+?)=([^;,\/]+?);' aResult = oParser.parse(str(head['Set-Cookie']), sPattern) # print(aResult) if (aResult[0] == True): for cook in aResult[1]: if 'deleted' in cook[1]: continue Cookie = Cookie + cook[0] + '=' + cook[1] + ';' GestionCookie().SaveCookie('time2watch', Cookie) oRequestHandler = cRequestHandler(sUrl) oRequestHandler.addHeaderEntry('Cookie', Cookie) sHtmlContent = oRequestHandler.request() sPattern = '<div class="col-lg-4.+?<a href="([^"]+)">.+?affiche_liste" src="([^"]+)".+?alt="([^"]+)".+?<i class="fa fa-tv"></i>([^<]+)<.+?div class="synopsis_hover".+?>([^<]+)<' aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == False): oGui.addText(SITE_IDENTIFIER) if (aResult[0] == True): total = len(aResult[1]) progress_ = progress().VScreate(SITE_NAME) for aEntry in aResult[1]: progress_.VSupdate(progress_, total) if progress_.iscanceled(): break sUrl2 = URL_MAIN + aEntry[0] sThumb = URL_MAIN + aEntry[1] sTitle = aEntry[2] sQual = aEntry[3].replace(' ', '') sDesc = aEntry[4] sTitle = sTitle.replace('En streaming', '') sDisplayTitle = ('%s [%s]') % (sTitle, sQual) oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sUrl2) oOutputParameterHandler.addParameter('sMovieTitle', sTitle) oOutputParameterHandler.addParameter('sThumb', sThumb) oOutputParameterHandler.addParameter('sDesc', sDesc) oOutputParameterHandler.addParameter('sCookie', Cookie) if '/serie/' in sUrl2 or '/anime/' in sUrl2: oGui.addTV(SITE_IDENTIFIER, 'showSaisonEpisodes', sDisplayTitle, '', sThumb, sDesc, oOutputParameterHandler) else: oGui.addMovie(SITE_IDENTIFIER, 'showMoviesLink', sDisplayTitle, '', sThumb, sDesc, oOutputParameterHandler) progress_.VSclose(progress_) if not sSearch: sNextPage = __checkForNextPage(sHtmlContent) if (sNextPage != False): oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sNextPage) number = re.search('/([0-9]+)', sNextPage).group(1) oGui.addNext(SITE_IDENTIFIER, 'showMovies', '[COLOR teal]Page ' + number + ' >>>[/COLOR]', oOutputParameterHandler) oGui.setEndOfDirectory()
def AddCookies(self): cookies = GestionCookie().Readcookie(self.__sHosterIdentifier) return 'Cookie=' + cookies
def showMovies(sSearch=''): oGui = cGui() oInputParameterHandler = cInputParameterHandler() sMovieTitle = oInputParameterHandler.getValue('sMovieTitle') if sSearch: sUrl = sSearch #Desactive pr le moment , mais on garde car ca bouge souvent if False: #need a cookie for search oRequestHandler = cRequestHandler(URL_MAIN) sHtmlContent = oRequestHandler.request() head = oRequestHandler.GetHeaders() c = re.search('Set-Cookie: PHPSESSID=(.+?);', str(head)) if c: cookiesearch = 'PHPSESSID=' + c.group(1) #on recupere les cookie cloudflare oRequestHandler = cRequestHandler(sUrl) sHtmlContent = oRequestHandler.request() from resources.lib.config import GestionCookie cookies = GestionCookie().Readcookie('sokrostream_biz') #on ajoute les deux cookies = cookies + '; ' + cookiesearch #xbmc.log('NEW ****' + cookies, xbmc.LOGNOTICE) oRequestHandler = cRequestHandler(sUrl) oRequestHandler.addHeaderEntry('Cookie', cookies) oRequestHandler.addHeaderEntry('Referer', sUrl) oRequestHandler.addHeaderEntry( 'Accept-Language', 'fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4') oRequestHandler.addHeaderEntry( 'Accept', 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' ) oRequestHandler.addHeaderEntry('Content-Type', 'text/html; charset=utf-8') sHtmlContent = oRequestHandler.request() else: oRequestHandler = cRequestHandler(sUrl) oRequestHandler.addHeaderEntry('Referer', sUrl) sHtmlContent = oRequestHandler.request() else: sUrl = oInputParameterHandler.getValue('siteUrl') oRequestHandler = cRequestHandler(sUrl) sHtmlContent = oRequestHandler.request() #sHtmlContent = SucurieBypass().GetHtml(sUrl) #fh = open('c:\\test.txt', "w") #fh.write(sHtmlContent) #fh.close() sHtmlContent = sHtmlContent.replace( '<span class="tr-dublaj"></span>', '').replace('<span class="tr-altyazi"></span>', '').replace('<small>', '').replace('</small>', '').replace( '<span class="likeThis">', '').replace('</span>', '') if (sSearch or ('/series' in sUrl) or ('/search/' in sUrl)): sHtmlContent = sHtmlContent.replace("\n", "") sHtmlContent = re.sub('<div class="yazitip">Series similaires</div>.+', '', sHtmlContent) sPattern = '<div class="moviefilm">\s+<a href=".+?">\s+<img src="([^<]+)" alt=".+?".+?<\/a>\s+<div class="movief"><a href="([^<]+)">(.+?)<\/a>' else: sPattern = '<div class="moviefilm"> *<a href=".+?"> *<img src="([^<]+)" alt=".+?" height=".+?" width=".+?" \/><\/a> *<div class="ozet">.+?</div> *<div class="movief"><a href="([^<]+)">([^<]+)<\/a><\/div> *<div class="movie.+?">(.+?)<\/div>' oParser = cParser() aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == False): oGui.addText(SITE_IDENTIFIER) if (aResult[0] == True): total = len(aResult[1]) dialog = cConfig().createDialog(SITE_NAME) for aEntry in aResult[1]: cConfig().updateDialog(dialog, total) #on n'affiche pas les contenus similaires if (URL_MAIN + 'series/' in sUrl) and ('-saison-' not in aEntry[1]): continue if (sSearch or ('categories/series' in sUrl) or ('/series/' in sUrl) or ('/series-tv/' in sUrl) or ('/search/' in sUrl)): sTitle = aEntry[2] else: sTitle = aEntry[2] + ' (' + aEntry[3] + ')' if sMovieTitle: sTitle = sMovieTitle + sTitle sDisplayTitle = cUtil().DecoTitle(sTitle) sUrl2 = str(aEntry[1]) oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sUrl2) oOutputParameterHandler.addParameter('sMovieTitle', sTitle) oOutputParameterHandler.addParameter('sThumbnail', str(aEntry[0])) if ('-saison-' in sUrl2): oGui.addTV(SITE_IDENTIFIER, 'showEpisode', sDisplayTitle, '', aEntry[0], '', oOutputParameterHandler) elif ('/series/' in sUrl2): oGui.addTV(SITE_IDENTIFIER, 'showMovies', sDisplayTitle, '', aEntry[0], '', oOutputParameterHandler) else: oGui.addMovie(SITE_IDENTIFIER, 'showLinks', sDisplayTitle, '', aEntry[0], '', oOutputParameterHandler) cConfig().finishDialog(dialog) sNextPage = __checkForNextPage(sHtmlContent) if (sNextPage != False): oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sNextPage) oGui.addNext(SITE_IDENTIFIER, 'showMovies', '[COLOR teal]Next >>>[/COLOR]', oOutputParameterHandler) if not sSearch: oGui.setEndOfDirectory()
def showHosters(): oGui = cGui() oParser = cParser() oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') sMovieTitle = oInputParameterHandler.getValue('sMovieTitle') sThumb = oInputParameterHandler.getValue('sThumb') oRequestHandler = cRequestHandler(sUrl) sHtmlContent = oRequestHandler.request() sPattern = '<span class="(?:14|15)"><a href="([^"]+)"' aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == True): for aEntry in aResult[1]: if "ReviveLink" in aEntry: url2 = 'http://' + ( aEntry.split('/')[2]).lower() + '/qcap/Qaptcha.jquery.php' idUrl = aEntry.split('/')[3] # Make random key s = "azertyupqsdfghjkmwxcvbn23456789AZERTYUPQSDFGHJKMWXCVBN_-#@" RandomKey = ''.join(random.choice(s) for i in range(32)) oRequestHandler = cRequestHandler(url2) oRequestHandler.setRequestType(1) oRequestHandler.addHeaderEntry('Host', 'revivelink.com') oRequestHandler.addHeaderEntry('User-Agent', UA) oRequestHandler.addHeaderEntry( 'Accept', 'application/json, text/javascript, */*; q=0.01') oRequestHandler.addHeaderEntry( 'Accept-Language', 'fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3') oRequestHandler.addHeaderEntry('Referer', aEntry) oRequestHandler.addHeaderEntry( 'Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8') oRequestHandler.addHeaderEntry('X-Requested-With', 'XMLHttpRequest') oRequestHandler.addParameters('action', 'qaptcha') oRequestHandler.addParameters('qaptcha_key', RandomKey) sHtmlContent = oRequestHandler.request() cookies = oRequestHandler.GetCookies() GestionCookie().SaveCookie('revivelink.com', cookies) # VSlog('result' + sHtmlContent) if not '"error":false' in sHtmlContent: VSlog('Captcha rate') VSlog(sHtmlContent) return cookies = GestionCookie().Readcookie('revivelink.com') oRequestHandler = cRequestHandler( 'http://revivelink.com/slinks.php?R=' + idUrl + '&' + RandomKey) oRequestHandler.addHeaderEntry('Host', 'revivelink.com') oRequestHandler.addHeaderEntry('Referer', aEntry) oRequestHandler.addHeaderEntry( 'Accept', 'application/json, text/javascript, */*; q=0.01') oRequestHandler.addHeaderEntry('User-Agent', UA) oRequestHandler.addHeaderEntry( 'Accept-Language', 'fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4') oRequestHandler.addHeaderEntry( 'Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8') oRequestHandler.addHeaderEntry('X-Requested-With', 'XMLHttpRequest') oRequestHandler.addHeaderEntry('Cookie', cookies) sHtmlContent = oRequestHandler.request() result = re.findall('<td><a href="([^"]+)" title=\'([^<]+)\'>', sHtmlContent) for url, title in result: sHosterUrl = url oHoster = cHosterGui().checkHoster(sHosterUrl) if (oHoster != False): oHoster.setDisplayName(title) oHoster.setFileName(title) cHosterGui().showHoster(oGui, oHoster, sHosterUrl, sThumb) else: sHosterUrl = aEntry oHoster = cHosterGui().checkHoster(sHosterUrl) if (oHoster != False): oHoster.setDisplayName(sMovieTitle) oHoster.setFileName(sMovieTitle) cHosterGui().showHoster(oGui, oHoster, sHosterUrl, sThumb) oGui.setEndOfDirectory()
def showAllPlaylist(): # On recupere les differentes playlist si il y en a oGui = cGui() oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') sTitle = oInputParameterHandler.getValue('sMovieTitle') sThumb = oInputParameterHandler.getValue('sThumbnail') sDesc = oInputParameterHandler.getValue('sDescription') # VSlog(str(sUrl)) if 'firstonetv' and 'Register-Login' in sUrl: session = requests.Session() url = 'https://www.firstonetv.net/Register-Login' data = { 'usrmail': ADDON.getSetting('hoster_firstonetv_username'), 'password': ADDON.getSetting('hoster_firstonetv_password'), 'login': '******' } headers = { 'user-agent': UA, 'Content-Type': 'application/x-www-form-urlencoded', 'Referer': 'https://www.firstonetv.net/Index', 'Content-Length': str(len(data)) } session.post(url, data=data, headers=headers) cookiesDict = requests.utils.dict_from_cookiejar(session.cookies) getUser = re.match("{'(.+?)': '(.+?)',", str(cookiesDict)) # VSlog(cookiesDict) cookies = str(getUser.group(1)) + '=' + str(getUser.group(2)) GestionCookie().SaveCookie('firstonetv', cookies) dialog().VSinfo('Authentification réussie merci de recharger la page', 'FirstOneTv', 15) return sHtmlContent = getHtml(sUrl) if 'myfree-tivi' in sUrl: aResult = re.findall('<meta name="csrf-token" content="(.+?)">', sHtmlContent) if aResult: token = aResult[0] # VSlog(token) sHtmlContent = getHtml(sUrl, token) if 'firstonetv' in sUrl: sPattern = '(?:"surl":"{\".+?|,.+?)"([^"]+)\".+?"http([^"]+).m3u8' elif 'myfree-tivi' in sUrl: sPattern = 'url".+?"(.+?)".+?title.+?"(.+?)".+?thumb".+?"(.+?)"' elif 'iptvgratuit.com' in sUrl: sPattern = '<h4><a class="more-link" title="(.+?)" href="(.+?)" target="_blank" rel="noopener"><button>.+?</button></a></h4>' elif 'dailyiptvlist.com' in sUrl: sPattern = '<p></br><br /><strong>2. Click on link to download .+? iptv channels list</strong></p>\s*.+?<a href="(.+?)">Download (.+?)</a>' elif 'iptvsource.com': sPattern = '<a href="([^"]+)">Download as([^"]+)</a>' oParser = cParser() aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == True): total = len(aResult[1]) progress_ = progress().VScreate(SITE_NAME) for aEntry in aResult[1]: progress_.VSupdate(progress_, total) if progress_.iscanceled(): break if 'firstonetv' in sUrl: sTitle = sTitle + aEntry[0] sDesc = sDesc sThumb = sThumb sUrl2 = 'http' + aEntry[1].replace('\\\/', '/').replace( '\/', '/' ) + '.m3u8|Referer=' + sUrl + '&User-Agent=' + UA + '&X-Requested-With=ShockwaveFlash/28.0.0.137&Origin=https://www.firstonetv.net' elif 'myfree-tivi' in sUrl: sTitle = str(aEntry[1]) sUrl2 = aEntry[0].replace('\\\/', '/').replace("\/", "/") sThumb = 'https:' + str(aEntry[2]).replace( '\\\/', '/').replace('\/', '/') sDesc = '' elif 'iptvgratuit.com' in sUrl: sTitle = aEntry[0] sUrl2 = aEntry[1] sThumb = '' sDesc = '' else: sTitle = aEntry[1] sUrl2 = aEntry[0] sThumb = '' sDesc = '' oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sUrl2) oOutputParameterHandler.addParameter('sMovieTitle', sTitle) if 'myfree-tivi' or 'firstonetv' in sUrl: oOutputParameterHandler.addParameter('sThumbnail', sThumb) if 'iptvgratuit' and 'world-iptv-links' in sUrl: oGui.addDir(SITE_IDENTIFIER, 'showWorldIptvGratuit', sTitle, '', oOutputParameterHandler) elif 'firstonetv' in sUrl or 'myfree-tivi' in sUrl: oGuiElement = cGuiElement() oGuiElement.setSiteName(SITE_IDENTIFIER) oGuiElement.setFunction('play__') oGuiElement.setTitle(sTitle) oGuiElement.setFileName(sTitle) oGuiElement.setIcon(sThumb) oGuiElement.setMeta(0) oGuiElement.setThumbnail(sThumb) oGuiElement.setDirectTvFanart() oGuiElement.setCat(6) oGui.CreateSimpleMenu(oGuiElement, oOutputParameterHandler, SITE_IDENTIFIER, SITE_IDENTIFIER, 'direct_epg', 'Guide tv Direct') oGui.CreateSimpleMenu(oGuiElement, oOutputParameterHandler, SITE_IDENTIFIER, SITE_IDENTIFIER, 'soir_epg', 'Guide tv Soir') oGui.CreateSimpleMenu(oGuiElement, oOutputParameterHandler, SITE_IDENTIFIER, SITE_IDENTIFIER, 'enregistrement', 'Enregistrement') oGui.createContexMenuBookmark(oGuiElement, oOutputParameterHandler) oGui.addFolder(oGuiElement, oOutputParameterHandler) else: oGui.addDir(SITE_IDENTIFIER, 'showWeb', sTitle, '', oOutputParameterHandler) progress_.VSclose(progress_) oGui.setEndOfDirectory()