def showHosters(): oGui = cGui() oParser = cParser() oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') sMovieTitle = oInputParameterHandler.getValue('sMovieTitle') sThumb = oInputParameterHandler.getValue('sThumb') oRequestHandler = cRequestHandler(sUrl) oRequestHandler.addHeaderEntry('User-Agent', UA) sHtmlContent = oRequestHandler.request() #VSlog(sUrl) if 'HTML/JavaScript Encoder' in sHtmlContent: sHtmlContent = ICDecode(sHtmlContent) sHtmlContent = sHtmlContent.replace('<iframe src="http://www.promoliens.net', '') sHtmlContent = sHtmlContent.replace("<iframe src='cache_vote.php", '') list_url = [] #1 er methode sPattern = '<div class="box"><iframe.+?src=[\'|"](.+?)[\'|"]' aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == True): for aEntry in aResult[1]: if re.match(".+?&#[0-9]+;", aEntry):#directe mais codé html sHosterUrl = cUtil().unescape(aEntry) else:#directe en clair sHosterUrl = str(aEntry) #Ces liens sont tjours des liens if (not sHosterUrl.startswith('http')) and (len(sHosterUrl) > 2): sHosterUrl = URL_MAIN + sHosterUrl list_url.append(sHosterUrl) #2 eme methode sPattern = '<script>eval\(unescape\((.+?)\); eval\(unescape\((.+?)\);<\/script>' aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == True): for aEntry in aResult[1]: #si url cryptee mangacity algo sHosterUrl = DecryptMangacity(aEntry[1]) sHosterUrl = sHosterUrl.replace('\\', '') list_url.append(sHosterUrl) #3 eme methode sPattern = 'document\.write\(unescape\("(%3c%.+?)"\)\);' aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == True): #VSlog("methode 3") for aEntry in aResult[1]: tmp = Unquote(aEntry) sPattern2 = 'src=["\']([^"\']+)["\']' aResult = re.findall(sPattern2, tmp) if aResult: list_url.append(aResult[0]) #VSlog(str(list_url)) if len(list_url) > 0: for aEntry in list_url: sHosterUrl = aEntry #Dans le cas ou l'adresse n'est pas directe,on cherche a l'extraire if not sHosterUrl[:4] == 'http': sHosterUrl = ExtractLink(sHosterUrl) #Si aucun lien on arrete ici if not sHosterUrl: continue #si openload code if 'openload2.php' in sHosterUrl: #on telecharge la page oRequestHandler = cRequestHandler(sHosterUrl ) oRequestHandler.addHeaderEntry('User-Agent', UA) sHtmlContent = oRequestHandler.request() #Et on remplace le code sHtmlContent = ICDecode(sHtmlContent) sHosterUrl = ExtractLink(sHtmlContent) #Passe par lien .asx ?? sPattern = '(https*:\/\/www.ianime[^\/\\]+\/[0-9a-zA-Z_-]+\.asx)' aResult = oParser.parse(sHosterUrl, sPattern) if aResult[0] : #on telecharge la page oRequestHandler = cRequestHandler(sHosterUrl ) oRequestHandler.addHeaderEntry('Referer', sUrl) oRequestHandler.addHeaderEntry('User-Agent', UA) sHtmlContent = oRequestHandler.request() #Si c'est une redirection, on passe juste le vrai lien if ('ianime' not in oRequestHandler.getRealUrl().split('/')[2]): sHosterUrl = oRequestHandler.getRealUrl() else: #Sinon on remplace le code html = ICDecode(sHtmlContent) sHosterUrl = ExtractLink(html) #Passe par lien .vxm ?? #sPattern = 'http:\/\/www.ianime[^\/\\]+\/([0-9a-zA-Z_-]+)\.vxm' #aResult = oParser.parse(sHosterUrl, sPattern) #if aResult[0] : # sHosterUrl = 'http://embed.nowvideo.sx/embed.php?v=' + aResult[1][0] #redirection tinyurl if 'tinyurl' in sHosterUrl: sHosterUrl = GetTinyUrl(sHosterUrl) #test pr liens raccourcis if 'http://goo.gl' in sHosterUrl: try: headers = {'User-Agent' : 'Mozilla 5.10', 'Host' : 'goo.gl', 'Connection' : 'keep-alive'} request = urllib2.Request(sHosterUrl, None, headers) reponse = urllib2.urlopen(request) sHosterUrl = reponse.geturl() except: pass #Potection visio.php if '/visio.php?' in sHosterUrl: oRequestHandler = cRequestHandler(sHosterUrl ) oRequestHandler.addHeaderEntry('Referer', sUrl) oRequestHandler.addHeaderEntry('User-Agent', UA) sHtmlContent = oRequestHandler.request() sHtmlContent = ICDecode(sHtmlContent) sPattern = 'src=[\'"]([^\'"]+)[\'"]' aResult = oParser.parse(sHtmlContent, sPattern) if aResult[0]: sHosterUrl = aResult[1][0] #Derniere en date sPattern = "(https*:\/\/www.ianime[^\/\\]+\/[^']+)" aResult = oParser.parse(sHosterUrl, sPattern) if aResult[0]: VSlog('>>' + sHosterUrl) oRequestHandler = cRequestHandler(sHosterUrl) oRequestHandler.addHeaderEntry('Referer', sUrl) oRequestHandler.addHeaderEntry('User-Agent', UA) sHtmlContent = oRequestHandler.request() sHtmlContent = ICDecode(sHtmlContent) sHosterUrl2 = ExtractLink(sHtmlContent) if 'intern_player.png' in sHosterUrl2 or 'intern_player2.png' in sHosterUrl2: #VSlog('Fausse image : ' + sHosterUrl) xx = str(random.randint(300, 350))#347 yy = str(random.randint(200, 255))#216 oRequestHandler = cRequestHandler(sHosterUrl) oRequestHandler.setRequestType(cRequestHandler.REQUEST_TYPE_POST) #Add params oRequestHandler.addParameters('submit.x', xx) oRequestHandler.addParameters('submit.y', yy) #look for hidden params p1 = re.search(r'name="valeur" value="([^"]+)"', sHtmlContent) if p1: #VSlog('Hidden param') oRequestHandler.addParameters('valeur', p1.group(1)) #Set headers oRequestHandler.addHeaderEntry('Referer', sUrl) oRequestHandler.addHeaderEntry('User-Agent', UA) sHtmlContent = oRequestHandler.request() #VSlog("Img decode " + sHtmlContent) sHosterUrl2 = ExtractLink(sHtmlContent) sHosterUrl = sHosterUrl2 if 'tinyurl' in sHosterUrl: sHosterUrl = GetTinyUrl(sHosterUrl) oHoster = cHosterGui().checkHoster(sHosterUrl) if (oHoster != False): oHoster.setDisplayName(sMovieTitle) oHoster.setFileName(sMovieTitle) cHosterGui().showHoster(oGui, oHoster, sHosterUrl, sThumb) oGui.setEndOfDirectory()
def FullUnescape(code): sPattern = '<script type="text/javascript">document\.write\(unescape\(".+?"\)\);</script>' aResult = re.findall(sPattern, code) if aResult: return Unquote(aResult[0]) return code
def showMovies(sSearch = ''): oGui = cGui() oParser = cParser() if sSearch: #query_args = { 's': str(sSearch) } #data = urllib.urlencode(query_args) #headers = {'User-Agent' : 'Mozilla 5.10', 'Referer' : 'URL_MAIN'} #url = URL_MAIN + 'result.php' #request = urllib2.Request(url, data, headers) #reponse = urllib2.urlopen(request) sSearch = Unquote(sSearch) sSearch = QuotePlus(sSearch).upper() #remplace espace par + et passe en majuscule url = URL_MAIN + 'resultat+' + sSearch + '.html' oRequestHandler = cRequestHandler(url) oRequestHandler.addHeaderEntry('User-Agent', UA) oRequestHandler.addHeaderEntry('Referer', URL_MAIN) sHtmlContent = oRequestHandler.request() else: oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') oRequestHandler = cRequestHandler(sUrl) oRequestHandler.addHeaderEntry('User-Agent', UA) sHtmlContent = oRequestHandler.request() #sHtmlContent = DecryptMangacity(sHtmlContent) if 'HTML/JavaScript Encoder' in sHtmlContent: sHtmlContent = ICDecode(sHtmlContent) if sHtmlContent.startswith('<script type="text/javascript">'): sHtmlContent = FullUnescape(sHtmlContent) if sSearch or 'categorie.php' in sUrl or 'categorie_' in sUrl or 'listing3.php?' in sUrl: sPattern = '<center><div style="background: url\(\'([^\'].+?)\'\); background-size.+?alt="(.+?)" title.+?<a href=["\']*(.+?)[\'"]* class=.button' else: sPattern = '<center><div style="background: url\(\'([^\'].+?)\'\); background-size.+?<a href="([^"]+)".+?alt="(.+?)"' sHtmlContent = re.sub('<a\s*href=\"categorie.php\?watch=\"\s*class="genre\s*\"', '', sHtmlContent, re.DOTALL) 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 sThumb = aEntry[0] if not sThumb.startswith('http'): sThumb = URL_MAIN + sThumb if sSearch or 'categorie.php' in sUrl or 'categorie_' in sUrl or 'listing3.php?' in sUrl: sTitle = aEntry[1] sUrl2 = aEntry[2] else: sTitle = str(aEntry[2]) sUrl2 = aEntry[1] if not sUrl2.startswith('http'): sUrl2 = URL_MAIN + sUrl2 #affichage de la langue sLang = '' if 'VF' in sTitle: sLang = 'VF' elif 'VOSTFR' in sTitle: sLang = 'VOSTFR' # affichage de la qualité -> NON, qualité fausse # sQual = '' # if 'DVDRIP' in sTitle: # sQual = 'DVDRIP' # Nettoyer le titre sTitle = sTitle.replace(' DVDRIP', '') sTitle = sTitle.replace('Visionnez ', '').replace('[Streaming] - ', '').replace('gratuitement maintenant','') if ' - Episode' in sTitle: sTitle = sTitle.replace(' -', '') sTitle = cUtil().CleanName(sTitle).capitalize() sDisplayTitle = ('%s (%s)') % (sTitle, sLang) oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sUrl2) oOutputParameterHandler.addParameter('sMovieTitle', sTitle) oOutputParameterHandler.addParameter('sThumb', sThumb) if '?manga=' in sUrl2: oGui.addTV(SITE_IDENTIFIER, 'showEpisode', sDisplayTitle, 'animes.png', sThumb, '', oOutputParameterHandler) elif '?serie=' in sUrl2: oGui.addTV(SITE_IDENTIFIER, 'showEpisode', sDisplayTitle, 'series.png', sThumb, '', oOutputParameterHandler) elif '?film=' in sUrl2: oGui.addMovie(SITE_IDENTIFIER, 'showMovies', sDisplayTitle, 'films.png', sThumb, '', oOutputParameterHandler) else: oGui.addMovie(SITE_IDENTIFIER, 'showHosters', sDisplayTitle, 'films.png', sThumb, '', oOutputParameterHandler) progress_.VSclose(progress_) if not sSearch: # une seule page par recherche sNextPage = __checkForNextPage(sHtmlContent) if (sNextPage != False): oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sNextPage) oGui.addNext(SITE_IDENTIFIER, 'showMovies', '[COLOR teal]Suivant >>>[/COLOR]', oOutputParameterHandler) if not sSearch: oGui.setEndOfDirectory()
def showMovies(sSearch=''): oGui = cGui() if sSearch: sUrl = URL_MAIN + 'search.php' oRequestHandler = cRequestHandler(sUrl) oRequestHandler.setRequestType(cRequestHandler.REQUEST_TYPE_POST) oRequestHandler.addParameters('q', Unquote(sSearch)) else: oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') oRequestHandler = cRequestHandler(sUrl) oRequestHandler.addHeaderEntry('Referer', URL_MAIN) sHtmlContent = oRequestHandler.request() if sSearch: sPattern = '<a href="([^"]+)".+?url\((.+?)\).+?<div class="title"> (.+?) </div>' elif 'Annee/' in sUrl or '/ABC' in sUrl: sPattern = '<div class="table-movies-content.+?href="([^"]+)".+?url\((.+?)\).+?<.i>.([^<]+)' elif 'genre/' in sUrl: sPattern = 'film-uno.+?href="([^"]+)".+?data-src="([^"]+)".+?alt="([^"]+)' else: sPattern = '<div class="film-uno">.+?<a href="([^"]+)".+?data-src="([^"]+)".+?alt="([^"]+)".+?min.+?·([^<]+).+?short-story">([^<]+)' oParser = cParser() 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) oOutputParameterHandler = cOutputParameterHandler() for aEntry in aResult[1]: progress_.VSupdate(progress_, total) if progress_.iscanceled(): break sUrl = aEntry[0] sThumb = aEntry[1] sTitle = aEntry[2] sDesc = '' if len(aEntry) > 3: if xbmc.getInfoLabel('system.buildversion')[0:2] >= '19': sQual = aEntry[3].split('·')[1].replace('Â', '').strip() sLang = aEntry[3].split('·')[2].strip() else: sQual = aEntry[3].split('·')[1].strip() sLang = aEntry[3].split('·')[2].strip() sDesc = aEntry[4] sDisplayTitle = ('%s [%s] (%s)') % (sTitle, sQual, sLang) else: sDisplayTitle = sTitle oOutputParameterHandler.addParameter('siteUrl', sUrl) oOutputParameterHandler.addParameter('sMovieTitle', sTitle) oOutputParameterHandler.addParameter('sThumb', sThumb) oOutputParameterHandler.addParameter('sDesc', sDesc) oGui.addMovie(SITE_IDENTIFIER, 'showHoster', sDisplayTitle, '', sThumb, sDesc, oOutputParameterHandler) progress_.VSclose(progress_) if not sSearch: sNextPage, sPaging = __checkForNextPage(sHtmlContent) if (sNextPage != False): oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sNextPage) # sNumPage = re.search('(page|genre).*?[-=\/]([0-9]+)', sNextPage).group(2) # ou replace'.html',''; '([0-9]+)$' oGui.addNext(SITE_IDENTIFIER, 'showMovies', 'Page ' + sPaging, oOutputParameterHandler) oGui.setEndOfDirectory()
def showMovies(sSearch=''): oGui = cGui() if sSearch: sUrl = URL_MAIN + 'search.php' oRequestHandler = cRequestHandler(sUrl) oRequestHandler.setRequestType(cRequestHandler.REQUEST_TYPE_POST) oRequestHandler.addParameters('q', Unquote(sSearch)) else: oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') oRequestHandler = cRequestHandler(sUrl) oRequestHandler.addHeaderEntry('Referer', URL_MAIN) sHtmlContent = oRequestHandler.request() if sSearch: sPattern = '<a href="([^"]+)".+?url\((.+?)\).+?<div class="title"> (.+?) </div>' elif 'Annee/' in sUrl or '/ABC' in sUrl: sPattern = '<div class="table-movies-content.+?href="([^"]+)".+?url\((.+?)\).+?<.i>.([^<]+)' elif 'genre/' in sUrl: sPattern = 'film-uno.+?href="([^"]+)".+?data-src="([^"]+)".+?alt="([^"]+)' else: sPattern = 'film-uno">.+?<a href="([^"]+)".+?data-src="([^"]+)".+?alt="([^"]+)".+?short-story">([^<]+)' oParser = cParser() 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 sUrl = aEntry[0] sThumb = aEntry[1] sTitle = aEntry[2] sDesc = '' if len(aEntry) > 3: sDesc = aEntry[3] oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sUrl) oOutputParameterHandler.addParameter('sMovieTitle', sTitle) oOutputParameterHandler.addParameter('sThumb', sThumb) oOutputParameterHandler.addParameter('sDesc', sDesc) oGui.addMovie(SITE_IDENTIFIER, 'showHoster', sTitle, '', sThumb, sDesc, oOutputParameterHandler) progress_.VSclose(progress_) if not sSearch: sNextPage = __checkForNextPage(sHtmlContent) if (sNextPage != False): oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sNextPage) number = re.search('(page|genre).*?[-=\/]([0-9]+)', sNextPage).group( 2) # ou replace'.html',''; '([0-9]+)$' oGui.addNext(SITE_IDENTIFIER, 'showMovies', '[COLOR teal]Page ' + number + ' >>>[/COLOR]', oOutputParameterHandler) 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() # D'abord on saute les redirections. if 'replay.robindesdroits' in sUrl: sPattern = 'content="0;URL=([^"]+)">' aResult = oParser.parse(sHtmlContent, sPattern) if aResult: sUrl = aResult[1][0] oRequestHandler = cRequestHandler(sUrl) sHtmlContent = oRequestHandler.request() # Ensuite les sites a la con if (True): if 'AdF' in sHtmlContent: sUrl = AdflyDecoder(sUrl) if 'motheregarded' in sUrl: sPattern = 'href=(.+?)&dp_lp' aResult = oParser.parse(sUrl, sPattern) if (aResult[0] == True): sUrl = Unquote(''.join(aResult[1])).decode('utf8') oRequestHandler = cRequestHandler(sUrl) sHtmlContent = oRequestHandler.request() # clictune / mylink / ect ... sPattern = '<b><a href=".+?redirect\/\?url\=(.+?)\&id.+?">' aResult = oParser.parse(sHtmlContent, sPattern) if aResult[0] == True: sUrl = Unquote(aResult[1][0]) # Et maintenant le ou les liens if 'gounlimited' in sUrl: oRequestHandler = cRequestHandler(sUrl) sHtmlContent = oRequestHandler.request() sPattern = '(eval\(function\(p,a,c,k,e(?:.|\s)+?\))<\/script>' aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == True): sHtmlContent = cPacker().unpack(aResult[1][0]) sPattern = '{sources:\["([^"]+)"' aResult = oParser.parse(sHtmlContent, sPattern) if not aResult[0]: sPattern = '\[{src:"([^"]+)"' aResult = oParser.parse(sHtmlContent, sPattern) if aResult[0]: sHosterUrl = aResult[1][0] oHoster = cHosterGui().checkHoster(sHosterUrl) if (oHoster != False): oHoster.setDisplayName(sMovieTitle) oHoster.setFileName(sMovieTitle) cHosterGui().showHoster(oGui, oHoster, sHosterUrl, sThumb) elif 'jheberg' in sUrl: aResult = cJheberg().GetUrls(sUrl) if (aResult): for aEntry in aResult: sHosterUrl = aEntry oHoster = cHosterGui().checkHoster(sHosterUrl) if (oHoster != False): oHoster.setDisplayName(sMovieTitle) oHoster.setFileName(sMovieTitle) cHosterGui().showHoster(oGui, oHoster, sHosterUrl, sThumb) elif 'multiup' in sUrl: aResult = cMultiup().GetUrls(sUrl) if (aResult): for aEntry in aResult: sHosterUrl = aEntry oHoster = cHosterGui().checkHoster(sHosterUrl) if (oHoster != False): oHoster.setDisplayName(sMovieTitle) oHoster.setFileName(sMovieTitle) cHosterGui().showHoster(oGui, oHoster, sHosterUrl, sThumb) else: sHosterUrl = sUrl oHoster = cHosterGui().checkHoster(sHosterUrl) if (oHoster != False): oHoster.setDisplayName(sMovieTitle) oHoster.setFileName(sMovieTitle) cHosterGui().showHoster(oGui, oHoster, sHosterUrl, sThumb) oGui.setEndOfDirectory()
def addParameter(self, sParameterName, mParameterValue): if not mParameterValue: return self.__aParams[sParameterName] = Unquote(str(mParameterValue))
def getValue(self, sParamName): if (self.exist(sParamName)): sParamValue = self.__aParams[sParamName] return Unquote(sParamValue) return False