def __createdb(self): sql_create = "CREATE TABLE IF NOT EXISTS movie ("\ "imdb_id TEXT, "\ "tmdb_id TEXT, "\ "title TEXT, "\ "year INTEGER,"\ "director TEXT, "\ "writer TEXT, "\ "tagline TEXT, "\ "credits TEXT,"\ "vote_average FLOAT, "\ "vote_count TEXT, "\ "runtime TEXT, "\ "overview TEXT,"\ "mpaa TEXT, "\ "premiered TEXT, "\ "genre TEXT, "\ "studio TEXT,"\ "status TEXT,"\ "poster_path TEXT, "\ "trailer TEXT, "\ "backdrop_path TEXT,"\ "playcount INTEGER,"\ "UNIQUE(imdb_id, tmdb_id, title, year)"\ ");" try: self.dbcur.execute(sql_create) except: VSlog('Erreur: ne peux pas créer de table') sql_create = "CREATE TABLE IF NOT EXISTS tvshow ("\ "imdb_id TEXT, "\ "tmdb_id TEXT, "\ "title TEXT, "\ "year INTEGER,"\ "director TEXT, "\ "writer TEXT, "\ "credits TEXT,"\ "vote_average FLOAT, "\ "vote_count TEXT, "\ "runtime TEXT, "\ "overview TEXT,"\ "mpaa TEXT, "\ "premiered TEXT, "\ "genre TEXT, "\ "studio TEXT,"\ "status TEXT,"\ "poster_path TEXT,"\ "trailer TEXT, "\ "backdrop_path TEXT,"\ "playcount INTEGER,"\ "UNIQUE(imdb_id, tmdb_id, title)"\ ");" self.dbcur.execute(sql_create) sql_create = "CREATE TABLE IF NOT EXISTS season ("\ "imdb_id TEXT, "\ "tmdb_id TEXT, " \ "season INTEGER, "\ "year INTEGER,"\ "premiered TEXT, "\ "poster_path TEXT,"\ "playcount INTEGER,"\ "UNIQUE(imdb_id, tmdb_id, season)"\ ");" self.dbcur.execute(sql_create) sql_create = "CREATE TABLE IF NOT EXISTS episode ("\ "imdb_id TEXT, "\ "tmdb_id TEXT, "\ "episode_id TEXT, "\ "season INTEGER, "\ "episode INTEGER, "\ "title TEXT, "\ "director TEXT, "\ "writer TEXT, "\ "overview TEXT, "\ "vote_average FLOAT, "\ "premiered TEXT, "\ "poster_path TEXT, "\ "playcount INTEGER, "\ "UNIQUE(imdb_id, tmdb_id, episode_id, title)"\ ");" self.dbcur.execute(sql_create) VSlog('table créée')
# Adult Stream = xbmcaddon.Addon('plugin.video.adult.stream') # sLibrary = xbmc.translatePath(Adult Stream.getAddonInfo("path")).decode("utf-8") #sys.path.append (sLibrary) from resources.lib.comaddon import addon, dialog, VSlog, xbmc, xbmcgui, window import xbmcvfs import sys import urllib import urllib2 #from util import VStranslatePath #from resources.lib.util import VStranslatePath try: from sqlite3 import dbapi2 as sqlite VSlog('SQLITE 3 as DB engine') except: from pysqlite2 import dbapi2 as sqlite VSlog('SQLITE 2 as DB engine') try: import json except: import simplejson as json SITE_IDENTIFIER = 'runscript' SITE_NAME = 'runscript' class cClear:
def LoadLinks(htmlcode): VSlog('Scan des liens') host = 'https://www.flashx.tv' sPattern = '[\("\'](https*:)*(\/[^,"\'\)\s]+)[\)\'"]' aResult = re.findall(sPattern, htmlcode, re.DOTALL) #VSlog(str(aResult)) for http, urlspam in aResult: sUrl = urlspam if http: sUrl = http + sUrl sUrl = sUrl.replace('/\/', '//') sUrl = sUrl.replace('\/', '/') #filtrage mauvaise url if (sUrl.count('/') < 2) or ('<' in sUrl) or ('>' in sUrl) or (len(sUrl) < 15): continue if '[' in sUrl or ']' in sUrl: continue if '.jpg' in sUrl or '.png' in sUrl: continue #VSlog('test : ' + sUrl) if '\\x' in sUrl or '\\u' in sUrl: sUrl = ASCIIDecode(sUrl) if not sUrl: continue if sUrl.startswith('//'): sUrl = 'http:' + sUrl if sUrl.startswith('/'): sUrl = host + sUrl #Url ou il ne faut pas aller if 'dok3v' in sUrl: continue #pour test if ('.js' not in sUrl) or ('.cgi' not in sUrl): continue #if 'flashx' in sUrl: #continue headers8 = { 'User-Agent': UA, 'Referer': 'https://www.flashx.tv/dl?playthis' } try: request = urllib2.Request(sUrl, None, headers8) reponse = urllib2.urlopen(request) sCode = reponse.read() reponse.close() #VSlog('Worked ' + sUrl) except urllib2.HTTPError, e: if not e.geturl() == sUrl: try: headers9 = { 'User-Agent': UA, 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Language': 'fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3', 'Accept-Encoding': 'gzip, deflate, br' } request = urllib2.Request( e.geturl().replace('https', 'http'), None, headers9) reponse = urllib2.urlopen(request) sCode = reponse.read() reponse.close() #VSlog('Worked ' + sUrl) except urllib2.HTTPError, e: VSlog(str(e.code)) #VSlog(e.read()) VSlog('Redirection Blocked ' + sUrl + ' Red ' + e.geturl()) pass else: #VSlog('Blocked ' + sUrl) VSlog(str(e.code)) VSlog('>>' + e.geturl()) VSlog(e.read())
def __getMediaLinkForGuest(self): oParser = cParser() #recuperation de la page #xbmc.log('url teste : ' + self.__sUrl) oRequest = cRequestHandler(self.__sUrl) oRequest.addHeaderEntry('referer', self.__sUrl) oRequest.addHeaderEntry('User-Agent', UA) sHtmlContent1 = oRequest.request() #fh = open('c:\\test.txt', "w") #fh.write(sHtmlContent1) #fh.close() #Recuperation url cachee TabUrl = [] #sPattern = '<span style="".+?id="([^"]+)">([^<]+)<\/span>' sPattern = '<p id="([^"]+)" *style=\"\">([^<]+)<\/p>' aResult = re.findall(sPattern, sHtmlContent1) if (aResult): TabUrl = aResult else: VSlog('OPL er 1') return False, False #xbmc.log("Nbre d'url : " + str(len(TabUrl))) #on essait de situer le code sPattern = '<script src="\/assets\/js\/video-js\/video\.js.+?.js"(.+)*' aResult = re.findall(sPattern, sHtmlContent1, re.DOTALL) if (aResult): sHtmlContent3 = aResult[0] else: VSlog('OPL er 2') return False, False #Deobfuscation, a optimiser pour accelerer le traitement code = '' maxboucle = 4 while (maxboucle > 0): sHtmlContent3 = CheckCpacker(sHtmlContent3) sHtmlContent3 = CheckJJDecoder(sHtmlContent3) sHtmlContent3 = CheckAADecoder(sHtmlContent3) maxboucle = maxboucle - 1 code = sHtmlContent3 #fh = open('c:\\html.txt', "w") #fh.write(code) #fh.close() id_final = "" sPattern = 'var srclink.*?\/stream\/.*?(#[^\'"]+).*?mime=true' aResult = re.findall(sPattern, code) if (aResult): id_final = aResult[0] else: VSlog('OPL er 9') return False, False if not (code): VSlog('OPL er 3') return False, False #Search the coded url Coded_url = '' for i in TabUrl: if len(i[1]) > 30: Coded_url = i[1] Item_url = '#' + i[0] VSlog(Item_url + ' : ' + Coded_url) if not (Coded_url): VSlog('Url codée non trouvée') return False, False #Nettoyage du code pr traitement code = CleanCode(code, Coded_url) #fh = open('c:\\JS.txt', "w") #fh.write(code) #fh.close() VSlog('Code JS extrait') dialog().VSinfo('Décodage: Peut durer plus d\'une minute.', self.__sDisplayName, 15) #interpreteur JS JP = JsParser() Liste_var = [] JP.AddHackVar(Item_url, Coded_url) JP.ProcessJS(code, Liste_var) url = None #for name in [ '#streamurl', '#streamuri', '#streamurj']: # if JP.IsVar( JP.HackVars, name ): # url = JP.GetVarHack( name ) # VSlog( 'Decoded url ' + name + ' : ' + url ) # break url = JP.GetVarHack(id_final) if not (url): VSlog('Rate, debug: ' + str(Liste_var)) return False, False dialog().VSinfo('Ok, lien décodé.', self.__sDisplayName, 15) api_call = self.__getHost() + "/stream/" + url + "?mime=true" if '::' in api_call: dialog().VSinfo('Possible problème d\'ip V6', self.__sDisplayName, 5) xbmc.sleep(5 * 1000) VSlog(api_call) if (api_call): return True, api_call return False, False
def handle_challenge(self, ctype, **kwargs): if not self._first: VSlog("You must solve another challenge.") self._first = False
def showMovies(sSearch=''): oGui = cGui() oParser = cParser() oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') sTag = oInputParameterHandler.getValue('sTag') if sSearch: sUrl = sSearch oRequestHandler = cRequestHandler(sUrl) sHtmlContent = oRequestHandler.request() sPattern = 'th-in" href="([^"]+).+?src="([^"]+)" alt="([^"]+).+?th-tip-meta.+?(?:|<span>([^\D]+).+?)#aaa;">([^<]+)' aResult = oParser.parse(sHtmlContent, sPattern) VSlog('#### BEGIN TESTE URL = ' + sUrl) TAGTest = '' sPatternFilm = 'short-images.+?ref="([^"]*)".+?src=".([^"]*).+?alt="([^"]*).+?qualite.(.+?).html.+?langue.(.+?).html' # URL_MAIN if (sUrl == MOVIE_NOTES[0]): #10 les mieux notes Films Box Office firstIndex = sHtmlContent.index('Films Box Office') lastIndex = sHtmlContent.index('LES PLUS POPULAIRES') if firstIndex > 0 and lastIndex > 0: sHtmlContent = sHtmlContent[firstIndex:lastIndex] #url image title quality lang sPattern = 'images">.+?ref="([^"]*)".+?title="([^"]*)".+?src=".([^"]*)".+?qualite.+?"([^<]*)<.+?lang.+?class="([^"]*)"' sPattern = sPatternFilm aResult = oParser.parse(sHtmlContent, sPattern) # TAGTESTE = '(TAG sUrl == MOVIE_NOTES[0] )' elif (sUrl == MOVIE_VIEWS[0]): # firstIndex = sHtmlContent.index('LES PLUS POPULAIRES') lastIndex = sHtmlContent.index('Films Récemment Ajoutés') if firstIndex > 0 and lastIndex > 0: sHtmlContent = sHtmlContent[firstIndex:lastIndex] # url image name sPattern = 'images">.+?ref="([^"]*)".+?src=".([^"]*)".+?alt="([^"]*)"' aResult = oParser.parse(sHtmlContent, sPattern) # TAGTESTE = '(TAG sUrl == MOVIE_VIEWS[0])' elif (sUrl == SERIE_NEWS_SAISONS[0] ): # Derniers épisodes Séries-TV ajoutée #href="([^"]*).>([^"]*)Saison([^<]*).+?.total_eps">([^<]*) #surl title sPattern = 'href="([^"]*).>([^"]*)<span class="total' aResult = oParser.parse(sHtmlContent, sPattern) TAGTESTE = '(TAG sUrl == SERIE_NEWS_SAISONS[0])' elif (sUrl == SERIE_NEWS_EPISODES[0]): #Derniers épisodes #url title lang sPattern = '<li><a href="([^"]*)">([^<]*).+?class="langue.([^"]*)' aResult = oParser.parse(sHtmlContent, sPattern) TAGTESTE = 'TAG (sUrl == SERIE_NEWS_EPISODES[0])' # URL_MAIN / serie or films elif ('/films' in sUrl): #url image title quality lang sPattern = 'short-images.+?ref="([^"]*)".+?src=".([^"]*).+?alt="([^"]*).+?qualite.+?"([^<]*)<.+?langue.+?">([^<]*)' sPattern = sPatternFilm aResult = oParser.parse(sHtmlContent, sPattern) TAGTESTE = '(TAG FilmsS in sUrl)' elif ('/series' in sUrl): #url image title #VSlog(sHtmlContent ) sPattern = 'images radius.+?ref=".([^"]*)".+?src=".([^"]*).+?alt="([^"]*)"' # spat01 "inutile aResult = oParser.parse(sHtmlContent, sPattern) TAGTESTE = '(TAG serie in sUrl)' if (aResult[0] == False): VSlog('##### /series aResult[0] = False') else: TAGTESTE = '(TAG NO FIND)' sPattern = 'images radius.+?ref="([^"]*)".+?src=".([^"]*).+?alt="([^"]*)' ## spat01 #url image short title aResult = oParser.parse(sHtmlContent, sPattern) #oGui.setEndOfDirectory() #return VSlog('##### TAGTESTE = ' + TAGTESTE) if (aResult[0] == False): VSlog('##### aResult[0] = False') oGui.addText(SITE_IDENTIFIER) if (aResult[0] == True): VSlog('##### aResult[0] = True') total = len(aResult[1]) #progress_ = progress().VScreate(SITE_NAME) sDesc = '#' if sTag != False: sDesc = sTag sDesc = '[COLOR skyblue]' + sTag + '[/COLOR]' VSlog('#### Find tag = ' + sTag) for aEntry in aResult[1]: sUrl2 = aEntry[0] if not URL_MAIN in aEntry[0]: sUrl2 = URL_MAIN + aEntry[0] sThumb = '' sYear = '' sLang = '' sQuality = '' #progress_.VSupdate(progress_, total) #if progress_.iscanceled(): #break if (sUrl == MOVIE_NOTES[0]): #10 les mieux notes Films Box Office # url image title quality lang sTitle = aEntry[2] sThumb = aEntry[1] sLang = aEntry[4] sQuality = aEntry[3] elif (sUrl == MOVIE_VIEWS[0]): # # url image title sTitle = aEntry[2] sThumb = aEntry[1] sDesc = 'Films Populaires ' elif (sUrl == SERIE_NEWS_SAISONS[0] ): # Derniers épisodes Séries-TV ajoutée # surl title sTitle = aEntry[1] VSlog('SERIE_NEWS_SAISONS[0]=' + sTitle) elif (sUrl == SERIE_NEWS_EPISODES[0]): ##url title lang sTitle = aEntry[1] sLang = aEntry[2] 'Nouveaux épisodes ajoutés ' VSlog('SERIE_NEWS_EPISODES[0]' + sTitle) elif ('/films' in sUrl): ##url image title quality lang sTitle = aEntry[2] sThumb = aEntry[1] sLang = aEntry[4] sQuality = aEntry[3] elif ('/series' in sUrl): #url image title sThumb = aEntry[1] sTitle = aEntry[2] else: #url image short title sTitle = aEntry[2] if not URL_MAIN in sThumb: sThumb = URL_MAIN + sThumb sDisplayTitle = ('%s (%s)(%s)') % (sTitle, sLang.upper(), sQuality.upper()) VSlog('---------------------------------------------------') VSlog('ParameterHandler : ') VSlog('sThumb = ' + sThumb) VSlog('description = ' + sDesc) VSlog('sLang = ' + sLang) VSlog('sQuality = ' + sQuality) VSlog('sQuality = ' + str(sTag)) oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sUrl2) oOutputParameterHandler.addParameter('sMovieTitle', sTitle) oOutputParameterHandler.addParameter('sThumb', sThumb) oOutputParameterHandler.addParameter('sDesc', sDesc) oOutputParameterHandler.addParameter('sYear', sYear) oOutputParameterHandler.addParameter('sLang ', sLang) oOutputParameterHandler.addParameter('sQuality', sQuality) oOutputParameterHandler.addParameter('sTag', sTag) VSlog('ADD') if '/series' in sUrl and sUrl != SERIE_NEWS_EPISODES[ 0] and sUrl != SERIE_NEWS_SAISONS[0]: #showSaisons VSlog('CALL SHOW SAISONS' + sTitle) oGui.addTV(SITE_IDENTIFIER, 'showSaisons', sDisplayTitle, '', sThumb, sDesc, oOutputParameterHandler) elif sUrl == SERIE_NEWS_SAISONS[0]: VSlog('CALL SHOW EPISODE +sTitle') oGui.addTV(SITE_IDENTIFIER, 'showEpisodes', sDisplayTitle, '', sThumb, sDesc, oOutputParameterHandler) else: VSlog('CALL showHosters film ou news episodes ' + sTitle) oGui.addMovie(SITE_IDENTIFIER, 'showHosters', sDisplayTitle, '', sThumb, sDesc, oOutputParameterHandler) #progress_.VSclose(progress_) sNextPage = __checkForNextPage(sUrl, 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) if not sSearch: # Le moteur de recherche du site est correct, laisser le nextPage même en globalSearch oGui.setEndOfDirectory()
def showHosters(): oGui = cGui() oInputParameterHandler = cInputParameterHandler() sMovieTitle = oInputParameterHandler.getValue('sMovieTitle') sUrl = oInputParameterHandler.getValue('siteUrl') sThumb = oInputParameterHandler.getValue('sThumb') sDesc = oInputParameterHandler.getValue('sDesc') sYear = oInputParameterHandler.getValue('sYear') sTag = oInputParameterHandler.getValue('sTag') VSlog('#### def showHosters()') VSlog('#### sUrl = ' + sUrl) oRequestHandler = cRequestHandler(sUrl.replace(' ', '%20')) oRequestHandler.addHeaderEntry('User-Agent', UA) sHtmlContent = oRequestHandler.request() oParser = cParser() sPattern = '<div class="fsynopsis"><p>([^<]*)' aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == True): VSlog('description = true') sDesc = str(aResult[1][0]) if (sTag != False and sTag != 'Langue' and sTag != 'Qualité'): #\r\n\r\n' sDesc = sTag + '\r\n' + sDesc oParser = cParser() sPattern = 'data-num="([^"]*).+?data-code="([^"]*)".+?server player-([^"]*)' 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 sHoster = aEntry[2] data_num = aEntry[0] data_code = aEntry[1] sUrl2 = 'https://wvw.filmgratuit.net/streamer.php?p=' + data_num + '&c=' + data_code #player.php #sTitle = ('%s [COLOR coral]%s[/COLOR]') % (sMovieTitle, sHoster) sDisplayTitle = ('%s (%s) [COLOR coral]%s[/COLOR]') % ( sMovieTitle, 'sLang', sHoster) sDisplayTitle = ('%s [COLOR coral]%s[/COLOR]') % (sMovieTitle, sHoster) oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sUrl2) oOutputParameterHandler.addParameter('sMovieTitle', sMovieTitle) oOutputParameterHandler.addParameter('sThumb', sThumb) oOutputParameterHandler.addParameter('sDesc', sDesc) oOutputParameterHandler.addParameter('sYear', sYear) oOutputParameterHandler.addParameter('sUrlreferer', sUrl) #oGui.addMovie(SITE_IDENTIFIER, 'hostersLink', sTitle, '', sThumb, sDesc, oOutputParameterHandler) oGui.addLink(SITE_IDENTIFIER, 'hostersLink', sDisplayTitle, sThumb, sDesc, oOutputParameterHandler) progress_.VSclose(progress_) oGui.setEndOfDirectory()
def showHosters(sSearch=''): #affiche les videos disponible du live oGui = cGui() oInputParameterHandler = cInputParameterHandler() sUrl4 = oInputParameterHandler.getValue('siteUrl4') sMovieTitle2 = oInputParameterHandler.getValue('sMovieTitle2') sThumb = oInputParameterHandler.getValue('sThumb') oRequestHandler = cRequestHandler(sUrl4) sHtmlContent = oRequestHandler.request() oParser = cParser() if not 'aliez' in sUrl4: sPattern = '<td bgcolor=".+?" *align="center".+?\s*<iframe.+?src="([^"]+)".+?</iframe>' elif 'youtube' or 'aliez' or 'laola1tv' in sUrl4: sPattern = '</script>\s*<iframe.+?src="([^"]+)".+?</iframe>\s*</td>' else: sPattern = '<td bgcolor=".+?" *align="center".+?\s*<iframe.+?src="([^"]+)".+?</iframe>' liste_url = [] aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0]): sHosterUrl = '' url = aResult[1][0] #url = 'http://www.sporcanli.com/frame2.html' #a garder peut etre utils pour ajouter un hébergeur VSlog(url) if 'emb.aliez.me' in url: #Terminer Referer = url UA = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0' oRequestHandler = cRequestHandler(url) oRequestHandler.addHeaderEntry('User-Agent', UA) sHtmlContent2 = oRequestHandler.request() sPattern2 = 'source: *\'(.+?)\'' aResult = re.findall(sPattern2, sHtmlContent2) if aResult: sHosterUrl = aResult[ 0] + '|User-Agent=' + UA + '&referer=' + Referer VSlog(sHosterUrl) if 'emb.aliez.me' in url: #obligatoire pour fixer bug 403 UA = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0' oRequestHandler = cRequestHandler(url) oRequestHandler.addHeaderEntry('User-Agent', UA) sHtmlContent2 = oRequestHandler.request() sPattern2 = 'source: *\'(http://a3.aliez.me.+?)\'' aResult = re.findall(sPattern2, sHtmlContent2) if aResult: sHosterUrl = aResult[0] + '|User-Agent=' + UA VSlog(sHosterUrl) if 'sport7.pw' in url: #Terminé oRequestHandler = cRequestHandler(url) sHtmlContent2 = oRequestHandler.request() sPattern2 = 'videoLink = \'(.+?)\'' aResult = re.findall(sPattern2, sHtmlContent2) if aResult: sHosterUrl = aResult[0] if 'totalsport.me' in url: #Terminé oRequestHandler = cRequestHandler(url) sHtmlContent2 = oRequestHandler.request() sPattern2 = 'source: "(.+?)"' aResult = re.findall(sPattern2, sHtmlContent2) if aResult: sHosterUrl = aResult[0] if 'sportsbar.pw' in url: #Terminé oRequestHandler = cRequestHandler(url) sHtmlContent2 = oRequestHandler.request() sPattern2 = 'videoLink = \'(.+?)\'' aResult = re.findall(sPattern2, sHtmlContent2) if aResult: sHosterUrl = aResult[0] if 'livesoccers.pw' in url: #Terminé oRequestHandler = cRequestHandler(url) sHtmlContent2 = oRequestHandler.request() sPattern2 = '<iframe src=\'(.+?)\'' aResult = re.findall(sPattern2, sHtmlContent2) if aResult: sHosterUrl2 = aResult[0] UA = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0' oRequestHandler = cRequestHandler(sHosterUrl2) oRequestHandler.addHeaderEntry('User-Agent', UA) oRequestHandler.addHeaderEntry('Referer', sHosterUrl2) sHtmlContent3 = oRequestHandler.request() #VSlog(sHtmlContent3) sPattern3 = '<source src="([^"]+)"' aResult1 = re.findall(sPattern3, sHtmlContent3) if aResult1: sHosterUrl = aResult1[0] if 'assia' in url: #Terminé oRequestHandler = cRequestHandler(url) sHtmlContent2 = oRequestHandler.request() sPattern2 = 'file:"([^"]+)"' aResult = re.findall(sPattern2, sHtmlContent2) if aResult: sHosterUrl = aResult[0] if 'sportlive.site' in url: #Terminé oRequestHandler = cRequestHandler(url) sHtmlContent2 = oRequestHandler.request() sPattern2 = '<iframe src="(.+?)"' aResult = re.findall(sPattern2, sHtmlContent2) if aResult: sHosterUrl2 = aResult[0] #VSlog(str(sHosterUrl2)) oRequestHandler = cRequestHandler(sHosterUrl2) sHtmlContent3 = oRequestHandler.request() sPattern3 = '<script type=\'text/javascript\'>id=\'(.+?)\'' aResult2 = re.findall(sPattern3, sHtmlContent3) if aResult2: sHosterUrl3 = aResult2[0] sHosterUrl3 = "http://hdcast.pw/stream_jw2.php?id=" + sHosterUrl3 #VSlog(str(sHosterUrl3)) oRequestHandler = cRequestHandler(sHosterUrl3) sHtmlContent4 = oRequestHandler.request() sPattern4 = 'curl = "([^"]+)";' aResult3 = re.findall(sPattern4, sHtmlContent4) if aResult3: sHosterUrl = aResult3[0] sHosterUrl = base64.b64decode(sHosterUrl) VSlog(sHosterUrl) if 'sport-stream365' in url: #Terminé sPattern2 = '<td bgcolor=".+?" *align="center".+?\s*<iframe.+?src="http://sport-stream365.com.+?/?game=([^"]+)&ta.+?".+?</iframe>' aResult = re.findall(sPattern2, sHtmlContent) if aResult: gameId = aResult[0] sHosterUrl = 'http://91.192.80.210/edge0/xrecord/' + gameId + '/prog_index.m3u8' if 'youtube' in url: #Je sais pas sPattern2 = 'youtube.com/embed/(.+?)[?]autoplay=1' aResult = re.findall(sPattern2, url) if aResult: video_id = aResult[0] VSlog(video_id) url = url.replace('/embed/', '/watch?v=') oRequestHandler = cRequestHandler(url) sHtmlContent2 = oRequestHandler.request() sPattern2 = '\W[\'"]?t[\'"]?: ?[\'"](.+?)[\'"]' aResult = re.findall(sPattern2, sHtmlContent2) if aResult: token = aResult[0] #VSlog(token) params = { 'video_id': video_id, 'el': '$el', 'ps': 'default', 'eurl': 'https://youtube.googleapis.com/v/' + video_id, 'hl': 'fr_FR', 't': urllib2.quote(token) } url2 = 'https://youtube.com/get_video_info?video_id=' + video_id #+ urllib.parse.urlencode(params) req = urllib2.Request(url2) response = urllib2.urlopen(req) sHtmlContent3 = response.read().decode('utf-8') #VSlog(sHtmlContent3) sPattern3 = '&hlsvp=(.+?).m3u8.+?' aResult = re.findall(sPattern3, sHtmlContent3) if aResult: sHosterUrl = urllib2.unquote(aResult[0]) sHosterUrl = urllib2.unquote(sHosterUrl) sHosterUrl = sHosterUrl + '.m3u8' #VSlog(sHosterUrl) if 'streamup.me' in url: #Terminé oRequestHandler = cRequestHandler(url) sHtmlContent2 = oRequestHandler.request() sPattern2 = '<iframe src="([^"]+)"' aResult = re.findall(sPattern2, sHtmlContent2) if aResult: sHosterUrl2 = aResult[0] VSlog(sHosterUrl2) oRequestHandler = cRequestHandler(sHosterUrl2) sHtmlContent3 = oRequestHandler.request() sHtmlContent3 = urllib.unquote(sHtmlContent3) VSlog(sHtmlContent3) sPattern3 = 'src: "\/\/(.+?)"' aResult = re.findall(sPattern3, sHtmlContent3) if aResult: sHosterUrl = 'http://' + aResult[0] if 'livestream' in url: #Je sais pas ne démarre pas de temps en temps sPattern2 = '<td bgcolor=".+?" *align="center".+?\s*<iframe.+?src="https://([^"]+)/player?.+?</iframe>' aResult = re.findall(sPattern2, sHtmlContent) if aResult: accountId = aResult[0] jsonUrl = 'https://player-api.new.' + accountId + '?format=short' oRequestHandler = cRequestHandler(jsonUrl) sHtmlContent = oRequestHandler.request() sPattern3 = '"m3u8_url":"(.+?)"' aResult = re.findall(sPattern3, sHtmlContent) if aResult: sHosterUrl = aResult[0] if 'forbet.tv' in url: #Probleme ssl oRequestHandler = cRequestHandler(url) sHtmlContent2 = oRequestHandler.request() sPattern2 = 'file: "([^"]+)"' aResult = re.findall(sPattern2, sHtmlContent2) if aResult: sHosterUrl = aResult[0] if 'p.hd24.watch' in url: #Terminé oRequestHandler = cRequestHandler(url) sHtmlContent2 = oRequestHandler.request() sPattern2 = 'data-channel="([^"]+)">' aResult = re.findall(sPattern2, sHtmlContent2) if aResult: Host = '190-2-146-56.livesports24.online' sHosterUrl = 'https://' + Host + '/' + aResult[0] + '.m3u8' if 'hdsoccerstreams.net' in url: #Pas terminer oRequestHandler = cRequestHandler(url) sHtmlContent2 = oRequestHandler.request() sPattern2 = '<script>fid="(.+?)"' aResult = re.findall(sPattern2, sHtmlContent2) if aResult: fid = aResult[0] VSlog(fid) UA = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0' url2 = 'http://webtv.ws/embed.php?live=spstream' + fid + '&vw=700&vh=440' Referer = url oRequestHandler = cRequestHandler(url2) oRequestHandler.addHeaderEntry('User-Agent', UA) oRequestHandler.addHeaderEntry('Referer', Referer) sHtmlContent3 = oRequestHandler.request() #VSlog(sHtmlContent3) if 'thesports4u.net' in url: #Pas terminer leurs hosters est down (erreur 404) oRequestHandler = cRequestHandler(url) sHtmlContent2 = oRequestHandler.request() sPattern2 = '<script>fid="(.+?)"' aResult = re.findall(sPattern2, sHtmlContent2) if aResult: fid = aResult[0] VSlog(fid) UA = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0' url2 = 'http://wlive.tv/embed.php?player=desktop&live=' + fid + '&vw=700&vh=440' oRequestHandler = cRequestHandler(url2) oRequestHandler.addHeaderEntry('User-Agent', UA) oRequestHandler.addHeaderEntry('Referer', url2) sHtmlContent3 = oRequestHandler.request() VSlog(sHtmlContent3) if 'sports-stream.net' in url: #Terminé oRequestHandler = cRequestHandler(url) sHtmlContent2 = oRequestHandler.request() sPattern2 = 'sports-stream.+?ch=(.+?)"' aResult = re.findall(sPattern2, sHtmlContent2) if aResult: fid = aResult[0] UA = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0' url2 = 'http://webtv.ws/embeds.php?live=spstream' + fid + '&vw=700&vh=440' oRequestHandler = cRequestHandler(url2) oRequestHandler.addHeaderEntry('User-Agent', UA) oRequestHandler.addHeaderEntry( 'Referer', 'http://www.sports-stream.net/chtv/sps.php?ch=' + fid) sHtmlContent2 = oRequestHandler.request() sPattern3 = 'source src="(.+?)".+?">' aResult = re.findall(sPattern3, sHtmlContent2) if aResult: sHosterUrl = aResult[0] if 'foot.futbol' in url: #Terminé oRequestHandler = cRequestHandler(url) sHtmlContent2 = oRequestHandler.request() sPattern2 = '<iframe src=\'(.+?)\'' aResult = re.findall(sPattern2, sHtmlContent2) if aResult: sHosterUrl2 = aResult[0] VSlog(sHosterUrl2) Referer = sHosterUrl2 UA = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36' oRequestHandler = cRequestHandler(sHosterUrl2) oRequestHandler.addHeaderEntry('User-Agent', UA) oRequestHandler.addHeaderEntry('Referer', Referer) sHtmlContent3 = oRequestHandler.request() VSlog(sHtmlContent3) sPattern3 = '<source src="([^"]+)"' aResult2 = re.findall(sPattern3, sHtmlContent3) if aResult2: sHosterUrl = aResult2[0] if 'viewhd.me' in url: #Pas terminer je sais pas comment on trouve le m3u dans hdstream oRequestHandler = cRequestHandler(url) sHtmlContent2 = oRequestHandler.request() sPattern2 = '<script>fid="([^"]+)"' aResult = re.findall(sPattern2, sHtmlContent2) if aResult: sHosterUrl2 = 'http://www.hdstream.live/embed.php?player=desktop&live=' + aResult[ 0] + '&vw=620&vh=490' VSlog(sHosterUrl2) Referer = sHosterUrl2 UA = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36' oRequestHandler = cRequestHandler(sHosterUrl2) oRequestHandler.addHeaderEntry('User-Agent', UA) oRequestHandler.addHeaderEntry('Referer', Referer) sHtmlContent3 = oRequestHandler.request() VSlog(sHtmlContent3) #if 'socolive.net' in url:#Probleme avec ea et autre (tout changé lol) #oRequestHandler = cRequestHandler(url) #sHtmlContent2 = oRequestHandler.request() #sPattern2 = 'channel=\'(.+?)\', g=\'(.+?)\'' #aResult = re.findall(sPattern2, sHtmlContent2) #VSlog(aResult) #if aResult: #for aEntry in aResult: #channel = aEntry[0] #g = aEntry[1] #VSlog(channel) #VSlog(g) #UA = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36' #url2 = 'https://www.ucasterplayer.com/hembedplayer/'+ channel +'/'+ g +'/700/480' #VSlog(url2) #oRequestHandler = cRequestHandler(url2) #oRequestHandler.addHeaderEntry('User-Agent',UA) #oRequestHandler.addHeaderEntry('Referer','http://socolive.net/ch=.+?') #sHtmlContent2 = oRequestHandler.request() #VSlog(sHtmlContent2) #sPattern3 = '"src", "https://" \+ ea \+ "([^"]+)"' #sPattern4 = 'ea = "([^"]+)"' #aResult2 = re.findall(sPattern4, sHtmlContent2) #aResult1 = re.findall(sPattern3, sHtmlContent2) #if aResult2: #urldomaine = aResult2[0] #VSlog(urldomaine) #if aResult1: #oRequestHandler.addHeaderEntry('User-Agent',UA) #Referer = url2 #UA = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36' #sHosterUrl = 'http://'+ 'p15.quest123.top' + aResult1[0] + '|User-Agent=' + UA + '&referer=' + Referer #VSlog(sHosterUrl) if '1me.club' in url: #Terminé oRequestHandler = cRequestHandler(url) sHtmlContent2 = oRequestHandler.request() sPattern2 = '<iframe src="(.+?)"' aResult = re.findall(sPattern2, sHtmlContent2) if aResult[0]: if 'whostreams.net' in aResult[0]: #Terminé Referer = 'http://1me.club' UA = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36' VSlog(aResult[0]) oRequestHandler = cRequestHandler(aResult[0]) oRequestHandler.addHeaderEntry('User-Agent', UA) oRequestHandler.addHeaderEntry('Referer', Referer) sHtmlContent3 = oRequestHandler.request() sPattern2 = '(\s*eval\s*\(\s*function(?:.|\s)+?{}\)\))' aResult = re.findall(sPattern2, sHtmlContent3) if aResult: str2 = aResult[0] if not str2.endswith(';'): str2 = str2 + ';' str = cPacker().unpack(str2) VSlog(str) sPattern3 = '{source:"([^"]+)"' aResult1 = re.findall(sPattern3, str) if aResult1: sHosterUrl = aResult1[0] if 'widestream.io' in aResult[0]: #Terminé oRequestHandler = cRequestHandler(aResult[0]) sHtmlContent3 = oRequestHandler.request() sPattern3 = 'file:"([^"]+)"' aResult1 = re.findall(sPattern3, sHtmlContent3) if aResult1: sHosterUrl = aResult1[0] #VSlog(sHosterUrl) xbmc.Player().play(sHosterUrl) return
def showResult(sSearch=''): # le menu resultat quand on a choisi le club oGui = cGui() if sSearch: sUrl = sSearch else: oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') oRequestHandler = cRequestHandler(sUrl) sHtmlContent = oRequestHandler.request() sPattern = '<span class="date">([^<>]+)</span>.+?<span class="graydesc">([^<>]+)</span>.+?<td align="right">([^<>]+).+?<td align="center">\s*<b>([^<>]+)</b>.+?<td>([^<>]+)</td>.+?<font color=".+?">.+?</font>.+?<a class="small" *href="([^"]+)"' oParser = cParser() aResult = oParser.parse(sHtmlContent, sPattern) #VSlog(str(aResult)) 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 sTitle = str(aEntry[2]) + str(aEntry[4]) sUrl2 = str(aEntry[5]) sDate = str(aEntry[0]) sComp = str(aEntry[1]) sEquip = str(aEntry[2]) sScore = str(aEntry[3]) sEquipe = str(aEntry[4]) sThumb = '' #sLang = str(aEntry[3]) #sQual = str(aEntry[4]) #sHoster = str(aEntry[2]) sDesc = '' sTitle = sTitle.decode("iso-8859-1", 'ignore') sTitle = cUtil().unescape(sTitle) sTitle = sTitle.encode("utf-8", 'ignore') sDate = sDate.decode("iso-8859-1", 'ignore') sDate = cUtil().unescape(sDate) sDate = sDate.encode("utf-8", 'ignore') sScore = sScore.decode("iso-8859-1", 'ignore') sScore = cUtil().unescape(sScore) sScore = sScore.encode("utf-8", 'ignore') sComp = sComp.decode("iso-8859-1", 'ignore') sComp = cUtil().unescape(sComp) sComp = sComp.encode("utf-8", 'ignore') sTitle = ('%s [%s] (%s) [COLOR]%s[/COLOR]]') % (sTitle, sScore, sDate, sComp) sUrl2 = URL_MAIN + sUrl2 oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sUrl2) oOutputParameterHandler.addParameter('sMovieTitlebis', sTitle) oOutputParameterHandler.addParameter('sThumb', sThumb) if '/series' in sUrl: oGui.addTV(SITE_IDENTIFIER, 'ShowSerieSaisonEpisodes', sTitle, '', sThumb, sDesc, oOutputParameterHandler) else: oGui.addMovie(SITE_IDENTIFIER, 'showHosters2', sTitle, '', sThumb, sDesc, oOutputParameterHandler) progress_.VSclose(progress_) if not sSearch: oGui.setEndOfDirectory() #def showDecode(): #les hosters des lives celui que je suis bloqué oGui = cGui() oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') sMovieTitle2 = oInputParameterHandler.getValue('sMovieTitle2') sThumb = oInputParameterHandler.getValue('sThumb') oRequestHandler = cRequestHandler(sUrl) sHtmlContent = oRequestHandler.request() oParser = cParser() sPattern = '.+?(http://.+?).+?' #urllib.unquote(sPattern) aResult = oParser.parse(sHtmlContent, sPattern) VSlog(str(aResult)) if (aResult[0] == True): for aEntry in aResult[1]: sHosterUrl = str(aEntry) sHosterUrl = sHosterUrl.decode("iso-8859-1", 'ignore') #sHosterUrl = cUtil().unescape(sHosterUrl) sHosterUrl = sHosterUrl.encode("utf-8", 'ignore') oHoster = cHosterGui().checkHoster(sHosterUrl) if (oHoster != False): oHoster.setDisplayName(sMovieTitle2) oHoster.setFileName(sMovieTitle2) cHosterGui().showHoster(oGui, oHoster, sHosterUrl, sThumb) oGui.setEndOfDirectory()
headers1.update({'X-Requested-With': 'XMLHttpRequest'}) headers1.update( {'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'}) #Requete request = urllib2.Request(url2, data, headers1) try: reponse = urllib2.urlopen(request, timeout=5) except urllib2.URLError, e: dialogs.VSinfo("Site Dl-Protecte HS", "Erreur", 5) VSlog(e.read()) VSlog(e.reason) return '' except urllib2.HTTPError, e: dialogs.VSinfo("Site Dl-Protecte HS", "Erreur", 5) VSlog(e.read()) VSlog(e.reason) return '' except timeout: VSlog('timeout') dialogs.VSinfo("Site Dl-Protecte HS", "Erreur", 5) return '' sHtmlContent = reponse.read() #VSlog( 'result' + sHtmlContent) #Recuperatioen et traitement cookies ??? cookies = reponse.info()['Set-Cookie'] c2 = re.findall('(?:^|,) *([^;,]+?)=([^;,\/]+?);', cookies) if not c2:
def showMovies2( sSearch=''): #affiche les matchs en direct depuis la section showMovie oGui = cGui() if sSearch: sUrl = sSearch else: oInputParameterHandler = cInputParameterHandler() sUrl2 = oInputParameterHandler.getValue('siteUrl2') oRequestHandler = cRequestHandler(sUrl2) sHtmlContent = oRequestHandler.request() #VSlog(sHtmlContent) sPattern = '<a class="live" href="([^>]+)">([^>]+)</a>\s*(?:<br><img src="//cdn.livetvcdn.net/img/live.gif"><br>|<br>)\s*<span class="evdesc">([^>]+)\s*<br>\s*([^>]+)</span>' oParser = cParser() aResult = oParser.parse(sHtmlContent, sPattern) #VSlog(str(aResult)) 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 sTitle2 = str(aEntry[1]).replace('<br>', ' ') sUrl3 = str(aEntry[0]) sThumb = '' #sLang = str(aEntry[3]) sQual = str(aEntry[3]) sHoster = str(aEntry[2]) sDesc = '' sTitle2 = sTitle2.decode("iso-8859-1", 'ignore') sTitle2 = cUtil().unescape(sTitle2) sTitle2 = sTitle2.encode("utf-8") sHoster = sHoster.decode("iso-8859-1", 'ignore') sHoster = cUtil().unescape(sHoster) sHoster = sHoster.encode("utf-8") sQual = sQual.decode("iso-8859-1", 'ignore') sQual = cUtil().unescape(sQual) sQual = sQual.encode("utf-8", 'ignore') sTitle2 = ('%s (%s) [COLOR yellow]%s[/COLOR]') % (sTitle2, sHoster, sQual) sUrl3 = URL_MAIN + sUrl3 VSlog(sUrl3) oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl3', sUrl3) oOutputParameterHandler.addParameter('sMovieTitle2', sTitle2) oOutputParameterHandler.addParameter('sThumb', sThumb) oGui.addMovie(SITE_IDENTIFIER, 'showMovies3', sTitle2, '', sThumb, sDesc, oOutputParameterHandler) progress_.VSclose(progress_) if not sSearch: oGui.setEndOfDirectory()
def __getMediaLinkForGuest(self): if 'yggseries.com' in self.__sUrl: baseUrl = 'https://yggseries.com/api/source/' elif 'french-vid' in self.__sUrl: baseUrl = 'https://www.fembed.com/api/source/' elif 'fembed.' in self.__sUrl: baseUrl = 'https://www.fembed.com/api/source/' elif 'vfsplayer' in self.__sUrl: baseUrl = 'https://vfsplayer.xyz/api/source/' elif 'fsimg' in self.__sUrl: baseUrl = 'https://www.fsimg.info/api/source/' elif 'fem.tohds' in self.__sUrl: baseUrl = 'https://feurl.com/api/source/' elif 'core1player' in self.__sUrl: baseUrl = 'https://www.core1player.com/api/source/' if 'fem.tohds' in self.__sUrl: oRequestHandler = cRequestHandler(self.__sUrl) sHtmlContent = oRequestHandler.request() sPattern = '<iframe src="([^"]+)"' oParser = cParser() aResult = oParser.parse(sHtmlContent, sPattern) url = baseUrl + aResult[1][0].rsplit('/', 1)[1] postdata = 'r=' + urllib.quote_plus( self.__sUrl) + '&d=' + baseUrl.replace('https://', '').replace( '/api/source/', '') else: url = baseUrl + self.__sUrl.rsplit('/', 1)[1] postdata = 'r=' + urllib.quote_plus( self.__sUrl) + '&d=' + baseUrl.replace('https://', '').replace( '/api/source/', '') VSlog(url) oRequest = cRequestHandler(url) oRequest.setRequestType(1) oRequest.addHeaderEntry('User-Agent', UA) # oRequest.addHeaderEntry('Accept', '*/*') # oRequest.addHeaderEntry('Accept-Encoding','gzip, deflate, br') # oRequest.addHeaderEntry('Accept-Language','fr,fr-FR;q=0.8,en-US;q=0.5,en;q=0.3') # oRequest.addHeaderEntry('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8') oRequest.addHeaderEntry('Referer', self.__sUrl) oRequest.addParametersLine(postdata) sHtmlContent = oRequest.request() VSlog(sHtmlContent) page = json.loads(sHtmlContent) if page: url = [] qua = [] for x in page['data']: url.append(x['file']) qua.append(x['label']) if (url): api_call = dialog().VSselectqual(qua, url) if (api_call): return True, api_call return False, False
def __callRequest(self): if self.__aParamatersLine: sParameters = self.__aParamatersLine else: sParameters = urllib.urlencode(self.__aParamaters) if (self.__cType == cRequestHandler.REQUEST_TYPE_GET): if (len(sParameters) > 0): if (self.__sUrl.find('?') == -1): self.__sUrl = self.__sUrl + '?' + str(sParameters) sParameters = '' else: self.__sUrl = self.__sUrl + '&' + str(sParameters) sParameters = '' if (len(sParameters) > 0): oRequest = urllib2.Request(self.__sUrl, sParameters) else: oRequest = urllib2.Request(self.__sUrl) for aHeader in self.__aHeaderEntries: for sHeaderKey, sHeaderValue in aHeader.items(): oRequest.add_header(sHeaderKey, sHeaderValue) sContent = '' try: if self.BUG_SSL: VSlog('Retrying with SSL bug') import ssl gcontext = ssl.SSLContext(ssl.PROTOCOL_SSLv23) oResponse = urllib2.urlopen(oRequest, timeout = self.__timeout,context=gcontext) else: oResponse = urllib2.urlopen(oRequest, timeout = self.__timeout) sContent = oResponse.read() self.__sResponseHeader = oResponse.info() #compressed page ? if self.__sResponseHeader.get('Content-Encoding') == 'gzip': import zlib sContent = zlib.decompress(sContent, zlib.MAX_WBITS|16) #https://bugs.python.org/issue4773 self.__sRealUrl = oResponse.geturl() self.__sResponseHeader = oResponse.info() oResponse.close() except urllib2.HTTPError, e: if e.code == 503: #Protected by cloudFlare ? from resources.lib import cloudflare if cloudflare.CheckIfActive(e.read()): self.__sResponseHeader = e.hdrs cookies = self.GetCookies() VSlog( 'Page protegee par cloudflare') CF = cloudflare.CloudflareBypass() sContent = CF.GetHtml(self.__sUrl,e.read(),cookies,sParameters,oRequest.headers) self.__sRealUrl, self.__sResponseHeader = CF.GetReponseInfo() else: sContent = e.read() self.__sRealUrl = e.geturl() self.__sResponseHeader = e.headers() else: try: VSlog("%s (%d),%s" % (self.ADDON.VSlang(30205), e.code , self.__sUrl)) self.__sRealUrl = e.geturl() self.__sResponseHeader = e.headers sContent = e.read() except: sContent = '' if not sContent: self.DIALOG.VSerror("%s (%d),%s" % (self.ADDON.VSlang(30205), e.code , self.__sUrl)) return ''
def showHosters(sSearch=''): #affiche les videos disponible du live oGui = cGui() UA = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0' oInputParameterHandler = cInputParameterHandler() sUrl4 = oInputParameterHandler.getValue('siteUrl4') sMovieTitle2 = oInputParameterHandler.getValue('sMovieTitle2') sThumb = oInputParameterHandler.getValue('sThumb') oRequestHandler = cRequestHandler(sUrl4) sHtmlContent = oRequestHandler.request() oParser = cParser() sPattern = '<iframe.+?(?:allowFullScreen=|width).+?src="([^"]+)".+?</iframe>' liste_url = [] aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0]): sHosterUrl = '' url = aResult[1][0] VSlog(url) #url = 'http://www.sporcanli.com/frame2.html' #a garder peut etre utils pour ajouter un hébergeur #VSlog(url) if 'emb.aplayer1.me' in url: #Terminer Referer = url oRequestHandler = cRequestHandler(url) oRequestHandler.addHeaderEntry('User-Agent', UA) sHtmlContent2 = oRequestHandler.request() sPattern2 = 'source: *\'(.+?)\'' aResult = re.findall(sPattern2, sHtmlContent2) if aResult: sHosterUrl = aResult[ 0] + '|User-Agent=' + UA + '&referer=' + Referer VSlog(sHosterUrl) if 'sport7.pw' or 'vip7stream' in url: #Terminé oRequestHandler = cRequestHandler(url) sHtmlContent2 = oRequestHandler.request() sPattern2 = 'videoLink = \'(.+?)\'' aResult = re.findall(sPattern2, sHtmlContent2) if aResult: sHosterUrl = aResult[ 0] + '|User-Agent=' + UA + '&referer=' + url if 'totalsport.me' in url: #Terminé oRequestHandler = cRequestHandler(url) sHtmlContent2 = oRequestHandler.request() sPattern2 = 'source: "(.+?)"' aResult = re.findall(sPattern2, sHtmlContent2) if aResult: sHosterUrl = aResult[0] if 'sportsbar.pw' in url: #Terminé oRequestHandler = cRequestHandler(url) sHtmlContent2 = oRequestHandler.request() sPattern2 = 'videoLink = \'(.+?)\'' aResult = re.findall(sPattern2, sHtmlContent2) if aResult: sHosterUrl = aResult[0] if 'livesoccers.pw' in url: #Terminé oRequestHandler = cRequestHandler(url) sHtmlContent2 = oRequestHandler.request() sPattern2 = '<iframe src=\'(.+?)\'' aResult = re.findall(sPattern2, sHtmlContent2) if aResult: sHosterUrl2 = aResult[0] UA = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0' oRequestHandler = cRequestHandler(sHosterUrl2) oRequestHandler.addHeaderEntry('User-Agent', UA) oRequestHandler.addHeaderEntry('Referer', sHosterUrl2) sHtmlContent3 = oRequestHandler.request() #VSlog(sHtmlContent3) sPattern3 = '<source src="([^"]+)"' aResult1 = re.findall(sPattern3, sHtmlContent3) if aResult1: sHosterUrl = aResult1[0] if 'assia' in url: #Terminé oRequestHandler = cRequestHandler(url) sHtmlContent2 = oRequestHandler.request() sPattern2 = 'file:"([^"]+)"' aResult = re.findall(sPattern2, sHtmlContent2) if aResult: sHosterUrl = aResult[0] if 'sportlive.site' in url: #Terminé oRequestHandler = cRequestHandler(url) sHtmlContent2 = oRequestHandler.request() sPattern2 = '<iframe src="(.+?)"' aResult = re.findall(sPattern2, sHtmlContent2) if aResult: sHosterUrl2 = aResult[0] #VSlog(str(sHosterUrl2)) oRequestHandler = cRequestHandler(sHosterUrl2) sHtmlContent3 = oRequestHandler.request() sPattern3 = '<script type=\'text/javascript\'>id=\'(.+?)\'' aResult2 = re.findall(sPattern3, sHtmlContent3) if aResult2: sHosterUrl3 = aResult2[0] sHosterUrl3 = "http://hdcast.pw/stream_jw2.php?id=" + sHosterUrl3 #VSlog(str(sHosterUrl3)) oRequestHandler = cRequestHandler(sHosterUrl3) sHtmlContent4 = oRequestHandler.request() sPattern4 = 'curl = "([^"]+)";' aResult3 = re.findall(sPattern4, sHtmlContent4) if aResult3: sHosterUrl = aResult3[0] sHosterUrl = base64.b64decode(sHosterUrl) #VSlog(sHosterUrl) if 'stream365' in url: #Terminé oRequestHandler = cRequestHandler(url) sHtmlContent2 = oRequestHandler.request() sPattern2 = '<param name="flashvars" value="ZonePlayGameId=(.+?)&' aResult = re.findall(sPattern2, sHtmlContent2) if aResult: gameId = aResult[0] sHosterUrl = 'http://91.192.80.210/edge0/xrecord/' + gameId + '/prog_index.m3u8' if 'youtube' in url: #Je sais pas dialog().VSinfo( 'Youtube peut ne pas marcher c\'est la faute a Kodi', "Livetv", 15) sPattern2 = 'youtube.com/embed/(.+?)[?]autoplay=1' aResult = re.findall(sPattern2, url) if aResult: video_id = aResult[0] #VSlog(video_id) url1 = url.replace('/embed/', '/watch?v=') oRequestHandler = cRequestHandler(url1) sHtmlContent2 = oRequestHandler.request() sPattern2 = '\W[\'"]?t[\'"]?: ?[\'"](.+?)[\'"]' aResult = re.findall(sPattern2, sHtmlContent2) if aResult: token = aResult[0] #sVSlog(token) params = { 'video_id': video_id, 'el': '$el', 'ps': 'default', 'eurl': 'https://youtube.googleapis.com/v/' + video_id, 'hl': 'fr_FR', 't': urllib2.quote(token) } url2 = 'https://youtube.com/get_video_info?video_id=' + video_id + '&sts=17488&hl=fr' req = urllib2.Request(url2) response = urllib2.urlopen(req) sHtmlContent3 = urllib2.unquote(response.read()) #VSlog(sHtmlContent3) sPattern3 = 'hlsvp=(.+?)&' aResult = re.findall(sPattern3, sHtmlContent3) if aResult: sHosterUrl = aResult[ 0] + '|User-Agent=' + UA + '&Host=manifest.googlevideo.com' if 'streamup.me' in url: #Terminé oRequestHandler = cRequestHandler(url) sHtmlContent2 = oRequestHandler.request() sPattern2 = '<iframe src="([^"]+)"' aResult = re.findall(sPattern2, sHtmlContent2) if aResult: sHosterUrl2 = aResult[0] #VSlog(sHosterUrl2) oRequestHandler = cRequestHandler(sHosterUrl2) sHtmlContent3 = oRequestHandler.request() sHtmlContent3 = urllib.unquote(sHtmlContent3) #VSlog(sHtmlContent3) sPattern3 = 'src: "\/\/(.+?)"' aResult = re.findall(sPattern3, sHtmlContent3) if aResult: sHosterUrl = 'http://' + aResult[0] if 'livestream' in url: #fixé sPattern2 = '<td bgcolor=".+?" *align="center".+?\s*<iframe.+?src="https://([^"]+)/player?.+?</iframe>' aResult = re.findall(sPattern2, sHtmlContent) if aResult: accountid = aResult[0] jsonUrl = 'https://player-api.new.' + accountid + '?format=short' oRequestHandler = cRequestHandler(jsonUrl) sHtmlContent = oRequestHandler.request() sPattern3 = '"m3u8_url":"(.+?)"' aResult = re.findall(sPattern3, sHtmlContent) if aResult: sHosterUrl = aResult[0] if 'forbet.tv' in url: #Probleme ssl oRequestHandler = cRequestHandler(url) sHtmlContent2 = oRequestHandler.request() sPattern2 = 'file: "([^"]+)"' aResult = re.findall(sPattern2, sHtmlContent2) if aResult: sHosterUrl = aResult[0] if 'p.hd24.watch' in url: #Terminé oRequestHandler = cRequestHandler(url) sHtmlContent2 = oRequestHandler.request() sPattern2 = 'data-channel="([^"]+)">' aResult = re.findall(sPattern2, sHtmlContent2) if aResult: Host = '190-2-146-56.livesports24.online' sHosterUrl = 'https://' + Host + '/' + aResult[0] + '.m3u8' if 'hdsoccerstreams.net' in url: #Pas terminer oRequestHandler = cRequestHandler(url) sHtmlContent2 = oRequestHandler.request() sPattern2 = '<script>fid="(.+?)"' aResult = re.findall(sPattern2, sHtmlContent2) if aResult: fid = aResult[0] #VSlog(fid) url2 = 'http://webtv.ws/embed.php?live=spstream' + fid + '&vw=700&vh=440' Referer = url oRequestHandler = cRequestHandler(url2) oRequestHandler.addHeaderEntry('User-Agent', UA) oRequestHandler.addHeaderEntry('Referer', Referer) sHtmlContent3 = oRequestHandler.request() #VSlog(sHtmlContent3) if 'thesports4u.net' in url or 'soccerstreams' in url: #Finit if 'thesports4u' in url: oRequestHandler = cRequestHandler(url) sHtmlContent2 = oRequestHandler.request() sPattern2 = '<script>fid="(.+?)"' aResult = re.findall(sPattern2, sHtmlContent2) if aResult: url2 = 'http://wlive.tv/embed.php?player=desktop&live=' + aResult[ 0] + '&vw=700&vh=440' oRequestHandler = cRequestHandler(url2) oRequestHandler.addHeaderEntry('User-Agent', UA) oRequestHandler.addHeaderEntry('Referer', 'http://thesports4u.net/') oRequestHandler.addHeaderEntry('Host', 'www.wlive.tv') sHtmlContent3 = oRequestHandler.request() if 'soccerstreams' in url: oRequestHandler = cRequestHandler(url) sHtmlContent = oRequestHandler.request() url = url.replace('/hds', '/hdss/ch') oRequestHandler = cRequestHandler(url) sHtmlContent1 = oRequestHandler.request() sPattern = '<script>fid="(.+?)"' aResult = re.findall(sPattern, sHtmlContent1) if aResult: url2 = 'http://wlive.tv/embedra.php?player=desktop&live=' + aResult[ 0] + '&vw=700&vh=440' oRequestHandler = cRequestHandler(url2) oRequestHandler.addHeaderEntry('User-Agent', UA) oRequestHandler.addHeaderEntry('Referer', url) oRequestHandler.addHeaderEntry('Host', 'www.wlive.tv') sHtmlContent3 = oRequestHandler.request() m = re.search( 'return.*?\[(.*?)\].*?\+\s+(.*)\.join.*document.*?"(.*?)"', sHtmlContent3) if m: timeVar = m.group(2) hashVar = m.group(3) #http://tv.wlive.tv/tv/lu2mIWw6KZ20180321/playlist.m3u8?hlsendtime=1542297480&hlsstarttime=0&hlshash=jhTrgemr-kGm9E01YIVfqkZ9VPobibqbDRiov2psf_A= url3 = ''.join(m.group(1).split(',')) url3 = 'http:' + url3.replace('"', '').replace('\/', '/') m = re.search(timeVar + '.*?\[(.*?)\]', sHtmlContent3) if m: timeStr = ''.join(m.group(1).split(',')).replace('"', '') url3 = url3 + timeStr m = re.search(hashVar + '>(.*?)<', sHtmlContent3) if m: hashStr = ''.join(m.group(1).split(',')).replace('"', '') url3 = url3 + hashStr sHosterUrl = url3 if 'sports-stream.net' in url: #Terminé oRequestHandler = cRequestHandler(url) sHtmlContent2 = oRequestHandler.request() sPattern2 = 'sports-stream.+?ch=(.+?)"' aResult = re.findall(sPattern2, sHtmlContent2) if aResult: fid = aResult[0] url2 = 'http://webtv.ws/embeds.php?live=spstream' + fid + '&vw=700&vh=440' oRequestHandler = cRequestHandler(url2) oRequestHandler.addHeaderEntry('User-Agent', UA) oRequestHandler.addHeaderEntry( 'Referer', 'http://www.sports-stream.net/chtv/sps.php?ch=' + fid) sHtmlContent2 = oRequestHandler.request() sPattern3 = 'source src="(.+?)".+?">' aResult = re.findall(sPattern3, sHtmlContent2) if aResult: sHosterUrl = aResult[0] if 'foot.futbol' in url: #Terminé oRequestHandler = cRequestHandler(url) sHtmlContent2 = oRequestHandler.request() sPattern2 = '<iframe src=\'(.+?)\'' aResult = re.findall(sPattern2, sHtmlContent2) if aResult: sHosterUrl2 = aResult[0] #VSlog(sHosterUrl2) Referer = sHosterUrl2 oRequestHandler = cRequestHandler(sHosterUrl2) oRequestHandler.addHeaderEntry('User-Agent', UA) oRequestHandler.addHeaderEntry('Referer', Referer) sHtmlContent3 = oRequestHandler.request() #VSlog(sHtmlContent3) sPattern3 = '<source src="([^"]+)"' aResult2 = re.findall(sPattern3, sHtmlContent3) if aResult2: sHosterUrl = aResult2[0] if 'viewhd.me' in url: #Pas terminer je sais pas comment on trouve le m3u dans hdstream oRequestHandler = cRequestHandler(url) sHtmlContent2 = oRequestHandler.request() sPattern2 = '<script>fid="([^"]+)"' aResult = re.findall(sPattern2, sHtmlContent2) if aResult: sHosterUrl2 = 'http://www.hdstream.live/embed.php?player=desktop&live=' + aResult[ 0] + '&vw=620&vh=490' #VSlog(sHosterUrl2) Referer = sHosterUrl2 oRequestHandler = cRequestHandler(sHosterUrl2) oRequestHandler.addHeaderEntry('User-Agent', UA) oRequestHandler.addHeaderEntry('Referer', Referer) sHtmlContent3 = oRequestHandler.request() #VSlog(sHtmlContent3) if 'socolive.net' in url: #Probleme avec ea et autre (tout changé lol) oRequestHandler = cRequestHandler(url) sHtmlContent2 = oRequestHandler.request() sPattern2 = 'channel=\'(.+?)\', g=\'(.+?)\'' aResult = re.findall(sPattern2, sHtmlContent2) if aResult: for aEntry in aResult: channel = aEntry[0] g = aEntry[1] #VSlog(channel) #VSlog(g) UA = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36' url2 = 'https://www.ucasterplayer.com/hembedplayer/' + channel + '/' + g + '/700/480' #VSlog(url2) oRequestHandler = cRequestHandler(url2) oRequestHandler.addHeaderEntry('User-Agent', UA) oRequestHandler.addHeaderEntry('Referer', 'http://socolive.net/ch=.+?') sHtmlContent2 = oRequestHandler.request() #VSlog(sHtmlContent2) sPattern3 = '"src", "https://" \+ ea \+ "([^"]+)"' sPattern4 = 'url: ".+?" \+ (.+?) \+' aResult2 = re.findall(sPattern4, sHtmlContent2) aResult1 = re.findall(sPattern3, sHtmlContent2) if aResult2: urldomaine = 'https://www.lquest123b.top/loadbalancer?' + aResult2[ 0] + '&' oRequestHandler = cRequestHandler(urldomaine) oRequestHandler.addHeaderEntry('User-Agent', UA) oRequestHandler.addHeaderEntry('Referer', urldomaine) sHtmlContent3 = oRequestHandler.request() sPattern5 = 'redirect=(.+?top)' aResult3 = re.findall(sPattern5, sHtmlContent3) if aResult3: domaine = aResult3[0] if aResult1: oRequestHandler.addHeaderEntry('User-Agent', UA) Referer = url2 UA = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36' sHosterUrl = 'https://' + domaine + aResult1[ 0] + '|User-Agent=' + UA + '&referer=' + Referer #VSlog(sHosterUrl) if '1me.club' in url or 'sportz' in url: #Terminé oRequestHandler = cRequestHandler(url) sHtmlContent2 = oRequestHandler.request() sPattern2 = '<iframe src="(.+?)"' aResult = re.findall(sPattern2, sHtmlContent2) if aResult[0]: if 'whostreams.net' or 'streamcdn' in aResult[0]: #Terminé embedUrl = aResult[0] if embedUrl.startswith('//'): embedUrl = 'http:' + embedUrl if 'sportz' in url: Referer = url else: Referer = 'http://1me.club' #VSlog(aResult[0]) oRequestHandler = cRequestHandler(embedUrl) oRequestHandler.addHeaderEntry('User-Agent', UA) oRequestHandler.addHeaderEntry('Referer', Referer) sHtmlContent3 = oRequestHandler.request() sPattern2 = '(\s*eval\s*\(\s*function(?:.|\s)+?{}\)\))' aResult = re.findall(sPattern2, sHtmlContent3) if aResult: str2 = aResult[0] if not str2.endswith(';'): str2 = str2 + ';' strs = cPacker().unpack(str2) #VSlog(str) sPattern3 = '{source:"([^"]+)"' aResult1 = re.findall(sPattern3, strs) if aResult1: sHosterUrl = aResult1[0] if 'widestream.io' in aResult[0]: #Terminé oRequestHandler = cRequestHandler(aResult[0]) sHtmlContent3 = oRequestHandler.request() sPattern3 = 'file:"([^"]+)"' aResult1 = re.findall(sPattern3, sHtmlContent3) if aResult1: sHosterUrl = aResult1[0] if 'sportlevel' in url: oRequestHandler = cRequestHandler(url) sHtmlContent2 = oRequestHandler.request() sPattern2 = "manifestUrl: '(.+?)'," aResult = re.findall(sPattern2, sHtmlContent2) if aResult[0]: sHosterUrl = 'http://d.sportlevel.com' + aResult[0] if 'shd' in url: urlApi = 'https://api.livesports24.online/gethost' sPattern = 'channel([^"]+)' aResult = re.findall(sPattern, url) if aResult[0]: channel = aResult[0] oRequestHandler = cRequestHandler(urlApi) oRequestHandler.addHeaderEntry('User-Agent', UA) oRequestHandler.addHeaderEntry('Referer', url) oRequestHandler.addHeaderEntry('Origin', 'https://shd247.com') sHtmlContent2 = oRequestHandler.request() sPattern1 = '([^"]+)' aResult = re.findall(sPattern1, sHtmlContent2) if aResult[0]: host = aResult[0] sHosterUrl = 'https://' + host + channel + '.m3u8' oHoster = cHosterGui().checkHoster(sHosterUrl) if (oHoster != False): oHoster.setDisplayName(sMovieTitle2) #nom affiche oHoster.setFileName(sMovieTitle2) #idem cHosterGui().showHoster(oGui, oHoster, sHosterUrl, sThumb) oGui.setEndOfDirectory()
def __createdb(self, dropTable=''): try: # Permets de detruire une table pour la recreer de zero. if dropTable != '': self.dbcur.execute("DROP TABLE " + dropTable) self.db.commit() except: pass sql_create = "CREATE TABLE IF NOT EXISTS movie ("\ "imdb_id TEXT, "\ "tmdb_id TEXT, "\ "title TEXT, "\ "year INTEGER, "\ "director TEXT, "\ "writer TEXT, "\ "tagline TEXT, "\ "cast TEXT, "\ "crew TEXT, "\ "rating FLOAT, "\ "votes TEXT, "\ "duration INTEGER, "\ "plot TEXT, "\ "mpaa TEXT, "\ "premiered TEXT, "\ "genre TEXT, "\ "studio TEXT, "\ "status TEXT, "\ "poster_path TEXT, "\ "trailer TEXT, "\ "backdrop_path TEXT, "\ "UNIQUE(tmdb_id)"\ ");" try: self.dbcur.execute(sql_create) VSlog('table movie creee') except: VSlog('Error: Cannot create table movie') sql_create = "CREATE TABLE IF NOT EXISTS saga ("\ "tmdb_id TEXT, "\ "title TEXT, "\ "plot TEXT, "\ "genre TEXT, "\ "poster_path TEXT, "\ "backdrop_path TEXT, "\ "UNIQUE(tmdb_id)"\ ");" try: self.dbcur.execute(sql_create) VSlog('table saga creee') except: VSlog('Error: Cannot create table saga') sql_create = "CREATE TABLE IF NOT EXISTS tvshow ("\ "imdb_id TEXT, "\ "tmdb_id TEXT, "\ "title TEXT, "\ "year INTEGER, "\ "director TEXT, "\ "writer TEXT, "\ "cast TEXT, "\ "crew TEXT, "\ "rating FLOAT, "\ "votes TEXT, "\ "duration INTEGER, "\ "plot TEXT, "\ "mpaa TEXT, "\ "premiered TEXT, "\ "genre TEXT, "\ "studio TEXT, "\ "status TEXT, "\ "poster_path TEXT, "\ "trailer TEXT, "\ "backdrop_path TEXT, "\ "nbseasons INTEGER, "\ "UNIQUE(tmdb_id)"\ ");" try: self.dbcur.execute(sql_create) VSlog('table tvshow creee') except: VSlog('Error: Cannot create table tvshow') sql_create = "CREATE TABLE IF NOT EXISTS season ("\ "tmdb_id TEXT, " \ "season INTEGER, "\ "year INTEGER, "\ "premiered TEXT, "\ "poster_path TEXT, "\ "plot TEXT, "\ "episode INTEGER, "\ "UNIQUE(tmdb_id, season)"\ ");" try: self.dbcur.execute(sql_create) VSlog('table season creee') except: VSlog('Error: Cannot create table season') sql_create = "CREATE TABLE IF NOT EXISTS episode ("\ "tmdb_id TEXT, "\ "originaltitle TEXT,"\ "season INTEGER, "\ "episode INTEGER, "\ "year INTEGER, "\ "title TEXT, "\ "director TEXT, "\ "writer TEXT, "\ "guest_stars TEXT, "\ "plot TEXT, "\ "rating FLOAT, "\ "votes TEXT, "\ "premiered TEXT, "\ "tagline TEXT, "\ "poster_path TEXT, "\ "UNIQUE(tmdb_id, season, episode)"\ ");" try: self.dbcur.execute(sql_create) VSlog('table episode creee') except: VSlog('Error: Cannot create table episode')
VSlog(str(e.reason)) data = response.read() #VSlog(data) response.close() file_url = re.search(r'"obf_link"\s*:\s*"([^"]*?)"', data) if file_url: list_url = decodeUN(file_url.group(1).replace('\\', '')) #Hack, je sais pas si ca va durer longtemps, mais indispensable sur certains fichiers #list_url = list_url.replace("?socket", ".mp4.m3u8") else: VSlog('prb2') #bricolage api_call = list_url + '.mp4.m3u8' #use a fake headers #Header = 'User-Agent=' + UA #api_call = api_call + '|' + Header >> pas besoin pour l'instant if (api_call): if self.m3u8 == True and api_call.endswith('m3u8'): return True, api_call else: return True, api_call return False, False
def AddtoDownloadListandview(self): oInputParameterHandler = cInputParameterHandler() sMediaUrl = oInputParameterHandler.getValue('sMediaUrl') sFileName = oInputParameterHandler.getValue('sFileName') # sHosterIdentifier = oInputParameterHandler.getValue('sHosterIdentifier') VSlog('Download ' + sMediaUrl) meta = {} meta['url'] = sMediaUrl meta['cat'] = oInputParameterHandler.getValue('sCat') meta['title'] = sFileName meta['icon'] = xbmc.getInfoLabel('ListItem.Art(thumb)') if (self.AddDownload(meta)): # Si pas de telechargement en cours on lance le notre if not self.isDownloading(): row = cDb().get_download(meta) if row: title = row[0][1] url = UnquotePlus(row[0][2]) path = row[0][3] # thumbnail = UnquotePlus(row[0][4]) # status = row[0][8] if (self.download(url, title, path, True) == True): # Download in fastmode # ok on attend un peu, et on lance le stream tempo = 100 progress_ = progress().VScreate('Bufferisation') while (tempo > 0): # if canceled do nothing if progress_.iscanceled(): break progress_.VSupdate(progress_, 100) tempo = tempo - 1 xbmc.sleep(500) progress_.VSclose(progress_) oGuiElement = cGuiElement() oGuiElement.setSiteName(SITE_IDENTIFIER) oGuiElement.setMediaUrl(path) oGuiElement.setTitle(title) # oGuiElement.getInfoLabel() oPlayer = cPlayer() # if not (sys.argv[1] == '-1'): # oPlayer.run(oGuiElement, title, path) # else: oPlayer.clearPlayList() oPlayer.addItemToPlaylist(oGuiElement) oPlayer.startPlayer() else: self.DIALOG.VSinfo('Erreur', self.ADDON.VSlang(30085)) return
class cHoster(iHoster): def __init__(self): self.__sDisplayName = 'Netu' self.__sFileName = self.__sDisplayName self.m3u8 = False def getDisplayName(self): return self.__sDisplayName def setDisplayName(self, sDisplayName): self.__sDisplayName = sDisplayName + ' [COLOR skyblue]' + self.__sDisplayName + '[/COLOR]' def setFileName(self, sFileName): self.__sFileName = sFileName def getFileName(self): return self.__sFileName def setUrl(self, sUrl): self.__sUrl = sUrl.replace('https', 'http') self.__sUrl = self.__sUrl.replace('http://netu.tv/', 'http://hqq.tv/') self.__sUrl = self.__sUrl.replace('http://waaw.tv/', 'http://hqq.tv/') self.__sUrl = self.__sUrl.replace( 'http://hqq.tv/player/hash.php?hash=', 'http://hqq.tv/player/embed_player.php?vid=') self.__sUrl = self.__sUrl.replace( 'http://hqq.tv/watch_video.php?v=', 'http://hqq.tv/player/embed_player.php?vid=') def __getIdFromUrl(self): sPattern = 'https*:\/\/hqq\.(?:tv|player|watch)\/player\/embed_player\.php\?vid=([0-9A-Za-z]+)' oParser = cParser() aResult = oParser.parse(self.__sUrl, sPattern) if (aResult[0] == True): return aResult[1][0] return '' def getPluginIdentifier(self): return 'netu' def isDownloadable(self): return False def isM3u8(self): return '' def setM3u8(self): self.m3u8 = True def getMediaLink(self): return self.__getMediaLinkForGuest() def GetHost(self, sUrl): oParser = cParser() sPattern = 'https*:\/\/(.+?)\/' aResult = oParser.parse(sUrl, sPattern) if aResult[0]: return aResult[1][0] return '' def __getMediaLinkForGuest(self): api_call = '' id = self.__getIdFromUrl() self.__sUrl = 'http://hqq.tv/player/embed_player.php?vid=' + id + '&autoplay=no' 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' } player_url = self.__sUrl req = urllib2.Request(player_url, None, headers) try: response = urllib2.urlopen(req) html = response.read() response.close() except urllib2.URLError, e: VSlog(e.read()) VSlog(e.reason) html = e.read() Host = 'https://' + self.GetHost(player_url) + '/' 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('&vid=([^&]+)', data, re.DOTALL).group(1) at = re.search('&at=([^&]+)', data, re.DOTALL).group(1) r = re.search('&http_referer=([^&]+)', data, re.DOTALL) if r: http_referer = r.group(1) url2 = Host + "sec/player/embed_player.php?iss=" + iss + "&vid=" + vid + "&at=" + at + "&autoplayed=yes&referer=on&http_referer=" + http_referer + "&pass="******"&embed_from=&need_captcha=0" #VSlog( url2 ) req = urllib2.Request(url2, None, headers) try: response = urllib2.urlopen(req) data = response.read() response.close() except urllib2.URLError, e: VSlog(e.read()) VSlog(e.reason) data = e.read() data = urllib.unquote(data) data = DecodeAllThePage(data) at = re.search(r'var\s*at\s*=\s*"([^"]*?)"', data) l = re.search( r'\.get\( *"/player/get_md5.php",.+?link_1: *(.+?), *server_2: *(.+?), *vid: *"([^"]+)"}\)', data) if l: vid_server = re.search(r'var ' + l.group(2) + ' = "([^"]+)"', data).group(1) vid_link = re.search(r'var ' + l.group(1) + ' = "([^"]+)"', data).group(1) vid_key = l.group(3) else: VSlog("prob 3") #new video id, not really usefull # m = re.search(r' vid: "([a-zA-Z0-9]+)"}', data) # if m: # id = m.group(1) if vid_server and vid_link and at and vid_key: #get_data = {'server': vid_server.group(1), 'link': vid_link.group(1), 'at': at.group(1), 'adb': '0/','b':'1','vid':id} #,'iss':'MzEuMz' get_data = { 'server_2': vid_server, 'link_1': vid_link, 'at': at.group(1), 'adb': '0/', 'b': '1', 'vid': vid_key } headers['x-requested-with'] = 'XMLHttpRequest' req = urllib2.Request( Host + "/player/get_md5.php?" + urllib.urlencode(get_data), None, headers) try: response = urllib2.urlopen(req) except urllib2.URLError, e: VSlog(str(e.read())) VSlog(str(e.reason)) data = response.read() #VSlog(data) response.close() file_url = re.search(r'"obf_link"\s*:\s*"([^"]*?)"', data) if file_url: list_url = decodeUN(file_url.group(1).replace('\\', ''))
def showEpisodes(): oGui = cGui() oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') sMovieTitle = oInputParameterHandler.getValue('sMovieTitle') sThumb = oInputParameterHandler.getValue('sThumb') sDesc = oInputParameterHandler.getValue('sDesc') sTag = oInputParameterHandler.getValue('sTag') VSlog('######## showEpisodes() ' + sUrl) oRequestHandler = cRequestHandler(sUrl) sHtmlContent = oRequestHandler.request() if (sDesc == ''): VSlog('description = rien ' + str(sDesc)) else: VSlog('description = qqles ' + str(sDesc)) #<div class="fsynopsis"><p>([^<]*)|saison([^<]*):<\/span>|href=".([^<]*)<span>.pisode([^<]*) #c'est tjrs les deux rectifier VSlog('description = ' + str(sDesc)) #if (sDesc == '') : if (True): oParser = cParser() sPattern = '<div class="fsynopsis"><p>([^<]*)' aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == True): VSlog('description = true') sDesc = str(aResult[1][0]) if (sTag != False): #\r\n\r\n' sDesc = sTag + '\r\n' + sDesc #if (sThumb == ''): VSlog('thumb = ' + str(sDesc)) if (True): oParser = cParser() sPattern = 'og:image" content="([^"]*)' aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == True): sThumb = str(aResult[1][0]) VSlog('thumb = true' + sThumb) sPattern = 'href=".([^<]*)<span>.pisode([^<]*)' sPattern = 'class="sais.+?href=".([^"]*).+?pisode([^<]*)' #match href="([^"]*).>([^"]*)<span class="total oParser = cParser() aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == False): oGui.addText(SITE_IDENTIFIER) if (aResult[0] == True): VSlog('aResult[0] == True)') #for aEntry in aResult[1]: for aEntry in reversed(aResult[1]): sUrl = URL_MAIN + aEntry[0] sNumEp = str(aEntry[1]).replace(' ', '') sTitle = sMovieTitle + ' E' + sNumEp VSlog('ADD ' + sUrl) VSlog('ADD ' + sMovieTitle) oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sUrl) oOutputParameterHandler.addParameter('sMovieTitle', sTitle) oOutputParameterHandler.addParameter('sThumb', sThumb) oOutputParameterHandler.addParameter('sDesc', sDesc) #oGui.addEpisode(SITE_IDENTIFIER, 'seriesHosters', sTitle, '', sThumb, sDesc, oOutputParameterHandler) oGui.addEpisode(SITE_IDENTIFIER, 'showHosters', sTitle, '', sThumb, sDesc, oOutputParameterHandler) oGui.setEndOfDirectory()
def showHosters(): oGui = cGui() oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') sThumb = oInputParameterHandler.getValue('sThumb') sMovieTitle = oInputParameterHandler.getValue('sMovieTitle') oRequestHandler = cRequestHandler(sUrl) sHtmlContent = oRequestHandler.request() # Detection de la taille des fichier pour separer les fichier premium des parties en .rar if not 'saison' in sUrl: fileSize = re.findall( '<strong>Taille</strong><span style="float: right;">([^<]+)</span></td>', sHtmlContent) if 'et' in str(fileSize[0]): taille = str(fileSize[:-7]) else: taille = str(fileSize[0]) if ' Go' in taille: size, unite = taille.split(' ') if float(size) > 4.85: if "1 Lien" in sHtmlContent: VSlog('1 Lien premuim') sPattern = '<h2 style="text-align: center;"><span style=.+?>([^<]+)<span style=".+?</h2>|<div class="prez_2">1 Lien Uptobox</div>\s*.+?>\s*.+?<a title="T.+?" href="([^"]+)" target="_blank"><strong class="hebergeur">*([^<>]+)*</strong>.+?\s*<div class="showNFO"' else: VSlog('Pas lien premuim') sPattern = '<h2 style="text-align: center;"><span style=.+?>([^<]+)<span style=".+?</h2>|<a title="T.+?" href="([^"]+)" target="_blank"><strong class="hebergeur">*([^<>]+)* Premium</strong>' else: sPattern = '<h2 style="text-align: center;"><span style=.+?>([^<]+)<span style=".+?</h2>|<a title="T.+?" href="([^"]+)" target="_blank"><strong class="hebergeur">*([^<>]+)*</strong>' else: sPattern = '<h2 style="text-align: center;"><span style=.+?>([^<]+)<span style=".+?</h2>|<a title="T.+?" href="([^"]+)" target="_blank"><strong class="hebergeur">*([^<>]+)*</strong>' else: sPattern = '<div class="prez_7">([^<]+)</div>|<a title=".+?" href="([^"]+)" target="_blank"><strong class="hebergeur">([^<>]+)</strong>' oParser = cParser() aResult = oParser.parse(sHtmlContent, sPattern) # Il n'existe que des fichiers en parties, non fonctionnel if (aResult[0] == False) and float(size) > 4.85: oGui.addText(SITE_IDENTIFIER) if (aResult[0] == True): for aEntry in aResult[1]: if aEntry[0]: oGui.addText(SITE_IDENTIFIER, '[COLOR red]' + aEntry[0] + '[/COLOR]') else: sUrl2 = aEntry[1] sTitle = sMovieTitle if 'saison' in sUrl: sDisplayTitle = ('%s [COLOR coral]%s[/COLOR]') % ( sMovieTitle, aEntry[2].replace('à', 'a')) else: sDisplayTitle = ('%s [COLOR coral]%s[/COLOR]') % ( sMovieTitle, str(aEntry[2])) oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sUrl2) oOutputParameterHandler.addParameter('sMovieTitle', sTitle) oOutputParameterHandler.addParameter('sThumb', sThumb) oGui.addTV(SITE_IDENTIFIER, 'RecapchaBypass', sDisplayTitle, '', sThumb, '', oOutputParameterHandler) oGui.setEndOfDirectory()
def __callRequest(self): if self.__enableDNS: import socket self.save_getaddrinfo = socket.getaddrinfo socket.getaddrinfo = self.new_getaddrinfo if self.__aParamatersLine: sParameters = self.__aParamatersLine if xbmc.getInfoLabel('system.buildversion')[0:2] >= '19': sParameters = self.__aParamatersLine.encode("utf-8") else: sParameters = self.__aParamatersLine else: sParameters = urlEncode(self.__aParamaters) if xbmc.getInfoLabel('system.buildversion')[0:2] >= '19': sParameters = sParameters.encode() if (self.__cType == cRequestHandler.REQUEST_TYPE_GET): if (len(sParameters) > 0): if (self.__sUrl.find('?') == -1): self.__sUrl = self.__sUrl + '?' + str(sParameters) sParameters = '' else: self.__sUrl = self.__sUrl + '&' + str(sParameters) sParameters = '' if (len(sParameters) > 0): oRequest = urllib2.Request(self.__sUrl, sParameters) else: oRequest = urllib2.Request(self.__sUrl) for aHeader in self.__aHeaderEntries: for sHeaderKey, sHeaderValue in aHeader.items(): oRequest.add_header(sHeaderKey, sHeaderValue) sContent = '' try: if self.BUG_SSL: VSlog('Retrying with SSL bug') import ssl gcontext = ssl.SSLContext(ssl.PROTOCOL_SSLv23) oResponse = urllib2.urlopen(oRequest, timeout=self.__timeout, context=gcontext) else: oResponse = urllib2.urlopen(oRequest, timeout=self.__timeout) self.__sResponseHeader = oResponse.info() #En python 3 on doit décoder la reponse if xbmc.getInfoLabel('system.buildversion')[ 0:2] >= '19' and not self.__sResponseHeader.get( 'Content-Encoding') == 'gzip': #Si c'est une image ou autre element en bytes, on ne le decode pas image_formats = ("image/png", "image/jpeg", "image/jpg", "application/download") if not self.__sResponseHeader.get( 'Content-Type') in image_formats: sContent = oResponse.read() if self.__sResponseHeader.get_content_charset(): encoding = self.__sResponseHeader.get_content_charset() else: encoding = 'utf-8' try: try: sContent = sContent.decode() except: pass sContent = str(sContent, encoding) except: sContent = str(sContent) else: pass else: sContent = oResponse.read() else: sContent = oResponse.read() # compressed page ? if self.__sResponseHeader.get('Content-Encoding') == 'gzip': import zlib sContent = zlib.decompress(sContent, zlib.MAX_WBITS | 16) # https://bugs.python.org/issue4773 self.__sRealUrl = oResponse.geturl() self.__sResponseHeader = oResponse.info() oResponse.close() except HttpError as e: if e.code == 503: # Protected by cloudFlare ? from resources.lib import cloudflare if cloudflare.CheckIfActive(e.read()): self.__sResponseHeader = e.hdrs cookies = self.GetCookies() VSlog('Page protegee par cloudflare') CF = cloudflare.CloudflareBypass() sContent = CF.GetHtml(self.__sUrl, e.read(), cookies, sParameters, oRequest.headers) self.__sRealUrl, self.__sResponseHeader = CF.GetReponseInfo( ) else: sContent = e.read() self.__sRealUrl = e.geturl() self.__sResponseHeader = e.headers() else: try: VSlog("%s (%d),%s" % (self.ADDON.VSlang(30205), e.code, self.__sUrl)) self.__sRealUrl = e.geturl() self.__sResponseHeader = e.headers sContent = e.read() except: sContent = '' if not sContent: self.DIALOG.VSerror( "%s (%d),%s" % (self.ADDON.VSlang(30205), e.code, self.__sUrl)) except UrlError as e: if 'CERTIFICATE_VERIFY_FAILED' in str( e.reason) and self.BUG_SSL == False: self.BUG_SSL = True return self.__callRequest() elif 'getaddrinfo failed' in str( e.reason) and self.__enableDNS == False: # Retry with DNS only if addon is present import xbmcvfs if xbmcvfs.exists( 'special://home/addons/script.module.dnspython/'): self.__enableDNS = True return self.__callRequest() else: error_msg = self.ADDON.VSlang(30470) else: error_msg = "%s (%s),%s" % (self.ADDON.VSlang(30205), e.reason, self.__sUrl) self.DIALOG.VSerror(error_msg) sContent = '' if sContent: if (self.__bRemoveNewLines == True): sContent = sContent.replace("\n", "") sContent = sContent.replace("\r\t", "") if (self.__bRemoveBreakLines == True): sContent = sContent.replace(" ", "") if self.__enableDNS: socket.getaddrinfo = self.save_getaddrinfo self.__enableDNS = False return sContent
def _call(self, media_type, movie_id): oParser = cParser() data = {} data['aebn_id'] = movie_id if (media_type == 'gaymovie'): sUrl = self.GAY_MOVIE_INFO % movie_id else: sUrl = self.MOVIE_INFO % movie_id oRequestHandler = cRequestHandler(sUrl) oRequestHandler.addHeaderEntry('User-Agent', self.UA) oRequestHandler.addHeaderEntry('Content-Type', 'text/html; charset=UTF-8') sHtmlContent = oRequestHandler.request() sPattern = 'data-tid="' + movie_id + '".+?>(.+)' sResult = oParser.parse(sHtmlContent, sPattern) if (sResult[0] == True): sPattern = '<h1>(.+?)</h1>' aResult = oParser.parse(sResult[1][0], sPattern) if (aResult[0] == True): sTitle = unicode(aResult[1][0], 'utf-8') sTitle = unicodedata.normalize('NFD', sTitle).encode( 'ascii', 'ignore') sTitle = sTitle.encode("utf-8") sTitle = sTitle.replace(', The', '') sTitle = sTitle.replace('- On Sale!', '') data['title'] = sTitle VSlog('MOVIE TITLE: %s' % (data['title'])) sPattern = '<ul class="list-unstyled m-b-2">(.+?)</ul>' aResult = oParser.parse(sResult[1][0], sPattern) if (aResult[0] == True): productInfo = str(aResult[1][0]) productInfo = productInfo.replace('<small>', '|').replace('</small>', '') productInfo = productInfo.replace('<li>', '').replace('</li>', '') for div in productInfo.split('|'): if ':' in div: name, value = div.split(':') if name == 'Length': name = 'runtime' sRuntime = str(value.strip()) sRuntime = sRuntime.replace(' ', '') sRuntime = sRuntime.replace('hrs', '').replace( 'mins', '') sHours = sRuntime.split('.', 2)[0] sMins = sRuntime.split('.', 2)[1] sRuntime = (int(sHours)) * 60 + int(sMins) data[name] = sRuntime VSlog('RUNTIME: %s' % (data['runtime'])) if name == 'Studio': name = 'studio' data[name] = self.TAG_RE.sub( '', str(value.strip())) VSlog('STUDIO: %s' % (data['studio'])) if name == 'Production Year': name = 'year' data[name] = int(value.strip()) VSlog('MOVIE YEAR: %s' % (data['year'])) # sPattern = '<div class="product-details-container">(.+?)</div>' sPattern = '<div class="product-details-container">(.+?)</small>' aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == True): # sPattern = '<h4.+?">(.+?)</h4>' sPattern = '<h4 class=".+?text-dark synopsis">(.+?)</h4>' aResult = oParser.parse(aResult[1][0], sPattern) if (aResult[0] == True): sOverview = str(aResult[1][0]) sOverview = sOverview.replace('</p>', '\n') sOverview = self.TAG_RE.sub('', sOverview) sOverview = unicode(sOverview, 'utf-8') sOverview = unicodedata.normalize('NFD', sOverview).encode( 'ascii', 'ignore') sOverview = sOverview.encode("utf-8") data['overview'] = sOverview VSlog('OVERVIEW: %s' % (data['overview'])) sPattern = '<ul class="list-unstyled spacing-bottom">(.+?)</ul>' aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == True): sPattern = '<a.+?>(.+?)</a>' aResult = oParser.parse(aResult[1][0], sPattern) if (aResult[0] == True): category = [] sCount = len(aResult[1]) i = 0 while i < sCount: category.append({'name': str(aResult[1][i])}) i += 1 data['genres'] = category VSlog('MOVIE GENRES: %s' % (str(data['genres']))) page_id = movie_id[-2:] poster_url = self.poster % (page_id, movie_id) data['poster_path'] = poster_url return data
def parseUrl(self): #import sys #xbmc.log('arg :' + str(sys.argv), xbmc.LOGNOTICE) #xbmc.log('Debug 1 >>' + str(xbmc.getInfoLabel('Container().CurrentPage')) , xbmc.LOGNOTICE) #xbmc.log('Debug 2 >>' + str(xbmc.getInfoLabel('Container.FolderPath')) , xbmc.LOGNOTICE) oInputParameterHandler = cInputParameterHandler() oInputParameterHandler.getAllParameter() if (oInputParameterHandler.exist('function')): sFunction = oInputParameterHandler.getValue('function') else: VSlog('call load methode') sFunction = "load" if (sFunction == 'DoNothing'): return if (not oInputParameterHandler.exist('site')): #mise a jour try: #from resources.lib.about import cAbout #cAbout().getUpdate() plugins = __import__('resources.lib.about', fromlist=['about']).cAbout() function = getattr(plugins, 'getUpdate') function() except: pass #charge home plugins = __import__('resources.lib.home', fromlist=['home']).cHome() function = getattr(plugins, 'load') function() return if (oInputParameterHandler.exist('site')): sSiteName = oInputParameterHandler.getValue('site') if (oInputParameterHandler.exist('title')): sTitle = oInputParameterHandler.getValue('title') else: sTitle = "none" VSlog('load site ' + sSiteName + ' and call function ' + sFunction) #cStatistic().callStartPlugin(sSiteName, sTitle) if (isHosterGui(sSiteName, sFunction) == True): return if (isGui(sSiteName, sFunction) == True): return if (isFav(sSiteName, sFunction) == True): return if (isLibrary(sSiteName, sFunction) == True): return if (isDl(sSiteName, sFunction) == True): return if (isHome(sSiteName, sFunction) == True): return if (isTrakt(sSiteName, sFunction) == True): return if sSiteName == 'globalSearch': searchGlobal() return if sSiteName == 'globalRun': __import__('resources.lib.runscript', fromlist=['runscript']) #function = getattr(plugins, sFunction) #function() return if sSiteName == 'globalSources': oGui = cGui() oPluginHandler = cPluginHandler() aPlugins = oPluginHandler.getAvailablePlugins(True) if (len(aPlugins) == 0): addons = addon() addons.openSettings() xbmc.executebuiltin("Container.Refresh") else: for aPlugin in aPlugins: oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter( 'siteUrl', 'http://venom') icon = 'sites/%s.png' % (aPlugin[1]) #icon = 'https://imgplaceholder.com/512x512/transparent/fff?text=%s&font-family=Roboto_Bold' % aPlugin[1] oGui.addDir(aPlugin[1], 'load', aPlugin[0], icon, oOutputParameterHandler) oGui.setEndOfDirectory() return if sSiteName == 'globalParametre': addons = addon() addons.openSettings() return #if (isAboutGui(sSiteName, sFunction) == True): #return #charge sites try: #exec "from resources.sites import " + sSiteName + " as plugin" #exec "plugin."+ sFunction +"()" plugins = __import__('resources.sites.%s' % sSiteName, fromlist=[sSiteName]) function = getattr(plugins, sFunction) function() except Exception as e: VSlog('could not load site: ' + sSiteName + ' error: ' + str(e)) import traceback traceback.print_exc() return
def search_movie_name(self, media_type, name, page): oParser = cParser() meta = {} movies = [] movie_name = unicode(name, 'utf-8') movie_name = unicodedata.normalize('NFD', movie_name).encode( 'ascii', 'ignore') movie_name = movie_name.encode('utf-8') movie_name = movie_name.replace('!', '') movie_name = movie_name.replace("'", "") movie_name = movie_name.replace('Trips', 'Trip') if (media_type == 'gaymovie'): sUrl = self.GAY_MOVIE_SEARCH % (page, quote_plus(movie_name)) else: sUrl = self.MOVIE_SEARCH % (page, quote_plus(movie_name)) VSlog('---------- SEARCH MOVIE DETAILS FROM ADULTDVDEMPIRE ----------') VSlog('SEARCH URL: %s' % (str(sUrl))) oRequestHandler = cRequestHandler(sUrl) oRequestHandler.addHeaderEntry('User-Agent', self.UA) oRequestHandler.addHeaderEntry('Content-Type', 'text/html; charset=UTF-8') sHtmlContent = oRequestHandler.request() sPattern = '<div class="col-xs-5 col-sm-2 list-view-item-cover"><a href="([^"]+)"' sResult = oParser.parse(sHtmlContent, sPattern) if (sResult[0] == True): movie_id = str(sResult[1][0]) movie_id = movie_id.split('/', 2)[1] VSlog('MOVIE ID: %s' % (str(movie_id))) movie_url = str(sResult[1][0]) movie_url = movie_url.replace('joey-silveras-big-ass-', '') movie_url = movie_url.replace('joey-silveras-', '') movie_url = movie_url.replace('the-p**n-movies.html', 'p**n-movies.html') movie_url = movie_url.replace('--', '-') movie_url = movie_url.replace('the-best', 'best') movie_url = movie_url.replace('-vol', '') movie_name = quote_plus(movie_name) movie_name = movie_name.replace('The+Best', 'Best') movie_name = movie_name.replace('The+Art', 'art') movie_name = movie_name.replace('%2527', '') movie_name = movie_name.replace('%3A', '') sPattern = '(.+?)\+-' aResult = oParser.parse(movie_name, sPattern) if (aResult[0] == True): movie_name = aResult[1][0] movie_name = movie_name.replace('+', '-') movie_name = movie_name.lower() sPattern = '/.+?/(.+?)-p**n-movies\.html' aResult = oParser.parse(movie_url, sPattern) if (aResult[0] == True): movie_url = aResult[1][0] # sPattern = '(.+?)-vol' # aResult = oParser.parse(movie_url, sPattern) # if (aResult[0] == True): # movie_url = aResult[1][0] VSlog('MOVIE URL: %s' % (str(movie_url))) VSlog('MOVIE NAME: %s' % (str(movie_name))) if (movie_url != movie_name): if (media_type == 'pornmovie'): # meta = cCDU().search_movie_name(media_type, name) meta = cAFDB().search_movie_name(media_type, name) # else: # meta = cTVTS().search_movie_name(name) else: meta = self.search_movie_id(media_type, movie_id) if (sResult[0] == False): if (media_type == 'pornmovie'): # meta = cCDU().search_movie_name(media_type, name) meta = cAFDB().search_movie_name(media_type, name) else: meta = {} # else: # meta = cTVTS().search_movie_name(name) return meta
def __getMediaLinkForGuest(self): oRequest = cRequestHandler(self.__sUrl) oRequest.addHeaderEntry('User-Agent', UA) sHtmlContent = oRequest.request() #suppression commentaires sHtmlContent = re.sub(r'<!--.*?-->', '', sHtmlContent) oParser = cParser() #fh = open('c:\\test0.txt', "w") #fh.write(sHtmlContent) #fh.close() #decodage de la pahe html sHtmlContent3 = sHtmlContent code = '' maxboucle = 10 while (maxboucle > 0): VSlog('loop : ' + str(maxboucle)) sHtmlContent3 = CheckCpacker(sHtmlContent3) #sHtmlContent3 = CheckJJDecoder(sHtmlContent3) sHtmlContent3 = CheckAADecoder(sHtmlContent3) maxboucle = maxboucle - 1 sHtmlContent = sHtmlContent3 VSlog('fini') #fh = open('c:\\test.txt', "w") #fh.write(sHtmlContent) #fh.close() #Desactive pour le moment if (True): Realurl = '' red = re.findall('location *= *[\'"]([^\'"]+)', sHtmlContent) if red: Realurl = red[0] else: VSlog("2") red = re.findall('location\.assign *\( *"([^"]+)" \)', sHtmlContent) if red: Realurl = red[0] if 'speedvid' not in Realurl: Realurl = self.__getHost() + Realurl if not Realurl.startswith('http'): Realurl = 'http:' + Realurl if not Realurl: VSlog("mauvaise redirection") return False, False VSlog('Real url>> ' + Realurl) oRequest = cRequestHandler(Realurl) oRequest.addHeaderEntry('User-Agent', UA) oRequest.addHeaderEntry('Referer', self.__sUrl) sHtmlContent = oRequest.request() #fh = open('c:\\test.txt', "w") #fh.write(sHtmlContent) #fh.close() api_call = '' sPattern = "file\s*:\s*\'([^\']+.mp4)" aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == True): api_call = aResult[1][0] VSlog('API_CALL: ' + api_call) if (api_call): api_call = api_call + '|User-Agent=' + UA #+ #'|Host=' + api_call.replace('http://','').rsplit('/', 2)[0] return True, api_call return False, False
# Code de depart par AnthonyBloomer # Modif pour vStream # https://github.com/Kodi-vStream/venom-xbmc-addons/ import re import string import xbmcvfs import json import unicodedata from resources.lib.comaddon import addon, dialog, VSlog, VSPath, isMatrix, xbmc, xbmcgui from resources.lib.util import QuotePlus from resources.lib.handler.requestHandler import cRequestHandler try: from sqlite3 import dbapi2 as sqlite VSlog('SQLITE 3 as DB engine for tmdb') except: from pysqlite2 import dbapi2 as sqlite VSlog('SQLITE 2 as DB engine for tmdb') class cTMDb: # https://developers.themoviedb.org/3/genres/get-movie-list # https://developers.themoviedb.org/3/genres/get-tv-list TMDB_GENRES = { 12: 'Aventure', 14: 'Fantastique', 16: 'Animation', 18: 'Drame', 27: 'Horreur', 28: 'Action',
reponse = urllib2.urlopen(request) sCode = reponse.read() reponse.close() #VSlog('Worked ' + sUrl) except urllib2.HTTPError, e: VSlog(str(e.code)) #VSlog(e.read()) VSlog('Redirection Blocked ' + sUrl + ' Red ' + e.geturl()) pass else: #VSlog('Blocked ' + sUrl) VSlog(str(e.code)) VSlog('>>' + e.geturl()) VSlog(e.read()) VSlog('fin des unlock') class cHoster(iHoster): def __init__(self): self.__sDisplayName = 'FlashX' self.__sFileName = self.__sDisplayName self.__sHD = '' def getDisplayName(self): return self.__sDisplayName def setDisplayName(self, sDisplayName): self.__sDisplayName = sDisplayName + ' [COLOR skyblue]' + self.__sDisplayName + '[/COLOR] [COLOR khaki]' + self.__sHD + '[/COLOR]' def setFileName(self, sFileName):
def _cache_search(self, media_type, name, tmdb_id='', year='', season='', episode=''): if media_type == 'movie': sql_select = 'SELECT * FROM movie' if tmdb_id: sql_select = sql_select + ' WHERE tmdb_id = \'%s\'' % tmdb_id else: sql_select = sql_select + ' WHERE title = \'%s\'' % name if year: sql_select = sql_select + ' AND year = %s' % year elif media_type == 'collection': sql_select = 'SELECT * FROM saga' if tmdb_id: sql_select = sql_select + ' WHERE tmdb_id = \'%s\'' % tmdb_id else: sql_select = sql_select + ' WHERE title = \'%s\'' % name elif media_type == 'tvshow' or media_type == 'anime': sql_select = 'SELECT * FROM tvshow' if tmdb_id: sql_select = sql_select + ' WHERE tvshow.tmdb_id = \'%s\'' % tmdb_id else: sql_select = sql_select + ' WHERE tvshow.title = \'%s\'' % name if year: sql_select = sql_select + ' AND tvshow.year = %s' % year elif media_type == 'season': sql_select = 'SELECT *, season.poster_path, season.premiered, ' \ 'season.year, season.plot FROM season LEFT JOIN tvshow ON season.tmdb_id = tvshow.tmdb_id' if tmdb_id: sql_select = sql_select + ' WHERE tvshow.tmdb_id = \'%s\'' % tmdb_id else: sql_select = sql_select + ' WHERE tvshow.title = \'%s\'' % name sql_select = sql_select + ' AND season.season = \'%s\'' % season elif media_type == 'episode': sql_select = 'SELECT *, episode.title, episode.poster_path, episode.premiered, '\ 'episode.guest_stars, episode.year, episode.plot, '\ 'episode.director, episode.writer, episode.rating, episode.votes '\ 'FROM episode LEFT JOIN tvshow ON episode.tmdb_id = tvshow.tmdb_id' if tmdb_id: sql_select += ' WHERE tvshow.tmdb_id = \'%s\'' % tmdb_id else: sql_select += ' WHERE tvshow.title = \'%s\'' % name sql_select += ' AND episode.season = \'%s\' AND episode.episode = \'%s\'' % ( season, episode) else: return None try: self.dbcur.execute(sql_select) matchedrow = self.dbcur.fetchone() except Exception as e: if 'no such column' in str(e) or 'no column named' in str(e): # Pour les series il faut reconstruire les deux tables. if media_type == "tvshow": self.__createdb('tvshow') self.__createdb('season') else: self.__createdb(media_type) VSlog('Table recreated') # Deuxieme tentative self.dbcur.execute(sql_select) matchedrow = self.dbcur.fetchone() else: VSlog('************* Error selecting from cache db: %s' % e, 4) return None if matchedrow: # VSlog('Found meta information by name in cache table') return dict(matchedrow) else: # VSlog('No match in local DB') return None
def __getMediaLinkForGuest(self): api_call = False oParser = cParser() #on recupere le host atuel HOST = self.GetHost(self.__sUrl) #on recupere l'ID sId = self.__getIdFromUrl(self.__sUrl) if sId == '': VSlog("Id prb") return False, False #on ne garde que les chiffres #sId = re.sub(r'-.+', '', sId) #on cherche la vraie url sHtmlContent = self.GetRedirectHtml(self.__sUrl, sId) #fh = open('c:\\test.txt', "w") #fh.write(sHtmlContent) #fh.close() sPattern = 'href=["\'](https*:\/\/www\.flashx[^"\']+)' AllUrl = re.findall(sPattern, sHtmlContent, re.DOTALL) #VSlog(str(AllUrl)) #Disabled for the moment if (False): if AllUrl: # Need to find which one is the good link # Use the len don't work for i in AllUrl: if i[0] == '': web_url = i[1] else: return False, False else: web_url = AllUrl[0] web_url = AllUrl[0] #Requests to unlock video #unlock fake video LoadLinks(sHtmlContent) #unlock bubble unlock = False url2 = re.findall('["\']([^"\']+?\.js\?cache.+?)["\']', sHtmlContent, re.DOTALL) if not url2: VSlog('No special unlock url find') for i in url2: unlock = UnlockUrl(i) if unlock: break if not unlock: VSlog('No special unlock url working') return False, False #get the page sHtmlContent = self.GetRedirectHtml(web_url, sId, True) if sHtmlContent == False: VSlog('Passage en mode barbare') #ok ca a rate on passe toutes les url de AllUrl for i in AllUrl: if not i == web_url: sHtmlContent = self.GetRedirectHtml(i, sId, True) if sHtmlContent: break if not sHtmlContent: return False, False if 'reload the page!' in sHtmlContent: #VSlog("page bloquée") #On recupere la bonne url sGoodUrl = web_url #on recupere la page de refresh sPattern = 'reload the page! <a href="([^"]+)">!! <b>' aResult = re.findall(sPattern, sHtmlContent) if not aResult: return False, False sRefresh = aResult[0] #on recupere le script de debloquage sPattern = "<script type='text/javascript' src='([^']+)'><\/script>" aResult = re.findall(sPattern, sHtmlContent) if not aResult: return False, False deblockurl = aResult[0] if deblockurl.startswith('//'): deblockurl = 'http:' + deblockurl #on debloque la page sHtmlContent = self.GetRedirectHtml(deblockurl, sId) #lien speciaux ? if sRefresh.startswith('./'): sRefresh = 'http://' + self.GetHost(sGoodUrl) + sRefresh[1:] #on rafraichit la page sHtmlContent = self.GetRedirectHtml(sRefresh, sId) #et on re-recupere la page sHtmlContent = self.GetRedirectHtml(sGoodUrl, sId) if (False): #A t on le lien code directement? sPattern = "(\s*eval\s*\(\s*function(?:.|\s)+?)<\/script>" aResult = re.findall(sPattern, sHtmlContent) if (aResult): #VSlog( "lien code") AllPacked = re.findall( '(eval\(function\(p,a,c,k.*?)\s+<\/script>', sHtmlContent, re.DOTALL) if AllPacked: for i in AllPacked: sUnpacked = cPacker().unpack(i) sHtmlContent = sUnpacked if "file" in sHtmlContent: break else: return False, False #decodage classique sPattern = '{file:"([^",]+)",label:"([^"<>,]+)"}' sPattern = '{src: *\'([^"\',]+)\'.+?label: *\'([^"<>,\']+)\'' aResult = oParser.parse(sHtmlContent, sPattern) #VSlog(str(aResult)) if (aResult[0] == True): #initialisation des tableaux url = [] qua = [] #Remplissage des tableaux for i in aResult[1]: url.append(str(i[0])) qua.append(str(i[1])) #Affichage du tableau api_call = dialog().VSselectqual(qua, url) if (api_call): return True, api_call return False, False
def get_meta(self, media_type, name, imdb_id='', tmdb_id='', year='', season='', episode='', overlay=6, update=False): ''' Main method to get meta data for movie or tvshow. Will lookup by name/year if no IMDB ID supplied. Args: media_type (str): 'movie' or 'tvshow' name (str): full name of movie/tvshow you are searching Kwargs: imdb_id (str): IMDB ID tmdb_id (str): TMDB ID year (str): 4 digit year of video, recommended to include the year whenever possible to maximize correct search results. season (int) episode (int) overlay (int): To set the default watched status (6=unwatched, 7=watched) on new videos Returns: DICT of meta data or None if cannot be found. ''' #xbmc.log('vstream Meta', 0) VSlog('Attempting to retrieve meta data for %s: %s %s %s %s' % (media_type, name, year, imdb_id, tmdb_id)) #recherche dans la base de données if not update: meta = self._cache_search(media_type, self._clean_title(name), tmdb_id, year, season, episode) else: meta = {} #recherche online if not meta: if media_type == 'movie': if tmdb_id: meta = self.search_movie_id(tmdb_id) elif name: meta = self.search_movie_name(name, year) else: meta = {} elif media_type == 'tvshow': if tmdb_id: meta = self.search_tvshow_id(tmdb_id) elif name: meta = self.search_tvshow_name(name, year) else: meta = {} #meta = self.__format_meta(media_type, meta, name) #transforme les metas if meta: #ecrit dans le cache self._cache_save(meta, self._clean_title(name), media_type, season, overlay) else: meta['title'] = name # meta['imdb_id'] = '' # meta['tmdb_id'] = '' # meta['tvdb_id'] = '' # meta['backdrop_url'] = '' # meta['cover_url'] = '' # meta['playcount'] = '' # meta['trailer'] = '' meta = self._format(meta, name) return meta