def showSeason(): oGui = cGui() oInputParameterHandler = cInputParameterHandler() sSiteUrl = oInputParameterHandler.getValue('siteUrl') sSecurity = oInputParameterHandler.getValue('security') oRequestHandler = cRequestHandler(sSiteUrl) oRequestHandler.addHeaderEntry('Cookie', sSecurity) sHtmlContent = oRequestHandler.request(); sHtmlContent = str(sHtmlContent).replace('\\', '') sPattern = '<tr class="row">.*?<a href="([^"]+).*?>(.*?)</a>.*?<td class="list-languages">(.*?)</td>' oParser = cParser() aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == True): for aEntry in aResult[1]: oGuiElement = cGuiElement() oGuiElement.setSiteName(SITE_IDENTIFIER) if (cUtil().removeHtmlTags(aEntry[1]).startswith('Season')): oGuiElement.setFunction('showEpisodes') else: oGuiElement.setFunction('showRelease') oGuiElement.setTitle(cUtil().removeHtmlTags(aEntry[1]) + __getLanguageTitle(str(aEntry[2]))) oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('movieUrl', URL_MAIN + str(aEntry[0])) oOutputParameterHandler.addParameter('security', sSecurity) oGui.addFolder(oGuiElement, oOutputParameterHandler) oGui.setEndOfDirectory()
def showEpisode(): oGui = cGui() oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') sMovieTitle = oInputParameterHandler.getValue('sMovieTitle') sThumb = oInputParameterHandler.getValue('sThumbnail') oRequestHandler = cRequestHandler(sUrl) sHtmlContent = oRequestHandler.request() oParser = cParser() #print sUrl #On fait 2 passage pr accelerer le parsing regex # sPattern = '<div class="inner">(.+?)<footer id="footer">' # aResult = oParser.parse(sHtmlContent, sPattern) # sPattern = '<img src="(.+?).+? alt="episodes".+?<a href="(.+?)" title="(.+?)"' # aResult = oParser.parse(aResult[1][0], sPattern) sPattern = '<a href=\'.+?\' class=\'button light\' [^>]+"><headline11>(.+?)<\/headline11><\/a>|<a href="([^<]+)" title="([^<]+)" alt=".+?" style="text-decoration:none;">' aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == True): total = len(aResult[1]) dialog = cConfig().createDialog(SITE_NAME) for aEntry in aResult[1]: cConfig().updateDialog(dialog, total) if dialog.iscanceled(): break sTitle = unicode(aEntry[2],'iso-8859-1') sTitle = unicodedata.normalize('NFD', sTitle).encode('ascii', 'ignore') sTitle = sTitle.encode('ascii', 'ignore').decode('ascii') sTitle = cUtil().unescape(sTitle) sDisplayTitle = cUtil().DecoTitle(sTitle) sUrl2 = str(cUtil().unescape(aEntry[1])) if URL_MAIN not in sUrl2: sUrl2 = URL_MAIN + sUrl2 if aEntry[0]: oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', str(sUrl)) oGui.addDir(SITE_IDENTIFIER, 'showEpisode', '[COLOR red]'+str(aEntry[0])+'[/COLOR]', 'animes.png', oOutputParameterHandler) else: oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sUrl2) oOutputParameterHandler.addParameter('sMovieTitle', sTitle) oOutputParameterHandler.addParameter('sThumbnail', sThumb) oGui.addTV(SITE_IDENTIFIER, 'showHosters', sDisplayTitle, sThumb, sThumb, '', oOutputParameterHandler) cConfig().finishDialog(dialog) oGui.setEndOfDirectory()
def showMovies(sSearch = ''): oGui = cGui() oInputParameterHandler = cInputParameterHandler() if sSearch: sUrl = sSearch sUrl = sUrl.replace('%20','+') else: sUrl = oInputParameterHandler.getValue('siteUrl') oRequestHandler = cRequestHandler(sUrl) sHtmlContent = oRequestHandler.request() #fh = open('c:\\test.txt', "w") #fh.write(sHtmlContent) #fh.close() sPattern = '<div class="moviefilm"><a href=".+?".+?<img src="([^<"]+)".+?<a href="([^<]+)">([^<]+)<\/a>' oParser = cParser() aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == True): total = len(aResult[1]) dialog = cConfig().createDialog(SITE_NAME) for aEntry in aResult[1]: cConfig().updateDialog(dialog, total) if dialog.iscanceled(): break #Si recherche et trop de resultat, on nettoye if sSearch and total > 2: if cUtil().CheckOccurence(sSearch.replace(URL_SEARCH[0],''),aEntry[2]) == 0: continue sTitle = aEntry[2] sDisplayTitle = cUtil().DecoTitle(sTitle) oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', str(aEntry[1])) oOutputParameterHandler.addParameter('sMovieTitle', sTitle) oOutputParameterHandler.addParameter('sThumbnail', str(aEntry[0])) if '/serie/' in aEntry[1] or '/manga/' in aEntry[1]: oGui.addTV(SITE_IDENTIFIER, 'showEpisode', sDisplayTitle, '', aEntry[0], '', oOutputParameterHandler) else: oGui.addMovie(SITE_IDENTIFIER, 'showLinks', sTitle, '', aEntry[0], '', oOutputParameterHandler) cConfig().finishDialog(dialog) sNextPage = __checkForNextPage(sHtmlContent) if (sNextPage != False): oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sNextPage) oGui.addDir(SITE_IDENTIFIER, 'showMovies', '[COLOR teal]Next >>>[/COLOR]', 'next.png', oOutputParameterHandler) if not sSearch: oGui.setEndOfDirectory()
def CleanTitle(title): title = cUtil().unescape(title) title = cUtil().removeHtmlTags(title) try: title = unicode(title, "utf-8") except: pass title = unicodedata.normalize("NFD", title).encode("ascii", "ignore") return title.encode("utf-8")
def CleanTitle(title): title = cUtil().unescape(title) title = cUtil().removeHtmlTags(title) try: title = unicode(title, 'utf-8') except: pass title = unicodedata.normalize('NFD', title).encode('ascii', 'ignore') return title.encode( "utf-8")
def showEpisode(): 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() if 'HTML/JavaScript Encoder' in sHtmlContent: sHtmlContent = ICDecode(sHtmlContent) #On fait 2 passage pr accelerer le parsing regex # sPattern = '<div class="inner">(.+?)<footer id="footer">' # aResult = oParser.parse(sHtmlContent, sPattern) # sPattern = '<img src="(.+?).+? alt="episodes".+?<a href="(.+?)" title="(.+?)"' # aResult = oParser.parse(aResult[1][0], sPattern) sPattern = '<headline11>(.+?)<\/headline11><\/a>|<a href="*([^"]+)"* title="([^"]+)"[^>]+style="*text-decoration:none;"*>' 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 sTitle = unicode(aEntry[2], 'iso-8859-1') sTitle = unicodedata.normalize('NFD', sTitle).encode('ascii', 'ignore') sTitle = sTitle.encode('ascii', 'ignore').decode('ascii').replace(' VF', '').replace(' VOSTFR', '') sTitle = cUtil().unescape(sTitle) sUrl2 = cUtil().unescape(aEntry[1]) if not sUrl2.startswith('http'): sUrl2 = URL_MAIN + sUrl2 if aEntry[0]: oGui.addText(SITE_IDENTIFIER, '[COLOR red]' + aEntry[0] + '[/COLOR]') else: oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sUrl2) oOutputParameterHandler.addParameter('sMovieTitle', sTitle) oOutputParameterHandler.addParameter('sThumb', sThumb) oGui.addTV(SITE_IDENTIFIER, 'showHosters', sTitle, '', sThumb, '', oOutputParameterHandler) progress_.VSclose(progress_) oGui.setEndOfDirectory()
def showSeries(sSearch = ''): oGui = cGui() if sSearch: sUrl = sSearch else: oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') sMovieTitle = oInputParameterHandler.getValue('sMovieTitle') #sThumbnail = oInputParameterHandler.getValue('sThumbnail') oRequestHandler = cRequestHandler(sUrl) sHtmlContent = oRequestHandler.request(); #sHtmlContent = sHtmlContent.replace('<strong>Téléchargement VOSTFR','').replace('<strong>Téléchargement VF','').replace('<strong>Téléchargement','') sPattern = '<div class="post".+?<h2><a class="title" href="(.+?)" rel="bookmark">(.+?)</a></h2>' oParser = cParser() aResult = oParser.parse(sHtmlContent, sPattern) #print aResult if (aResult[0] == True): total = len(aResult[1]) dialog = cConfig().createDialog(SITE_NAME) for aEntry in aResult[1]: cConfig().updateDialog(dialog, total) if dialog.iscanceled(): break #Si recherche et trop de resultat, on nettoye if sSearch and total > 2: if cUtil().CheckOccurence(sSearch.replace(URL_SEARCH[0],''),aEntry[1]) == 0: continue sTitle = aEntry[1] sUrl = str(aEntry[0]) sDisplayTitle = cUtil().DecoTitle(sTitle) if ('Information' not in sTitle) and ('/liste-de-series/' not in sUrl) and ('/versions-francaises/' not in sUrl): oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sUrl) oOutputParameterHandler.addParameter('sMovieTitle', sTitle) oGui.addMisc(SITE_IDENTIFIER, 'serieHosters', sDisplayTitle, '', '', '', oOutputParameterHandler) cConfig().finishDialog(dialog) sNextPage = __checkForNextPage(sHtmlContent) if (sNextPage != False): oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sNextPage) oGui.addDir(SITE_IDENTIFIER, 'showSeries', '[COLOR teal]Next >>>[/COLOR]', 'next.png', oOutputParameterHandler) if not sSearch: oGui.setEndOfDirectory()
def __addMovieEntry(oGui, sName, sUrl, sThumbnail, sDesc = ""): oGuiElement = cGuiElement() oGuiElement.setSiteName(SITE_IDENTIFIER) oGuiElement.setFunction('showHosters') oGuiElement.setTitle(cUtil().unescape(sName.decode('utf-8')).encode('utf-8')) oGuiElement.setMediaType('movie') oGuiElement.setThumbnail(sThumbnail) oGuiElement.setDescription(cUtil().unescape(sDesc.decode('utf-8')).encode('utf-8').strip()) oOutParms = ParameterHandler() oOutParms.setParam('entryUrl', sUrl) oGui.addFolder(oGuiElement, oOutParms, bIsFolder = False)
def showMovies(sSearch = ''): oGui = cGui() if sSearch: sUrl = sSearch else: oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') oRequestHandler = cRequestHandler(sUrl) sHtmlContent = oRequestHandler.request(); sHtmlContent = sHtmlContent.replace('//ad.advertstream.com/', '').replace('http://www.adcash.com/', '').replace('http://regie.espace-plus.net/', '') sPattern = '<div class="moviefilm"><a href=".+?"><img src="([^<]+)" alt=".+?" height=".+?" width=".+?" /></a><div class="movief"><a href="([^<]+)">([^<]+)</a></div><div class="movies"><small>(.+?)</small></div></div>' oParser = cParser() aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == True): total = len(aResult[1]) dialog = cConfig().createDialog(SITE_NAME) for aEntry in aResult[1]: cConfig().updateDialog(dialog, total) if dialog.iscanceled(): break #Si recherche et trop de resultat, on nettoye if sSearch and total > 2: if cUtil().CheckOccurence(sSearch.replace(URL_SEARCH[0],''),aEntry[2]) == 0: continue sSmall = aEntry[3].replace('<span class="likeThis">', '').replace('</span>', '') sTitle = aEntry[2]+' - [COLOR azure]'+sSmall+'[/COLOR]' oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', str(aEntry[1])) oOutputParameterHandler.addParameter('sMovieTitle', str(aEntry[2])) oOutputParameterHandler.addParameter('sThumbnail', str(aEntry[0])) if 'series' in sUrl: sDisplayTitle = cUtil().DecoTitle(sTitle) oGui.addTV(SITE_IDENTIFIER, 'showSeries', sDisplayTitle, '', aEntry[0], '', oOutputParameterHandler) else: sDisplayTitle = cUtil().DecoTitle(sTitle) oGui.addMovie(SITE_IDENTIFIER, 'showHosters', sDisplayTitle, '', aEntry[0], '', oOutputParameterHandler) cConfig().finishDialog(dialog) sNextPage = __checkForNextPage(sHtmlContent) if (sNextPage != False): oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sNextPage) oGui.addDir(SITE_IDENTIFIER, 'showMovies', '[COLOR teal]Next >>>[/COLOR]', 'next.png', oOutputParameterHandler) if not sSearch: oGui.setEndOfDirectory()
def showHosters(): oGui = cGui() oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') sMovieTitle = oInputParameterHandler.getValue('sMovieTitle') sThumb = oInputParameterHandler.getValue('sThumb') oRequestHandler = cRequestHandler(sUrl) sHtmlContent = oRequestHandler.request() oParser = cParser() sPattern = '<div id="video_[0-9]+" class="epizode re_poleta.+?" data-re_idnews="([^"]+)" data-re_xfn="video" data-re_page="([^"]+)">(.+?)</div>' aResult = oParser.parse(sHtmlContent, sPattern) sTest = '' if (aResult[0] == True): for aEntry in aResult[1]: sPage = aEntry[1] sVideoID = aEntry[0] sHosterUrl = showLinks(sPage, sVideoID) sHosterUrl = cUtil().unescape(sHosterUrl) sTitle = aEntry[2] if not 'Lecteur' in sTitle and sTest != sTitle: oGui.addText(SITE_IDENTIFIER,'[COLOR olive]' + sTitle + '[/COLOR]') sTest = sTitle oHoster = cHosterGui().checkHoster(sHosterUrl) if (oHoster != False): oHoster.setDisplayName(sMovieTitle) oHoster.setFileName(sMovieTitle) cHosterGui().showHoster(oGui, oHoster, sHosterUrl, sThumb) else: sPattern = '<div class="playe.+?" data-show_player="video"><iframe.+?src="([^"]+)"' aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == True): sHosterUrl = aResult[1][0] sHosterUrl = cUtil().unescape(sHosterUrl) oHoster = cHosterGui().checkHoster(sHosterUrl) if (oHoster != False): oHoster.setDisplayName(sMovieTitle) oHoster.setFileName(sMovieTitle) cHosterGui().showHoster(oGui, oHoster, sHosterUrl, sThumb) oGui.setEndOfDirectory()
def showHosters(): oGui = cGui() sThumb = '' sComm = '' oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') sMainUrl = oInputParameterHandler.getValue('sMainUrl') sMovieTitle = oInputParameterHandler.getValue('sMovieTitle') oRequestHandler = cRequestHandler(sUrl) sHtmlContent = oRequestHandler.request() oParser = cParser() #Recuperation info film, com et image sPattern = FILMPATTERN aResult = oParser.parse(sHtmlContent, sPattern) sThumb = aResult[1][0][0] sComm = cUtil().unescape(aResult[1][0][1]) #Recuperation info lien du stream. sLink = None sPostUrl = None sHtmlContent = sHtmlContent.replace('\r','') sPattern = FRAMEPATTERN aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0]): sLink = aResult[1][0] sPattern = '\/plugins\/([0-9a-zA-Z]+)\/plugins\/KEPLIZpluginsphp.js"><\/script>' aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0]): sPostUrl = sMainUrl + 'plugins/' + aResult[1][0] + '/plugins/KEPLIZpluginsphp.php' if ((sLink) and (sPostUrl)): oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sUrl) oOutputParameterHandler.addParameter('sLink', sLink) oOutputParameterHandler.addParameter('sPostUrl', sPostUrl) oOutputParameterHandler.addParameter('sMovieTitle', sMovieTitle) sDisplayTitle = cUtil().DecoTitle(sMovieTitle) oGui.addMovie(SITE_IDENTIFIER, 'showHostersLink', sDisplayTitle, sThumb, sThumb, sComm, oOutputParameterHandler) oGui.setEndOfDirectory()
def AlphaDisplay(): oGui = cGui() oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') print sUrl #recuperation de la page oRequestHandler = cRequestHandler(sUrl) sHtmlContent = oRequestHandler.request() oParser = cParser() sPattern = '<a href="(.+?)" class="list-name">»(.+?)<\/a>' aResult = oParser.parse(sHtmlContent, sPattern) #print aResult if (aResult[0] == True): total = len(aResult[1]) dialog = cConfig().createDialog(SITE_NAME) for aEntry in aResult[1]: cConfig().updateDialog(dialog, total) if dialog.iscanceled(): break sTitle = aEntry[1] sDisplayTitle = cUtil().DecoTitle(sTitle) oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', aEntry[0]) oOutputParameterHandler.addParameter('sMovieTitle', sTitle) oGui.addTV(SITE_IDENTIFIER, 'serieHosters', sDisplayTitle, '', '','', oOutputParameterHandler) cConfig().finishDialog(dialog) oGui.setEndOfDirectory()
def showSeries(): oGui = cGui() oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') sMovieTitle = oInputParameterHandler.getValue('sMovieTitle') sThumbnail = oInputParameterHandler.getValue('sThumbnail') sUrl = sUrl+'100/' oRequestHandler = cRequestHandler(sUrl) sHtmlContent = oRequestHandler.request(); sPattern = '<a href="([^<]+)"><span>(.+?)</span></a>' oParser = cParser() aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == True): total = len(aResult[1]) dialog = cConfig().createDialog(SITE_NAME) for aEntry in aResult[1]: cConfig().updateDialog(dialog, total) if dialog.iscanceled(): break sTitle = sMovieTitle+' - '+aEntry[1] sDisplayTitle = cUtil().DecoTitle(sTitle) oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', str(aEntry[0])) oOutputParameterHandler.addParameter('sMovieTitle', str(sTitle)) oOutputParameterHandler.addParameter('sThumbnail', str(sThumbnail)) oGui.addTV(SITE_IDENTIFIER, 'showHosters', sDisplayTitle, '', sThumbnail, '', oOutputParameterHandler) cConfig().finishDialog(dialog) oGui.setEndOfDirectory()
def listHighlights(): oGui = cGui() oInputParameterHandler = cInputParameterHandler() if (oInputParameterHandler.exist('urlPart')): sUrlPart = oInputParameterHandler.getValue('urlPart') sUrl = URL_HIGHLIGHTS + sUrlPart sPattern = '{"mediaType":1,.*?"dataUrl":"([^"]+)".*?"duration":([^,]+),.*?"name":"([^"]+)".*?"thumbnailUrl":"([^"]+)".*?' oRequest = cRequestHandler(sUrl) sHtmlContent = oRequest.request() sHtmlContent = sHtmlContent.replace('\/', '/') sHtmlContent = sHtmlContent.replace('\\"', '"') oParser = cParser() aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == True): for aEntry in aResult[1]: sDurationFormatted = cUtil().formatTime(aEntry[1]) sTitle = aEntry[2] + ' (' + sDurationFormatted + ')' __showHoster(oGui, sTitle, aEntry[0]) oGui.setEndOfDirectory()
def __getMediaLinkByPremiumUser(self, sUsername, sPassword): oRequestHandler = cRequestHandler('http://www.megavideo.com/?s=account') oRequestHandler.setRequestType(cRequestHandler.REQUEST_TYPE_POST) oRequestHandler.addParameters('login', '1') oRequestHandler.addParameters('username', sUsername) oRequestHandler.addParameters('password', sPassword) oRequestHandler.request() aHeader = oRequestHandler.getResponseHeader(); sReponseCookie = aHeader.getheader("Set-Cookie") self.__sUrl = self.__getIdFromUrl() sPattern = 'user=([^;]+);' oParser = cParser() aResult = oParser.parse(sReponseCookie, sPattern) if (aResult[0] == True): sUserId = aResult[1][0] sUrl = 'http://www.megavideo.com/xml/player_login.php?u=' + str(sUserId) + '&v=' + str(self.__sUrl) oRequestHandler = cRequestHandler(sUrl) sXmlContent = oRequestHandler.request() sPattern = 'downloadurl="([^"]+)"' oParser = cParser() aResult = oParser.parse(sXmlContent, sPattern) if (aResult[0] == True): sMediaLink = cUtil().urlDecode(str(aResult[1][0])) return True, sMediaLink return False, ''
def __parseCharts(sUrl): oGui = cGui() sPattern = '<td class="ch_place">.*?"/>(.*?)</td>.*?<td class="ch_last">(.*?)</td>.*?<td class="ch_artist">(.*?)</td>.*?<td class="ch_track">(.*?)</td>.*?<td class="ch_buy">(.*?)</td>' oRequest = cRequestHandler(sUrl) sHtmlContent = oRequest.request() oParser = cParser() aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == True): for aEntry in aResult[1]: sInterpretName = cUtil().removeHtmlTags(str(aEntry[2]), '') sTitle = str(aEntry[0]) + ' (' + str(aEntry[1]) + ') : ' + sInterpretName + ' - ' + str(aEntry[3]) sPattern = '.*?<a href="([^"]+)".*?<img.*?<img.*?src="([^"]+)"' sCode = aEntry[4] oParser = cParser() aResultMeta = oParser.parse(sCode, sPattern) if (aResultMeta[0] == True): sLink = aResultMeta[1][0][0] sUrl = URL_MAIN + str(sLink) __showHoster(oGui, sTitle, sUrl) oGui.setEndOfDirectory()
def __getMediaLinkForGuest(self): oHosterHandler = cHosterHandler() aResult = oHosterHandler.getUrl(self) if (aResult[0] == True): return True, cUtil().urlDecode(aResult[1]) return False, ''
def __getMediaLinkForGuest(self): oRequest = cRequestHandler(self.__sUrl) sHtmlContent = oRequest.request() sPattern = 'unescape.+?"(.+?)"' oParser = cParser() aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == True): decoder = cUtil().urlDecode(aResult[1][0]) sPattern = 'file: "(.+?)"' oParser = cParser() aResult = oParser.parse(decoder, sPattern) if (aResult[0] == True): cGui().showInfo(self.__sDisplayName, 'Streaming', 5) return True, aResult[1][0] else: cGui().showInfo(self.__sDisplayName, 'Fichier introuvable' , 5) return False, False else: cGui().showInfo(self.__sDisplayName, 'Fichier introuvable' , 5) return False, False return False, False
def __parseList(sUrl, sNextFunction): oGui = cGui() oRequestHandler = cRequestHandler(sUrl) sHtmlContent = oRequestHandler.request(); sHtmlContent = sHtmlContent.replace('\\', '') sPattern = '<tr align=left onmouseover="Tip\(\'<img src=\\\'(.*?)\'.*?<td ><a href="([^"]+)".*?>(.*?)</a></td><td>.*?</td><td>(.*?)</td><td>.*?</td><td>(.*?)</td></tr>' oParser = cParser() aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == True): for aEntry in aResult[1]: oGuiElement = cGuiElement() oGuiElement.setSiteName(SITE_IDENTIFIER) oGuiElement.setFunction(sNextFunction) oGuiElement.setThumbnail(str(aEntry[0])) sTitle = cUtil().removeHtmlTags(aEntry[2]) sTitle = sTitle + ' SUBS(' + __getLanguage(str(aEntry[3])) + ')' sTitle = sTitle + ' DUBS(' + __getLanguage(str(aEntry[4])) + ')' oGuiElement.setTitle(sTitle) oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', URL_MAIN + str(aEntry[1]).replace('#top', '')) oGui.addFolder(oGuiElement, oOutputParameterHandler) oGui.setEndOfDirectory()
def showLibre(): oGui = cGui() oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') oRequestHandler = cRequestHandler(sUrl) sHtmlContent = oRequestHandler.request() oParser = cParser() sPattern = '<url>(.+?)</url><title>(.+?)</title><order>.+?</order><icon>(.+?)</icon>' aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == True): total = len(aResult[1]) dialog = cConfig().createDialog(SITE_NAME) for aEntry in aResult[1]: cConfig().updateDialog(dialog, total) if dialog.iscanceled(): break sTitle = aEntry[1] sDisplayTitle = cUtil().DecoTitle(sTitle) oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', aEntry[0]) oOutputParameterHandler.addParameter('sMovieTitle', sTitle) oGui.addDirectTV(SITE_IDENTIFIER, 'showLibretv', sDisplayTitle, 'tv.png' , '', oOutputParameterHandler) cConfig().finishDialog(dialog) oGui.setEndOfDirectory()
def seriesHosters(): oGui = cGui() oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') sMovieTitle = oInputParameterHandler.getValue('sMovieTitle') sThumbnail = oInputParameterHandler.getValue('sThumbnail') oRequestHandler = cRequestHandler(sUrl) sHtmlContent = oRequestHandler.request() oParser = cParser() sPattern = '<div class="e-number">.+?<iframe src="(.+?)".+?class="episode-id">(.+?)<' aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == True): total = len(aResult[1]) dialog = cConfig().createDialog(SITE_NAME) for aEntry in aResult[1]: cConfig().updateDialog(dialog, total) if dialog.iscanceled(): break sTitle = sMovieTitle + ' ' + str(aEntry[1]) sTitle = cUtil().DecoTitle(sTitle) sHosterUrl = str(aEntry[0]) oHoster = cHosterGui().checkHoster(sHosterUrl) if (oHoster != False): oHoster.setDisplayName(sTitle) oHoster.setFileName(sTitle) cHosterGui().showHoster(oGui, oHoster, sHosterUrl, sThumbnail) cConfig().finishDialog(dialog) oGui.setEndOfDirectory()
def serieHosters(): oGui = cGui() oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') sMovieTitle = oInputParameterHandler.getValue('sMovieTitle') sThumbnail = oInputParameterHandler.getValue('sThumbnail') oRequestHandler = cRequestHandler(sUrl) sHtmlContent = oRequestHandler.request() sHtmlContent = sHtmlContent.replace('<iframe width="420" height="315" src="https://www.youtube.com/', '') sPattern = '<div class="su-tabs-pane su-clearfix"><iframe src="(.+?)"[^<>]+?><\/iframe><\/div>' oParser = cParser() aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == True): i = 1 for aEntry in aResult[1]: sHosterUrl = str(aEntry) oHoster = cHosterGui().checkHoster(sHosterUrl) sTitle = sMovieTitle + 'episode ' + str(i) sDisplayTitle = cUtil().DecoTitle(sTitle) i = i + 1 if (oHoster != False): oHoster.setDisplayName(sDisplayTitle) oHoster.setFileName(sTitle) cHosterGui().showHoster(oGui, oHoster, sHosterUrl, sThumbnail) oGui.setEndOfDirectory()
def Display_protected_link(): #xbmc.log('Display_protected_link') oGui = cGui() oInputParameterHandler = cInputParameterHandler() sMovieTitle = oInputParameterHandler.getValue('sMovieTitle') sUrl = oInputParameterHandler.getValue('siteUrl') sThumb=oInputParameterHandler.getValue('sThumb') oParser = cParser() #Est ce un lien ushort-links? if 'ushort-links' in sUrl: oRequestHandler = cRequestHandler(sUrl) sHtmlContent = oRequestHandler.request() if sHtmlContent: sPattern = '<a id="download" href="(.+?)"' aResult = oParser.parse(sHtmlContent, sPattern) sHosterUrl = aResult[1][0] #print sHosterUrl sTitle = sMovieTitle oHoster = cHosterGui().checkHoster(sHosterUrl) if (oHoster != False): sDisplayTitle = cUtil().DecoTitle(sTitle) oHoster.setDisplayName(sDisplayTitle) oHoster.setFileName(sTitle) cHosterGui().showHoster(oGui, oHoster, sHosterUrl, sThumb) else: oDialog = cConfig().createDialogOK('Erreur décryptage du lien') aResult_dlprotecte = (False, False) oGui.setEndOfDirectory()
def showMovies(sSearch = ''): oGui = cGui() if sSearch: sUrl = sSearch else: oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') oRequestHandler = cRequestHandler(sUrl) sHtmlContent = oRequestHandler.request() #fh = open('c:\\test.txt', "w") #fh.write(sHtmlContent) #fh.close() #Magouille pour virer les 3 ligne en trop en cas de recherche if sSearch: sHtmlContent = sHtmlContent.replace('quelle-est-votre-serie-preferee','<>') sHtmlContent = sHtmlContent.replace('top-series-du-moment','<>') sHtmlContent = sHtmlContent.replace('listes-des-series-annulees-et-renouvelees','<>') oParser = cParser() sPattern = '<div class="moviefilm"> *<a href=".+?"> *<img src="([^<>"]+)".+?\/><\/a><div class="movief"><a href="([^<]+)">([^<]+)<\/a><\/div>' aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == True): total = len(aResult[1]) dialog = cConfig().createDialog(SITE_NAME) for aEntry in aResult[1]: cConfig().updateDialog(dialog, total) if dialog.iscanceled(): break sTitle = aEntry[2] sTitle = sTitle.replace(' [Streaming]','') sTitle = sTitle.replace(' [Telecharger]','') sTitle = sTitle.replace(' [Complète]','') sTitle = sTitle.replace(' [Complete]','') sDisplayTitle = cUtil().DecoTitle(sTitle) oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', str(aEntry[1])) oOutputParameterHandler.addParameter('sMovieTitle', sTitle) oOutputParameterHandler.addParameter('sThumbnail', str(aEntry[0])) if 'series' in sUrl or re.match('.+?saison [0-9]+',sTitle,re.IGNORECASE): oGui.addTV(SITE_IDENTIFIER, 'showSeries', sDisplayTitle, '', aEntry[0], '', oOutputParameterHandler) else: oGui.addMovie(SITE_IDENTIFIER, 'showHosters', sDisplayTitle, '', aEntry[0], '', oOutputParameterHandler) cConfig().finishDialog(dialog) sNextPage = __checkForNextPage(sHtmlContent) if (sNextPage != False): oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sNextPage) oGui.addDir(SITE_IDENTIFIER, 'showMovies', '[COLOR teal]Next >>>[/COLOR]', 'next.png', oOutputParameterHandler) if not sSearch: oGui.setEndOfDirectory()
def showHosters(): oGui = cGui() oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') sMovieTitle = oInputParameterHandler.getValue('sMovieTitle') sThumbnail = oInputParameterHandler.getValue('sThumbnail') oRequestHandler = cRequestHandler(sUrl) sHtmlContent = oRequestHandler.request(); sPattern = '<iframe src="(.+?)"' oParser = cParser() aResult = oParser.parse(sHtmlContent, sPattern) print aResult if (aResult[0] == True): for aEntry in aResult[1]: sHosterUrl = str(aEntry) #oHoster = __checkHoster(sHosterUrl) oHoster = cHosterGui().checkHoster(sHosterUrl) sDisplayTitle = cUtil().DecoTitle(sMovieTitle) if (oHoster != False): #sMovieTitle=re.sub(r'\[.*\]',r'',sMovieTitle) oHoster.setDisplayName(sDisplayTitle) oHoster.setFileName(sMovieTitle) cHosterGui().showHoster(oGui, oHoster, sHosterUrl, sThumbnail) oGui.setEndOfDirectory()
def showAllMovies(): oGui = cGui() oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') oRequestHandler = cRequestHandler(sUrl) sHtmlContent = oRequestHandler.request(); sPattern = '<div class="actorsindex">(.*?)<div class="boxfooter">' oParser = cParser() aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == True): sHtmlContent = aResult[1][0] sPattern = '<li><a href="([^"]+)" title=".*?">(.*?)</a></li>' oParser = cParser() aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == True): for aEntry in aResult[1]: oGuiElement = cGuiElement() oGuiElement.setSiteName(SITE_IDENTIFIER) oGuiElement.setFunction('showHosters') sTitle = cUtil().removeHtmlTags(str(aEntry[1])) oGuiElement.setTitle(sTitle) oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', URL_MAIN + str(aEntry[0])) oOutputParameterHandler.addParameter('sMovieTitle', sTitle) oGui.addFolder(oGuiElement, oOutputParameterHandler) oGui.setEndOfDirectory()
def showEntries(entryUrl=False, sGui=False): oGui = sGui if sGui else cGui() params = ParameterHandler() if not entryUrl: entryUrl = params.getValue('sUrl') sHtmlContent = cRequestHandler(entryUrl).request() pattern = 'class="list_film.*?img src="([^"]+).*?\s=\s\'([^\']+).*?>([^"(]+).*?\(([^")]+)' aResult = cParser().parse(sHtmlContent, pattern) if aResult[0] and aResult[1][0]: total = len(aResult[1]) util = cUtil() for sThumbnail, sUrl, sName, sJahr in aResult[1]: oGuiElement = cGuiElement( util.unescape(sName.decode('utf-8')).encode('utf-8'), SITE_IDENTIFIER, 'showHosters') oGuiElement.setThumbnail(sThumbnail) oGuiElement.setYear(sJahr) oGuiElement.setMediaType('movie') params.setParam('entryUrl', URL_MAIN + sUrl) oGui.addFolder(oGuiElement, params, False, total) pattern = '"><a href="([^"]+)"([^>]+)?>»' aResult = cParser().parse(sHtmlContent, pattern) if aResult[0] and aResult[1][0] and 'void' not in aResult[1][0][0]: params.setParam('sUrl', URL_MAIN + aResult[1][0][0]) oGui.addNextPage(SITE_IDENTIFIER, 'showEntries', params) if not sGui: oGui.setView('movies') oGui.setEndOfDirectory()
def __getMovies(oGui, sHtmlContent): oParams = ParameterHandler() sBlockPattern = '<div class="moviefilm">.*?href="(.*?)"(.*?)src="(.*?)".*?alt="(.*?)"' # parse content oParser = cParser() aResult = oParser.parse(sHtmlContent, sBlockPattern) unescape = cUtil().unescape if aResult[0]: for link, span, img, title in aResult[1]: title = unescape(title.decode('utf-8')).encode('utf-8') # TODO: Looking for span isn't the best way, but the only difference I found if "span" not in span: if __isSeriesEverAvaiable(): url = __getSELink(link) if url: guiElement = cGuiElement(title, SERIESEVER_IDENTIFIER, 'showMovie') guiElement.setMediaType('movie') guiElement.setThumbnail(img) oParams.addParams({'sUrl': url}) oGui.addFolder(guiElement, oParams) else: guiElement = cGuiElement(title, SITE_IDENTIFIER, 'showHosters') guiElement.setMediaType('movie') guiElement.setThumbnail(img) oParams.addParams({'sUrl': link, 'Title': title}) oGui.addFolder(guiElement, oParams, bIsFolder=False)
def showGenre(): oGui = cGui() oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') oRequestHandler = cRequestHandler(sUrl) sHtmlContent = oRequestHandler.request(); sPattern = '<ul class="subnav">(.*?)</ul>' oParser = cParser() aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == True): sHtmlContent = aResult[1][0] sPattern = '<a href="([^"]+)" title=".*?">(.*?)</a></li>' oParser = cParser() aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == True): for aEntry in aResult[1]: oGuiElement = cGuiElement() oGuiElement.setSiteName(SITE_IDENTIFIER) oGuiElement.setFunction('showMovieEntries') oGuiElement.setTitle(cUtil().removeHtmlTags(str(aEntry[1]))) oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', URL_MAIN + str(aEntry[0])) oOutputParameterHandler.addParameter('page', 1) oGui.addFolder(oGuiElement, oOutputParameterHandler) oGui.setEndOfDirectory()
def listVideos(): oGui = cGui() oInputParameterHandler = cInputParameterHandler() if (oInputParameterHandler.exist('playlistId')): sPlaylistId = oInputParameterHandler.getValue('playlistId') sUrl = URL_PLAYLIST + str(sPlaylistId) sPattern = '<li><a href="#([^"]+)".*?><img src="([^"]+)".*?></div><div>([^"]+)</div></a></li>' # request oRequest = cRequestHandler(sUrl) sHtmlContent = oRequest.request() sHtmlContent = sHtmlContent.replace('\/', '/') sHtmlContent = sHtmlContent.replace('\\"', '"') oParser = cParser() aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == True): for aEntry in aResult[1]: sTitle = cUtil().removeHtmlTags(aEntry[2], ' ') sVideoUrl = __createVideoUrl(aEntry[1], aEntry[0]) __showHoster(oGui, sTitle, sVideoUrl) oGui.setEndOfDirectory()
def showMovies(sSearch=''): oGui = cGui() if sSearch: sUrl = sSearch else: oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') oRequestHandler = cRequestHandler(sUrl) sHtmlContent = oRequestHandler.request() sPattern = '<div id="(post-[0-9]+)".+?<a class="clip-link".+?title="([^<]+)" href="([^<]+)">.+?<img src="([^"]+)"' oParser = cParser() aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == False): oGui.addText(SITE_IDENTIFIER) if (aResult[0] == True): total = len(aResult[1]) dialog = cConfig().createDialog(SITE_NAME) for aEntry in aResult[1]: cConfig().updateDialog(dialog, total) if dialog.iscanceled(): break sTitle = unicode(aEntry[1], 'utf-8') #converti en unicode sTitle = unicodedata.normalize('NFD', sTitle).encode( 'ascii', 'ignore') #vire accent #sTitle = unescape(str(sTitle)) sTitle = sTitle.encode("utf-8") #mise en page sTitle = sTitle.replace('Permalien pour', '') sTitle = re.sub( '(?:,)* (?:Replay |Video )*du ([0-9]+ [a-zA-z]+ [0-9]+)', ' (\\1)', str(sTitle)) sTitle = re.sub(', (?:Replay|Video)$', '', str(sTitle)) oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', str(aEntry[2])) oOutputParameterHandler.addParameter('sMovieTitle', sTitle) oOutputParameterHandler.addParameter('sThumbnail', str(aEntry[3])) sDisplayTitle = cUtil().DecoTitle(sTitle) if "/series-tv/" in sUrl: oGui.addTV(SITE_IDENTIFIER, 'showHosters', sDisplayTitle, 'series.png', aEntry[3], '', oOutputParameterHandler) else: oGui.addMisc(SITE_IDENTIFIER, 'showHosters', sDisplayTitle, 'doc.png', aEntry[3], '', oOutputParameterHandler) cConfig().finishDialog(dialog) sNextPage = __checkForNextPage(sHtmlContent) if (sNextPage != False): oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sNextPage) oGui.addNext(SITE_IDENTIFIER, 'showMovies', '[COLOR teal]Next >>>[/COLOR]', oOutputParameterHandler) if not sSearch: oGui.setEndOfDirectory()
def _setWatched(self): try: if self.isPlaying(): self.totalTime = self.getTotalTime() self.currentTime = self.getTime() self.infotag = self.getVideoInfoTag() if self.totalTime > 0: pourcent = float('%.2f' % (self.currentTime / self.totalTime)) saisonViewing = False #calcul le temp de lecture # Dans le cas ou ont a vu intégralement le contenu, percent = 0.0 # Mais on a tout de meme terminé donc le temps actuel est egal au temps total. if (pourcent > 0.90) or (pourcent == 0.0 and self.currentTime == self.totalTime): # Marquer VU dans la BDD Vstream sTitleWatched = self.infotag.getOriginalTitle() if sTitleWatched: db = cDb() meta = {} meta['title'] = sTitleWatched meta['cat'] = self.sCat db.insert_watched(meta) # RAZ du point de reprise db.del_resume(meta) # Sortie des LECTURE EN COURS pour les films, pour les séries la suppression est manuelle if self.sCat == '1': meta['titleWatched'] = sTitleWatched meta['cat'] = self.sCat db.del_viewing(meta) elif self.sCat == '8': # A la fin de la lecture d'un episode, on met la saison en "Lecture en cours" saisonViewing = True # Marquer VU dans les comptes perso # NE FONCTIONNE PAS SI PLUSIEURS VIDEOS SE SONT ENCHAINEES (cas des épisodes) if not self.multi: tmdb_session = self.ADDON.getSetting('tmdb_session') if tmdb_session: self.__getWatchlist('tmdb') bstoken = self.ADDON.getSetting('bstoken') if bstoken: self.__getWatchlist('trakt') # Sauvegarde du point de lecture pour une reprise elif self.currentTime > 180.0: sTitleWatched = self.infotag.getOriginalTitle() if sTitleWatched: db = cDb() meta = {} meta['title'] = sTitleWatched meta['site'] = self.sSite meta['point'] = self.currentTime meta['total'] = self.totalTime matchedrow = db.insert_resume(meta) # Lecture en cours meta['cat'] = self.sCat meta['site'] = self.sSource meta['sTmdbId'] = self.sTmdbId # Lecture d'un épisode, on sauvegarde la saison if self.sCat == '8': saisonViewing = True else: # Lecture d'un film # les 'divers' de moins de 45 minutes peuvent être de type 'adultes' # pas de sauvegarde en attendant mieux if self.sCat == '5' and self.totalTime < 2700: pass else: meta['title'] = self.sTitle meta['titleWatched'] = sTitleWatched if self.movieUrl and self.movieFunc: meta['siteurl'] = self.movieUrl meta['fav'] = self.movieFunc else: meta['siteurl'] = self.sSite meta['fav'] = self.sFav db.insert_viewing(meta) # Lecture d'un épisode, on met la saison "En cours de lecture" if saisonViewing: meta['cat'] = '4' # saison meta['sTmdbId'] = self.sTmdbId tvShowTitle = cUtil().titleWatched(self.tvShowTitle).replace(' ', '') if self.sSaison: meta['season'] = self.sSaison meta['title'] = self.tvShowTitle + " S" + self.sSaison meta['titleWatched'] = tvShowTitle + "_S" + self.sSaison else: meta['title'] = self.tvShowTitle meta['titleWatched'] = tvShowTitle meta['site'] = self.sSource meta['siteurl'] = self.saisonUrl meta['fav'] = self.nextSaisonFunc db.insert_viewing(meta) except Exception as err: VSlog("ERROR Player_setWatched : {0}".format(err))
def showMovies(sSearch=''): oGui = cGui() if sSearch: sSearch = sSearch.replace(' ', '+') sUrl = sSearch else: oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') sHtmlContent = SucurieBypass().GetHtml(sUrl) oParser = cParser() sPattern = 'class="item"> *<a href="([^<]+)">.+?<img src="([^<>"]+?)" alt="([^"]+?)".+?<span class="calidad2">(.+?)<\/span>' aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == False): oGui.addText(SITE_IDENTIFIER) if (aResult[0] == True): total = len(aResult[1]) dialog = cConfig().createDialog(SITE_NAME) for aEntry in aResult[1]: cConfig().updateDialog(dialog, total) #dialog if dialog.iscanceled(): break sName = aEntry[2].replace(' en Streaming HD', '') sName = sName.replace(' Streaming HD', '') sName = sName.decode('utf8') sName = cUtil().unescape(sName) try: sName = sName.encode("utf-8") except: pass sTitle = sName + ' [' + aEntry[3] + ']' sUrl2 = aEntry[0] sThumbnail = aEntry[1] if sThumbnail.startswith('//'): sThumbnail = 'http:' + sThumbnail oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', str(sUrl2)) oOutputParameterHandler.addParameter('sMovieTitle', sName) oOutputParameterHandler.addParameter('sThumbnail', str(sThumbnail)) sDisplayTitle = cUtil().DecoTitle(sTitle) if re.match('.+?saison [0-9]+', sTitle, re.IGNORECASE): oGui.addTV(SITE_IDENTIFIER, 'serieHosters', sDisplayTitle, '', sThumbnail, '', oOutputParameterHandler) else: oGui.addMovie(SITE_IDENTIFIER, 'showHosters', sDisplayTitle, 'films.png', sThumbnail, '', oOutputParameterHandler) cConfig().finishDialog(dialog) if not sSearch: sNextPage = __checkForNextPage(sUrl) if (sNextPage != False): oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sNextPage) oGui.addNext(SITE_IDENTIFIER, 'showMovies', '[COLOR teal]Next >>>[/COLOR]', oOutputParameterHandler) if not sSearch: oGui.setEndOfDirectory()
def showHosters(): oGui = cGui() oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') sMovieTitle = oInputParameterHandler.getValue('sMovieTitle') sThumbnail = oInputParameterHandler.getValue('sThumbnail') sHtmlContent = SucurieBypass().GetHtml(sUrl) #Vire les bandes annonces sHtmlContent = sHtmlContent.replace('src="https://www.youtube.com/', '') sPattern = '<iframe[^<>]+?src="(http.+?)"' oParser = cParser() aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == True): for aEntry in aResult[1]: sHosterUrl = str(aEntry) if '//goo.gl' in sHosterUrl: import urllib2 try: class NoRedirection(urllib2.HTTPErrorProcessor): def http_response(self, request, response): return response url8 = sHosterUrl.replace('https', 'http') opener = urllib2.build_opener(NoRedirection) opener.addheaders.append(('User-Agent', UA)) opener.addheaders.append(('Connection', 'keep-alive')) HttpReponse = opener.open(url8) sHosterUrl = HttpReponse.headers['Location'] sHosterUrl = sHosterUrl.replace('https', 'http') except: pass if 'official-film-illimite' in sHosterUrl: sDisplayTitle = cUtil().DecoTitle(sMovieTitle) sDisplayTitle = sDisplayTitle + ' [COLOR skyblue]Google[/COLOR]' oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sHosterUrl) oOutputParameterHandler.addParameter('sMovieTitle', sMovieTitle) oOutputParameterHandler.addParameter('sThumbnail', sThumbnail) oGui.addMisc(SITE_IDENTIFIER, 'ShowSpecialHosters', sDisplayTitle, 'films.png', sThumbnail, '', oOutputParameterHandler) else: oHoster = cHosterGui().checkHoster(sHosterUrl) if (oHoster != False): sDisplayTitle = cUtil().DecoTitle(sMovieTitle) oHoster.setDisplayName(sDisplayTitle) oHoster.setFileName(sMovieTitle) cHosterGui().showHoster(oGui, oHoster, sHosterUrl, sThumbnail) oGui.setEndOfDirectory()
def showSeries(sSearch = ''): oGui = cGui() oParser = cParser() if sSearch: sUrl = sSearch else: oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') oRequestHandler = cRequestHandler(sUrl) sHtmlContent = oRequestHandler.request() sPattern = 'class="short-poster.+?href="([^"]+)".+?img src="([^"]+)".*?class="short-title.+?>([^<]+)<' 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 #Si recherche et trop de resultat, on nettoye if sSearch and total > 2: if cUtil().CheckOccurence(sUrl.replace(URL_SEARCH_SERIE[0], ''), aEntry[2]) == 0: continue sUrl2 = URL_MAIN[:-1] + aEntry[0] sThumb = re.sub('http.+?/img/french-stream.com.php\?src=', '', aEntry[1]) sThumb = sThumb.split('&')[0] if sThumb.startswith ('/'): sThumb = URL_MAIN[:-1] + sThumb #filtre pour réorienter les mangas # if '/manga' in sUrl: # sType = 'mangas' # else: # sType = 'autre' sTitle = aEntry[2] oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sUrl2) oOutputParameterHandler.addParameter('sMovieTitle', sTitle) oOutputParameterHandler.addParameter('sThumb', sThumb) # oOutputParameterHandler.addParameter('sType', sType) if '/manga' in sUrl: oGui.addTV(SITE_IDENTIFIER, 'mangaHosters', sTitle, '', sThumb, '', oOutputParameterHandler) else: oGui.addTV(SITE_IDENTIFIER, 'showEpisode', sTitle, '', sThumb, '', oOutputParameterHandler) progress_.VSclose(progress_) sNextPage = __checkForNextPage(sHtmlContent) if (sNextPage != False): oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sNextPage) oGui.addNext(SITE_IDENTIFIER, 'showSeries', '[COLOR teal]Suivant >>>[/COLOR]', oOutputParameterHandler) if not sSearch: oGui.setEndOfDirectory()
def showSeriesSaison(): oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') sMovieTitle = oInputParameterHandler.getValue('sMovieTitle') sFanart = oInputParameterHandler.getValue('sFanart') sTmdbId = oInputParameterHandler.getValue('sTmdbId') sId = oInputParameterHandler.getValue('sId') if sId == False: sId = sUrl.split('/')[-1] if sFanart == False: sFanart = '' oGui = cGui() #recherche la serie complete oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sMovieTitle) #oOutputParameterHandler.addParameter('type', 'serie') #oOutputParameterHandler.addParameter('searchtext', sMovieTitle) oOutputParameterHandler.addParameter('searchtext', cUtil().CleanName(sMovieTitle)) oGuiElement = cGuiElement() oGuiElement.setSiteName('globalSearch') oGuiElement.setFunction('searchMovie') oGuiElement.setTitle(cConfig().getlanguage(30414)) oGuiElement.setCat(2) oGuiElement.setIcon("searchtmdb.png") oGui.addFolder(oGuiElement, oOutputParameterHandler) #oGui.addDir('cHome', 'showSearch', cConfig().getlanguage(30414), 'searchtmdb.png', oOutputParameterHandler) #fin result = grab.getUrl(sUrl) total = len(result) if (total > 0): for i in result['seasons']: sdate, sNbreEp, sIdSeason, sThumbnail, SSeasonNum = i[ 'air_date'], i['episode_count'], i['id'], i['poster_path'], i[ 'season_number'] if sThumbnail: sThumbnail = POSTER_URL + sThumbnail else: sThumbnail = '' sTitle = 'Saison ' + str(SSeasonNum) + ' (' + str(sNbreEp) + ')' sUrl = 'tv/' + sId + '/season/' + str(SSeasonNum) oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sUrl) oOutputParameterHandler.addParameter('sMovieTitle', sMovieTitle) oOutputParameterHandler.addParameter('sThumbnail', str(sThumbnail)) oOutputParameterHandler.addParameter('sId', sId) oOutputParameterHandler.addParameter('sSeason', str(SSeasonNum)) oOutputParameterHandler.addParameter('sFanart', str(sFanart)) oOutputParameterHandler.addParameter('sTmdbId', sTmdbId) #oGui.addTVDB(SITE_IDENTIFIER, 'showSeriesEpisode', sTitle, 'series.png', sThumbnail, sFanart, oOutputParameterHandler) cGui.CONTENT = "tvshows" oGuiElement = cGuiElement() oGuiElement.setTmdbId(sTmdbId) oGuiElement.setSiteName(SITE_IDENTIFIER) oGuiElement.setFunction('showSeriesEpisode') oGuiElement.setTitle(sTitle) oGuiElement.setFileName(sMovieTitle) oGuiElement.setIcon('series.png') oGuiElement.setMeta(2) oGuiElement.setThumbnail(sThumbnail) oGuiElement.setPoster(sThumbnail) oGuiElement.setFanart(sFanart) oGuiElement.setCat(7) oGui.addFolder(oGuiElement, oOutputParameterHandler) #test pr chnagement mode #xbmc.executebuiltin('Container.SetViewMode(500)') oGui.setEndOfDirectory()
def showMovies(sSearch=''): oGui = cGui() if sSearch: sUrl = sSearch.replace(' ', '+') else: oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') oParser = cParser() oRequestHandler = cRequestHandler(sUrl) sHtmlContent = oRequestHandler.request() if 'letters' in sUrl: sPattern = '<a href="([^"]+)" class="MvTbImg".+?<noscript><img src="([^"]+)" alt=.+?(?:|class="TpTv BgA">([^<]+)<.+?)strong>([^<]+)<.+?</td><td>([^<]+)<' else: sPattern = 'class="TPost C"> *<a href="([^"]+)".+?src="([^"]+)".+?class="Title">([^<]+)<.+?<span class="Year">([^<]+)<\/span>' aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == True): total = len(aResult[1]) progress_ = progress().VScreate(SITE_NAME) for aEntry in aResult[1]: progress_.VSupdate(progress_, total) if progress_.iscanceled(): break if 'letters' in sUrl: sUrl2 = aEntry[0] sThumb = re.sub('/w\d+', '/w342', aEntry[1], 1) sTitle = aEntry[3] sYear = aEntry[4] #aEntry[2] sers à faire la difference entre film et serie sDisplayTitle = ('%s (%s)') % (sTitle, sYear) else: sUrl2 = aEntry[0] sThumb = re.sub('/w\d+', '/w342', aEntry[1], 1) sTitle = aEntry[2] sYear = aEntry[3] sDisplayTitle = ('%s (%s)') % (sTitle, sYear) # Si recherche et trop de resultat, on nettoye if sSearch and total > 2: if cUtil().CheckOccurence(sSearch.replace(URL_SEARCH[0], ''), sTitle) == 0: continue oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sUrl2) oOutputParameterHandler.addParameter('sMovieTitle', sTitle) oOutputParameterHandler.addParameter('sThumb', sThumb) if 'serie' in sUrl: oGui.addTV(SITE_IDENTIFIER, 'showEpisode', sDisplayTitle, '', sThumb, '', oOutputParameterHandler) elif 'letters' in sUrl and 'Serie' in aEntry[2]: oGui.addTV(SITE_IDENTIFIER, 'showEpisode', sDisplayTitle, '', sThumb, '', oOutputParameterHandler) else: oGui.addMovie(SITE_IDENTIFIER, 'showLinks', sDisplayTitle, '', sThumb, '', oOutputParameterHandler) progress_.VSclose(progress_) if not sSearch: sNextPage = __checkForNextPage(sHtmlContent) if (sNextPage != False): oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sNextPage) oGui.addNext(SITE_IDENTIFIER, 'showMovies', '[COLOR teal]Next >>>[/COLOR]', oOutputParameterHandler) if not sSearch: oGui.setEndOfDirectory()
def setFileName(self, sFileName): if isMatrix(): self.__sFileName = sFileName else: self.__sFileName = cUtil().titleWatched(sFileName)
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 = urllib2.unquote(sSearch) sSearch = urllib.quote_plus( sSearch).upper() #passe en majuscule et remplace espace par + url = URL_MAIN + 'resultat+' + sSearch + '.html' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0', 'Referer': URL_MAIN } request = urllib2.Request(url, None, headers) reponse = urllib2.urlopen(request) sHtmlContent = reponse.read() reponse.close() else: oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') oRequestHandler = cRequestHandler(sUrl) 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) sPattern = '<center><div style="background: url\(\'([^\'].+?)\'\); background-size.+?alt="(.+?)" title.+?<a href=["\']*(.+?)[\'"]* class=.button' 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 list(set(aResult[1])): progress_.VSupdate(progress_, total) if progress_.iscanceled(): break sThumb = URL_MAIN + str(aEntry[0]) sTitle = str(aEntry[1]) #sTitle = unicode(sTitle, errors='replace') sTitle = unicode(sTitle, 'iso-8859-1') sTitle = unicodedata.normalize('NFD', sTitle).encode('ascii', 'ignore') sTitle = sTitle.encode('ascii', 'ignore').decode('ascii') sTitle = cUtil().unescape(sTitle) sTitle = sTitle.replace('[Streaming] - ', '').replace( ' (VF)', '').replace(' (VOSTFR)', '').replace(' DVDRIP', '') if ' - Episode' in sTitle: sTitle = sTitle.replace(' -', '') sUrl = URL_MAIN + str(aEntry[2]) #affichage de la langue sLang = '' if 'VF' in str(aEntry[1]): sLang = 'VF' elif 'VOSTFR' in str(aEntry[1]): sLang = 'VOSTFR' #affichage de la qualité sQual = '' if 'DVDRIP' in str(aEntry[1]): sQual = 'DVDRIP' sDisplayTitle = ('%s (%s) (%s)') % (sTitle, sLang, sQual) oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sUrl) oOutputParameterHandler.addParameter('sMovieTitle', sTitle) oOutputParameterHandler.addParameter('sThumb', sThumb) if '?manga=' in sUrl: oGui.addTV(SITE_IDENTIFIER, 'showEpisode', sDisplayTitle, 'animes.png', sThumb, '', oOutputParameterHandler) elif '?serie=' in sUrl: oGui.addTV(SITE_IDENTIFIER, 'showEpisode', sDisplayTitle, 'series.png', sThumb, '', oOutputParameterHandler) else: oGui.addMovie(SITE_IDENTIFIER, 'showHosters', sDisplayTitle, 'films.png', sThumb, '', oOutputParameterHandler) progress_.VSclose(progress_) if sSearch: sNextPage = False else: sNextPage = __checkForNextPage(sHtmlContent, sUrl) if (sNextPage != False): oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sNextPage) oGui.addNext(SITE_IDENTIFIER, 'showMovies', '[COLOR teal]Next >>>[/COLOR]', oOutputParameterHandler) if not sSearch: oGui.setEndOfDirectory()
def TraiteTitre(self, sTitle): # Format Obligatoire a traiter via le fichier source # ------------------------------------------------- # Episode 7 a 9 > Episode 7-9 # Saison 1 à ? > Saison 1-? # Format de date > 11/22/3333 ou 11-22-3333 # convertion unicode ne fonctionne pas avec les accents try: # traitement du titre pour les caracteres spéciaux déplacé dans parser plus global # traitement du titre pour retirer le - quand c'est une Saison. Tiret, tiret moyen et cadratin sTitle = sTitle.replace(' - Saison', ' Saison').replace( ' – Saison', ' Saison').replace(' — Saison', ' Saison') if not isMatrix(): sTitle = sTitle.decode('utf-8') except: pass # recherche l'année, uniquement si entre caractere special a cause de 2001 odysse de l'espace ou k2000 string = re.search('([^\w ][0-9]{4}[^\w ])', sTitle) if string: sTitle = sTitle.replace(string.group(0), '') self.__Year = str(string.group(0)[1:5]) self.addItemValues('year', self.__Year) # recherche une date string = re.search('([\d]{2}[\/|-]\d{2}[\/|-]\d{4})', sTitle) if string: sTitle = sTitle.replace(string.group(0), '') self.__Date = str(string.group(0)) sTitle = '%s (%s) ' % (sTitle, self.__Date) #~ #recherche Lang #~ index = {' vostfr': ' [VOSTFR]', ' vf': ' [VF]', ' truefrench': ' [TrueFrench]'} #~ for cle in index: #~ sTitle = sTitle.replace(cle.upper(), index[cle]).replace(cle, index[cle]).replace('(%s)' % (cle), index[cle]) #~ #recherche Qualité #~ index = {'1080i': '(1080)', '1080p': '(1080)', '1080I': '(1080)', '1080P': '(1080)', '720i': '(720)', '720p': '(720)', '720I': '(720)', '720P': '(720)'} #~ for cle in index: #~ sTitle = sTitle.replace(cle, index[cle]).replace('[%s]' % (cle), index[cle]) # Recherche saison et episode a faire pr serie uniquement if True: m = re.search( '(?i)(?:^|[^a-z])((?:E|(?:\wpisode\s?))([0-9]+(?:[\-\.][0-9\?]+)*))', sTitle, re.UNICODE) if m: # ok y a des episodes sTitle = sTitle.replace(m.group(1), '') ep = m.group(2) if len(ep) == 1: ep = '0' + ep self.__Episode = ep self.addItemValues('Episode', self.__Episode) # pour les saisons m = re.search('(?i)( s(?:aison +)*([0-9]+(?:\-[0-9\?]+)*))', sTitle, re.UNICODE) if m: sTitle = sTitle.replace(m.group(1), '') sa = m.group(2) if len(sa) == 1: sa = '0' + sa self.__Season = sa self.addItemValues('Season', self.__Season) else: # pas d'episode mais y a t il des saisons ? m = re.search('(?i)( s(?:aison +)*([0-9]+(?:\-[0-9\?]+)*))', sTitle, re.UNICODE) if m: sTitle = sTitle.replace(m.group(1), '') sa = m.group(2) if len(sa) == 1: sa = '0' + sa self.__Season = sa self.addItemValues('Season', self.__Season) # vire doubles espaces sTitle = re.sub(' +', ' ', sTitle) # enleve les crochets et les parentheses si elle sont vides sTitle = sTitle.replace('()', '').replace('[]', '').replace('- -', '-') # vire espace a la fin et les - (attention, il y a 2 tirets differents meme si invisible a l'oeil nu et un est en unicode) sTitle = re.sub('[- –]+$', '', sTitle) # et au debut if sTitle.startswith(' '): sTitle = sTitle[1:] # recherche les Tags restant : () ou [] sauf tag couleur sTitle = re.sub('([\(|\[](?!\/*COLOR)[^\)\(\]\[]+?[\]|\)])', '[COLOR ' + self.__sDecoColor + ']\\1[/COLOR]', sTitle) # on reformate SXXEXX Titre [tag] (Annee) sTitle2 = '' if self.__Season: sTitle2 = sTitle2 + 'S' + self.__Season if self.__Episode: sTitle2 = sTitle2 + 'E' + self.__Episode # Titre unique pour marquer VU (avec numéro de l'épisode pour les séries) self.__sTitleWatched = cUtil().titleWatched(sTitle).replace(' ', '') if sTitle2: self.addItemValues('tvshowtitle', cUtil().getSerieTitre(sTitle)) self.__sTitleWatched += '_' + sTitle2 self.addItemValues('originaltitle', self.__sTitleWatched) if sTitle2: sTitle2 = '[COLOR %s]%s[/COLOR] ' % (self.__sDecoColor, sTitle2) sTitle2 = sTitle2 + sTitle if self.__Year: sTitle2 = '%s [COLOR %s](%s)[/COLOR]' % ( sTitle2, self.__sDecoColor, self.__Year) # on repasse en utf-8 if not isMatrix(): return sTitle2.encode('utf-8') return sTitle2
def showFilmActor(): oGui = cGui() oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') iPage = 1 if (oInputParameterHandler.exist('page')): iPage = oInputParameterHandler.getValue('page') result = grab.getUrl(sUrl, iPage) total = len(result) if (total > 0): for i in result['cast']: sId, sTitle, sThumbnail, sFanart, sDesc = i['id'], i['title'], i[ 'poster_path'], i['backdrop_path'], i['overview'] try: sTitle = unicodedata.normalize('NFKD', sTitle).encode( 'ascii', 'ignore') except: sTitle = "Aucune information" try: sThumbnail = POSTER_URL + sThumbnail except: sThumbnail = '' try: sFanart = FANART_URL + sFanart except: sFanart = '' #sTitle = sTitle.encode("utf-8") oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', 'http://tmdb/%s' % sId) oOutputParameterHandler.addParameter('sMovieTitle', str(sTitle)) oOutputParameterHandler.addParameter('sTmdbId', sId) oOutputParameterHandler.addParameter('sThumbnail', str(sThumbnail)) oOutputParameterHandler.addParameter('type', 'film') #oOutputParameterHandler.addParameter('searchtext', showTitle(sTitle, str('none'))) oOutputParameterHandler.addParameter('searchtext', cUtil().CleanName(sTitle)) #oGui.addMovieDB('globalSearch', 'showHosters', sTitle, '', sThumbnail, '', oOutputParameterHandler) cGui.CONTENT = "movies" oGuiElement = cGuiElement() oGuiElement.setTmdbId(sId) oGuiElement.setSiteName('globalSearch') oGuiElement.setFunction('showSearch') oGuiElement.setTitle(sTitle) oGuiElement.setFileName(sTitle) oGuiElement.setIcon('actors.png') oGuiElement.setMeta(1) oGuiElement.setThumbnail(sThumbnail) oGuiElement.setPoster(sThumbnail) oGuiElement.setFanart(sFanart) oGuiElement.setCat(1) oGuiElement.setDescription(sDesc) oGui.addFolder(oGuiElement, oOutputParameterHandler) #pas de paramettre de page # if (iPage > 0): # iNextPage = int(iPage) + 1 # oOutputParameterHandler = cOutputParameterHandler() # oOutputParameterHandler.addParameter('siteUrl', sUrl) # oOutputParameterHandler.addParameter('page', iNextPage) # oGui.addDir(SITE_IDENTIFIER, 'showFilmActor', '[COLOR teal]Page '+str(iNextPage)+' >>>[/COLOR]', 'next.png', oOutputParameterHandler) oGui.setEndOfDirectory()
def showSeriesEpisode(): oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') sMovieTitle = oInputParameterHandler.getValue('sMovieTitle') sFanart = oInputParameterHandler.getValue('sFanart') sTmdbId = oInputParameterHandler.getValue('sTmdbId') sSeason = oInputParameterHandler.getValue('sSeason') #sId = oInputParameterHandler.getValue('sId') if sSeason == False: sSeason = sUrl.split('/')[-1] if sFanart == False: sFanart = '' oGui = cGui() #recherche saison complete oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sMovieTitle) #oOutputParameterHandler.addParameter('type', 'serie') search = '%s S%02d' % (sMovieTitle, int(sSeason)) #oOutputParameterHandler.addParameter('searchtext', search) oOutputParameterHandler.addParameter('searchtext', cUtil().CleanName(search)) oGuiElement = cGuiElement() oGuiElement.setSiteName('globalSearch') oGuiElement.setFunction('searchMovie') oGuiElement.setTitle(cConfig().getlanguage(30415)) oGuiElement.setCat(2) oGuiElement.setIcon("searchtmdb.png") oGui.addFolder(oGuiElement, oOutputParameterHandler) #oGui.addDir('cHome', 'showSearch', cConfig().getlanguage(30415), 'searchtmdb.png', oOutputParameterHandler) #fin result = grab.getUrl(sUrl) total = len(result) if (total > 0): for i in result['episodes']: #sId, sTitle, sOtitle, sThumbnail, sFanart = i['id'], i['name'], i['original_name'], i['poster_path'], i['backdrop_path'] sdate, sIdEp, sEpNumber, sName, sThumbnail, SResume = i[ 'air_date'], i['id'], i['episode_number'], i['name'], i[ 'still_path'], i['overview'] sName = sName.encode("utf-8") if sName == '': sName = sMovieTitle if sThumbnail: sThumbnail = POSTER_URL + sThumbnail else: sThumbnail = '' #sTitle = '[COLOR coral]S' + sSeason + 'E' + str(sEpNumber) + '[/COLOR] - ' + sName sTitle = 'S%s E%s %s' % (sSeason, str(sEpNumber), sName) sExtraTitle = ' S' + "%02d" % int(sSeason) + 'E' + "%02d" % int( sEpNumber) oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter( 'siteUrl', sMovieTitle + '|' + sExtraTitle) #Pour compatibilite Favoris oOutputParameterHandler.addParameter('sMovieTitle', sMovieTitle) oOutputParameterHandler.addParameter('sThumbnail', str(sThumbnail)) oOutputParameterHandler.addParameter('sTmdbId', sTmdbId) oOutputParameterHandler.addParameter('sSeason', sSeason) oOutputParameterHandler.addParameter('sEpisode', str(sEpNumber)) oOutputParameterHandler.addParameter('type', 'serie') #oOutputParameterHandler.addParameter('searchtext', showTitle(sMovieTitle, sMovieTitle + '|' + sExtraTitle)) oOutputParameterHandler.addParameter( 'searchtext', cUtil().CleanName(sMovieTitle)) #oGui.addTVDB('globalSearch', 'showHosters', sTitle, 'series.png', sThumbnail, sFanart, oOutputParameterHandler) cGui.CONTENT = "tvshows" oGuiElement = cGuiElement() oGuiElement.setTmdbId(sTmdbId) oGuiElement.setSiteName('globalSearch') oGuiElement.setFunction('showSearch') oGuiElement.setTitle(sTitle) oGuiElement.setFileName(sMovieTitle) oGuiElement.setIcon('series.png') oGuiElement.setMeta(2) oGuiElement.setThumbnail(sThumbnail) oGuiElement.setFanart(sFanart) oGuiElement.setCat(2) oGui.addFolder(oGuiElement, oOutputParameterHandler) #test pr chnagement mode #xbmc.executebuiltin('Container.SetViewMode(50)') oGui.setEndOfDirectory()
def showMovies(sSearch=''): oInputParameterHandler = cInputParameterHandler() iPage = 1 if (oInputParameterHandler.exist('page')): iPage = oInputParameterHandler.getValue('page') if (oInputParameterHandler.exist('sSearch')): sSearch = oInputParameterHandler.getValue('sSearch') if sSearch: result = grab.getUrl('search/movie', iPage, 'query=' + sSearch) sUrl = '' else: sUrl = oInputParameterHandler.getValue('siteUrl') result = grab.getUrl(sUrl, iPage) oGui = cGui() total = len(result) if (total > 0): for i in result['results']: sId, sTitle, sOtitle, sThumbnail, sFanart, sDesc = i['id'], i[ 'title'], i['original_title'], i['poster_path'], i[ 'backdrop_path'], i['overview'] if sThumbnail: sThumbnail = POSTER_URL + sThumbnail else: sThumbnail = '' sTitle = sTitle.encode("utf-8") if sFanart: sFanart = FANART_URL + sFanart else: sFanart = '' oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', 'http://tmdb/%s' % sId) oOutputParameterHandler.addParameter('sMovieTitle', str(sTitle)) oOutputParameterHandler.addParameter('sThumbnail', str(sThumbnail)) oOutputParameterHandler.addParameter('sTmdbId', sId) oOutputParameterHandler.addParameter('type', 'film') #oOutputParameterHandler.addParameter('searchtext', showTitle(sTitle, str('none'))) oOutputParameterHandler.addParameter('searchtext', cUtil().CleanName(sTitle)) #oGui.addMovieDB('globalSearch', 'showHosters', sTitle, 'films.png', sThumbnail, sFanart, oOutputParameterHandler) cGui.CONTENT = "movies" oGuiElement = cGuiElement() oGuiElement.setTmdbId(sId) oGuiElement.setSiteName('globalSearch') oGuiElement.setFunction('showSearch') oGuiElement.setTitle(sTitle) oGuiElement.setFileName(sTitle) oGuiElement.setIcon('films.png') oGuiElement.setMeta(1) oGuiElement.setThumbnail(sThumbnail) oGuiElement.setPoster(sThumbnail) oGuiElement.setFanart(sFanart) oGuiElement.setCat(1) oGuiElement.setDescription(sDesc) oGui.addFolder(oGuiElement, oOutputParameterHandler) if (iPage > 0): iNextPage = int(iPage) + 1 oOutputParameterHandler = cOutputParameterHandler() if sSearch: oOutputParameterHandler.addParameter('sSearch', sSearch) oOutputParameterHandler.addParameter('siteUrl', sUrl) oOutputParameterHandler.addParameter('page', iNextPage) oGui.addNext(SITE_IDENTIFIER, 'showMovies', '[COLOR teal]Page ' + str(iNextPage) + ' >>>[/COLOR]', oOutputParameterHandler) #test pr chnagement mode #xbmc.executebuiltin('Container.SetViewMode(500)') oGui.setEndOfDirectory(view)
def showSeries(sSearch=''): oInputParameterHandler = cInputParameterHandler() iPage = 1 if (oInputParameterHandler.exist('page')): iPage = oInputParameterHandler.getValue('page') if (oInputParameterHandler.exist('sSearch')): sSearch = oInputParameterHandler.getValue('sSearch') if sSearch: result = grab.getUrl('search/tv', iPage, 'query=' + sSearch) sUrl = '' else: sUrl = oInputParameterHandler.getValue('siteUrl') if (oInputParameterHandler.exist('genre')): term = 'with_genres=' + oInputParameterHandler.getValue('genre') else: term = '' result = grab.getUrl(sUrl, iPage, term) oGui = cGui() total = len(result) if (total > 0): for i in result['results']: sId, sTitle, sOtitle, sThumbnail, sFanart, sDesc = i['id'], i[ 'name'], i['original_name'], i['poster_path'], i[ 'backdrop_path'], i['overview'] if sThumbnail: sThumbnail = POSTER_URL + sThumbnail else: sThumbnail = '' if sFanart: sFanart = FANART_URL + sFanart else: sFanart = '' sTitle = sTitle.encode("utf-8") sSiteUrl = 'tv/' + str(sId) oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sSiteUrl) oOutputParameterHandler.addParameter('sMovieTitle', str(sTitle)) oOutputParameterHandler.addParameter('sThumbnail', str(sThumbnail)) oOutputParameterHandler.addParameter('sId', str(sId)) oOutputParameterHandler.addParameter('sFanart', str(sFanart)) oOutputParameterHandler.addParameter('sTmdbId', sId) #oOutputParameterHandler.addParameter('searchtext', sTitle) oOutputParameterHandler.addParameter('searchtext', cUtil().CleanName(sTitle)) #oGui.addTVDB(SITE_IDENTIFIER, 'showSeriesSaison', sTitle, 'series.png', sThumbnail, sFanart, oOutputParameterHandler) cGui.CONTENT = "tvshows" oGuiElement = cGuiElement() oGuiElement.setTmdbId(sId) oGuiElement.setSiteName(SITE_IDENTIFIER) # a activer pour saisons #oGuiElement.setSiteName('globalSearch') # a desactiver pour saison oGuiElement.setFunction('showSeriesSaison') oGuiElement.setTitle(sTitle) oGuiElement.setFileName(sTitle) oGuiElement.setIcon('series.png') oGuiElement.setMeta(2) oGuiElement.setThumbnail(sThumbnail) oGuiElement.setPoster(sThumbnail) oGuiElement.setFanart(sFanart) oGuiElement.setCat(2) oGuiElement.setDescription(sDesc) oGui.addFolder(oGuiElement, oOutputParameterHandler) if (iPage > 0): iNextPage = int(iPage) + 1 oOutputParameterHandler = cOutputParameterHandler() if sSearch: oOutputParameterHandler.addParameter('sSearch', sSearch) oOutputParameterHandler.addParameter('siteUrl', sUrl) oOutputParameterHandler.addParameter('page', iNextPage) oGui.addNext(SITE_IDENTIFIER, 'showSeries', '[COLOR teal]Page ' + str(iNextPage) + ' >>>[/COLOR]', oOutputParameterHandler) #test pr chnagement mode #xbmc.executebuiltin('Container.SetViewMode(500)') oGui.setEndOfDirectory(view)
def showMovies(sSearch = ''): oGui = cGui() oParser = cParser() oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') if sSearch: sUrl = sSearch sPattern = '<div class="image">.*?<a href="([^"]+)">\s*<img src="([^"]+)" alt="([^"]+)".+?<p>(.+?)<' elif 'episodes' in sUrl: sPattern = '<div class="poster">.*?<img src="([^"]+)" alt="(.+?)".+?<a href="([^"]+)">' else: sPattern = '<div class="poster"> *<img src="([^"]+)".+?<a href="([^"]+)" *title="([^"]+)".+?class="texto">([^<]+)' oRequestHandler = cRequestHandler(sUrl) sHtmlContent = oRequestHandler.request() 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 #Si recherche et trop de resultat, on nettoye if sSearch and total > 2: if cUtil().CheckOccurence(sSearch.replace(URL_SEARCH[0], ''), aEntry[2]) == 0: continue sDesc = '' if sSearch: sThumb = aEntry[1] sUrl = aEntry[0] sTitle = aEntry[2] sDesc = aEntry[3] elif 'episodes' in sUrl: sThumb = aEntry[0] sUrl = aEntry[2] sTitle = aEntry[1] else: sThumb = aEntry[0] sUrl = aEntry[1] sTitle = aEntry[2].replace('streaming', ' ') sDesc = aEntry[3] if sDesc: sDesc = cUtil().unescape(sDesc.decode('utf8')) oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sUrl) oOutputParameterHandler.addParameter('sMovieTitle', sTitle) oOutputParameterHandler.addParameter('sThumb', sThumb) if 'series' in sUrl: oGui.addTV(SITE_IDENTIFIER, 'showSxE', sTitle, '', sThumb, sDesc, oOutputParameterHandler) elif 'episodes' in sUrl: oGui.addMovie(SITE_IDENTIFIER, 'showLinks', sTitle, '', sThumb, '', oOutputParameterHandler) else: oGui.addMovie(SITE_IDENTIFIER, 'showLinks', sTitle, '', sThumb, sDesc, oOutputParameterHandler) progress_.VSclose(progress_) if not sSearch: 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 = sSearch else: oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') oRequestHandler = cRequestHandler(sUrl) sHtmlContent = oRequestHandler.request() oParser = cParser() sPattern = '<div class="libre-movie libre-movie-block">.+?data-src="(.+?)".+?title="(.+?)".+?<h2 onclick="window.location.href=\'(.+?)\'">' if '/films/' in sUrl: sPattern = sPattern + '.+?<div class="maskquality (.+?)">' aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == True): total = len(aResult[1]) dialog = cConfig().createDialog(SITE_NAME) for aEntry in aResult[1]: cConfig().updateDialog(dialog, total) if dialog.iscanceled(): break #Si recherche et trop de resultat, on nettoye if sSearch and total > 2: if cUtil().CheckOccurence(sSearch.replace(URL_SEARCH[0], ''), aEntry[1]) == 0: continue sMovieTitle = str(aEntry[1]) sThumb = aEntry[0] if sThumb.startswith('/'): sThumb = URL_MAIN[:-1] + sThumb if '/films/' in sUrl: sMovieTitle = sMovieTitle + ' [' + str(aEntry[3]) + ']' sTitle = cUtil().DecoTitle(sMovieTitle) sDisplayTitle = cUtil().DecoTitle(sTitle) oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', str(aEntry[2])) oOutputParameterHandler.addParameter('sMovieTitle', sMovieTitle) oOutputParameterHandler.addParameter('sThumbnail', sThumb) if '/series/' in sUrl or '-saison-' in aEntry[2]: oGui.addTV(SITE_IDENTIFIER, 'seriesHosters', sDisplayTitle, '', sThumb, '', oOutputParameterHandler) else: oGui.addMovie(SITE_IDENTIFIER, 'showHosters', sDisplayTitle, '', sThumb, '', oOutputParameterHandler) cConfig().finishDialog(dialog) sNextPage = __checkForNextPage(sHtmlContent) if (sNextPage != False): oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sNextPage) oGui.addDir(SITE_IDENTIFIER, 'showMovies', '[COLOR teal]Next >>>[/COLOR]', 'next.png', oOutputParameterHandler) if not sSearch: oGui.setEndOfDirectory()
def showHosters(): oGui = cGui() oParser = cParser() oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') sMovieTitle = oInputParameterHandler.getValue('sMovieTitle') sThumb = oInputParameterHandler.getValue('sThumb') oRequestHandler = cRequestHandler(sUrl) sHtmlContent = oRequestHandler.request() sPattern = '<b><a href=".+?redirect\/\?url\=(.+?)\&id.+?">' aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == True): sUrl = cUtil().urlDecode(aResult[1][0]) 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 = '{file:"([^"]+)"\,label:"([^"]+)"}' aResult = oParser.parse(sHtmlContent, sPattern) for aEntry in aResult[1]: sHosterUrl = str(aEntry[0]) sDisplayTitle = ('[%s] %s') % (aEntry[1] + 'p', sMovieTitle) oHoster = cHosterGui().checkHoster(sHosterUrl) if (oHoster != False): oHoster.setDisplayName(sDisplayTitle) oHoster.setFileName(sDisplayTitle) cHosterGui().showHoster(oGui, oHoster, sHosterUrl, sThumb) elif 'jheberg' in sUrl: sUrl = sUrl.replace('captcha', 'mirrors') if not 'www.jheberg' in sUrl: sUrl = sUrl.replace('jheberg', 'www.jheberg') aResult = cJheberg().GetUrls(sUrl) 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 showMovies(sSearch=''): oGui = cGui() oParser = cParser() if sSearch: sUrl = sSearch.replace(' ', '+') else: oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') oRequestHandler = cRequestHandler(sUrl) sHtmlContent = oRequestHandler.request() sPattern = '<div class="libre-movie.+?data-src="([^"]+)".+?title="([^"]+)".+?onclick="window.location.href=\'(.+?)\'">.+?class="maskhr">Synopsis.+?</span>(.+?)</div>' if '/films' in sUrl: sPattern = sPattern + '.+?<div class="maskquality (.+?)">' if '/series' in sUrl: sPattern = sPattern + '.+?>Séries</a>.+?<a href=".+?">([^<]+)</a>' 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 #Si recherche et trop de resultat, on nettoye if sSearch and total > 2: if cUtil().CheckOccurence(sSearch.replace(URL_SEARCH[0], ''), aEntry[1]) == 0: continue sTitle = aEntry[1].replace(' - Saison', ' Saison') sUrl2 = aEntry[2] sDesc = aEntry[3] sThumb = aEntry[0] if sThumb.startswith('/'): sThumb = URL_MAIN[:-1] + sThumb if not '/series/' in sUrl and not '/films/' in sUrl: sDisplayTitle = sTitle if '/films/' in sUrl: sQual = aEntry[4] #on supprime [VOSTFR], [HD 720p] et DVDRIP du titre car affiche en tant que qualite sinon doublons sMovieTitle = sTitle.replace('[VOSTFR]', '').replace( '[HD 720p]', '').replace('DVDRIP ', '') sDisplayTitle = sMovieTitle + ' [' + sQual + ']' if '/series/' in sUrl: if not '/vostfr/' in sUrl and not '/version-francaise/' in sUrl: sLang = aEntry[4] sLang = sLang.replace('Version Française', 'VF') sDisplayTitle = sTitle + ' (' + sLang + ')' else: sDisplayTitle = sTitle oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sUrl2) oOutputParameterHandler.addParameter('sMovieTitle', sTitle) oOutputParameterHandler.addParameter('sThumb', sThumb) if '/series/' in sUrl or '-saison-' in sUrl2: oGui.addTV(SITE_IDENTIFIER, 'seriesHosters', sDisplayTitle, '', sThumb, sDesc, oOutputParameterHandler) else: oGui.addMovie(SITE_IDENTIFIER, 'showHosters', sDisplayTitle, '', sThumb, sDesc, oOutputParameterHandler) progress_.VSclose(progress_) sNextPage = __checkForNextPage(sHtmlContent) if (sNextPage != False): oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sNextPage) oGui.addNext(SITE_IDENTIFIER, 'showMovies', '[COLOR teal]Next >>>[/COLOR]', oOutputParameterHandler) if not sSearch: oGui.setEndOfDirectory()
def showSerie(sSearch=''): oGui = cGui() if sSearch: sUrl = sSearch else: oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') oRequestHandler = cRequestHandler(sUrl) sHtmlContent = oRequestHandler.request() sPattern = '<div class="content-box"><a href="([^<]+)" class=.+?data-src="([^<]+)" class="image"></a>.+?<h3>([^<]+)</h3></a><p>([^<]+)</p>' oParser = cParser() aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == True): total = len(aResult[1]) progress_ = progress().VScreate(SITE_NAME) for aEntry in aResult[1]: progress_.VSupdate(progress_, total) if progress_.iscanceled(): break sTitle = aEntry[2].decode("utf8") sTitle = cUtil().unescape(sTitle).encode("utf8") sTitle = sTitle.replace("مشاهدة", "").replace( "مترجمة", "").replace("مترجمة", "").replace("مترجم", "").replace( "فيلم", "").replace("اون لاين", "").replace("WEB-DL", "").replace( "BRRip", "").replace("720p", "").replace("HD-TC", "").replace( "HDRip", "").replace("HD-CAM", "").replace( "DVDRip", "").replace("BluRay", "").replace( "1080p", "").replace("WEBRip", "").replace( "WEB-dl", "").replace("مترجم ", "").replace( "مشاهدة وتحميل", "").replace("اون لاين", "") siteUrl = str(aEntry[0]) sThumbnail = str(aEntry[1]) sInfo = "" oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', siteUrl) oOutputParameterHandler.addParameter('sMovieTitle', sTitle) oOutputParameterHandler.addParameter('sThumbnail', sThumbnail) oGui.addTV(SITE_IDENTIFIER, 'showEpisodes', sTitle, '', sThumbnail, sInfo, oOutputParameterHandler) progress_.VSclose(progress_) sNextPage = __checkForNextPage(sHtmlContent) if (sNextPage != False): oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sNextPage) oGui.addDir(SITE_IDENTIFIER, 'showSerie', '[COLOR teal]Next >>>[/COLOR]', 'next.png', oOutputParameterHandler) if not sSearch: oGui.setEndOfDirectory()
def showEpisodes(): oGui = cGui() oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') sMovieTitle = oInputParameterHandler.getValue('sMovieTitle') sThumbnail = oInputParameterHandler.getValue('sThumbnail') oRequestHandler = cRequestHandler(sUrl) sHtmlContent = oRequestHandler.request() # ([^<]+) .+? sPattern = '<a href="([^<]+)" class="col-6 col-s-4 col-m-3 col-l-1 button-block"><h3>الموسم<span>([^<]+)</span></h3></a>' oParser = cParser() aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == True): total = len(aResult[1]) progress_ = progress().VScreate(SITE_NAME) for aEntry in aResult[1]: progress_.VSupdate(progress_, total) if progress_.iscanceled(): break sTitle = " الموسم" + aEntry[1] sTitle = '[COLOR aqua]' + sTitle + '[/COLOR]' siteUrl = str(aEntry[0]) + '/episodes' sThumbnail = str(sThumbnail) oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', siteUrl) oOutputParameterHandler.addParameter('sMovieTitle', sTitle) oOutputParameterHandler.addParameter('sThumbnail', sThumbnail) oGui.addMisc(SITE_IDENTIFIER, 'showEps', sTitle, '', sThumbnail, '', oOutputParameterHandler) progress_.VSclose(progress_) # ([^<]+) .+? sPattern = '<a href="([^<]+)" class="col-6 col-s-4 col-m-3 col-l-1 button-block"><h3>الحلقة <span>([^<]+)</span></h3></a>' oParser = cParser() aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == True): total = len(aResult[1]) progress_ = progress().VScreate(SITE_NAME) for aEntry in aResult[1]: progress_.VSupdate(progress_, total) if progress_.iscanceled(): break sTitle = " الحلقة" + aEntry[1] sTitle = sTitle siteUrl = str(aEntry[0]).replace("episode", "watch") sThumbnail = str(sThumbnail) oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', siteUrl) oOutputParameterHandler.addParameter('sMovieTitle', sTitle) oOutputParameterHandler.addParameter('sThumbnail', sThumbnail) oGui.addMisc(SITE_IDENTIFIER, 'showServers', sTitle, '', sThumbnail, '', oOutputParameterHandler) progress_.VSclose(progress_) # ([^<]+) .+? sPattern = '<a href="([^<]+)" class="col-6 col-s-4 col-m-3 col-l-1 button-block"><h3>الحلقة <span></span></h3></a>' oParser = cParser() aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == True): total = len(aResult[1]) progress_ = progress().VScreate(SITE_NAME) for aEntry in aResult[1]: progress_.VSupdate(progress_, total) if progress_.iscanceled(): break sTitle = aEntry.replace("https://shahid4u.im/episode/", "") sTitle = sTitle.decode("utf8") sTitle = cUtil().unescape(sTitle).encode("utf8") sTitle = sTitle siteUrl = aEntry.replace("episode", "watch") sThumbnail = str(sThumbnail) oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', siteUrl) oOutputParameterHandler.addParameter('sMovieTitle', sTitle) oOutputParameterHandler.addParameter('sThumbnail', sThumbnail) oGui.addMisc(SITE_IDENTIFIER, 'showServers', sTitle, '', sThumbnail, '', oOutputParameterHandler) progress_.VSclose(progress_) sNextPage = __checkForNextPage(sHtmlContent) if (sNextPage != False): oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sNextPage) oGui.addDir(SITE_IDENTIFIER, 'showEpisodes', '[COLOR teal]Next >>>[/COLOR]', 'next.png', oOutputParameterHandler) oGui.setEndOfDirectory()
def showMovies(sSearch=''): oGui = cGui() if sSearch: sUrl = sSearch else: oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') oRequestHandler = cRequestHandler(sUrl) sHtmlContent = oRequestHandler.request() sPattern = 'format-video hentry item-video">.+?<img src="(.+?)".+?<a href="([^<>"]+?)".+?<b>(.+?)<\/b>' oParser = cParser() aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == False): oGui.addText(SITE_IDENTIFIER) if (aResult[0] == True): total = len(aResult[1]) dialog = cConfig().createDialog(SITE_NAME) for aEntry in aResult[1]: cConfig().updateDialog(dialog, total) if dialog.iscanceled(): break sTitle = aEntry[2].decode("utf8") sTitle = cUtil().unescape(sTitle) try: sTitle = sTitle.encode("utf-8") except: pass sUrl = aEntry[1] sThumbnail = aEntry[0] if not sThumbnail.startswith('http'): sThumbnail = URL_MAIN + sThumbnail oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', str(sUrl)) oOutputParameterHandler.addParameter('sMovieTitle', sTitle) oOutputParameterHandler.addParameter('sThumbnail', str(sThumbnail)) sDisplayTitle = cUtil().DecoTitle(sTitle) if '/serie' in sUrl: oGui.addTV(SITE_IDENTIFIER, 'showEpisode', sDisplayTitle, 'series.png', sThumbnail, '', oOutputParameterHandler) elif '/anime' in sUrl: oGui.addTV(SITE_IDENTIFIER, 'showEpisode', sDisplayTitle, 'animes.png', sThumbnail, '', oOutputParameterHandler) else: oGui.addMovie(SITE_IDENTIFIER, 'showLinks', sDisplayTitle, 'films.png', sThumbnail, '', oOutputParameterHandler) cConfig().finishDialog(dialog) if not sSearch: if '/serie' in sUrl or '/anime' in sUrl: sNextPage = __checkForNextPage2(sHtmlContent) else: sNextPage = __checkForNextPage(sHtmlContent) if (sNextPage != False): oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sNextPage) oGui.addNext(SITE_IDENTIFIER, 'showMovies', '[COLOR teal]Next >>>[/COLOR]', oOutputParameterHandler) if not sSearch: oGui.setEndOfDirectory()
def showMovies(sSearch = ''): oGui = cGui() if sSearch: sUrl = sSearch else: oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') oRequestHandler = cRequestHandler(sUrl) sHtmlContent = oRequestHandler.request() # ([^<]+) .+? sPattern = '<div class="col-md-5th"><div class="poster"><div class="poster-image" style="background-image: url([^<]+);"><div class="overlay"><span class="quality">([^<]+)</span>.+?<a href="([^<]+)">مشاهدة </a></section></div></div><h2>([^<]+)</h2>' oParser = cParser() aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == True): total = len(aResult[1]) progress_ = progress().VScreate(SITE_NAME) for aEntry in aResult[1]: progress_.VSupdate(progress_, total) if progress_.iscanceled(): break sTitle = str(aEntry[3]).decode("utf8") sTitle = cUtil().unescape(sTitle).encode("utf8") sTitle = sTitle.replace("مشاهدة","").replace("مترجم","").replace("فيلم","") siteUrl = URL_MAIN+aEntry[2] sThumb = str(aEntry[0]).replace("(","").replace(")","") sDesc = aEntry[1] oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl',siteUrl) oOutputParameterHandler.addParameter('sMovieTitle', sTitle) oOutputParameterHandler.addParameter('sThumb', sThumb) oGui.addMovie(SITE_IDENTIFIER, 'showHosters', sTitle, '', sThumb, sDesc, oOutputParameterHandler) progress_.VSclose(progress_) sPattern = '<a style="color: white" href="([^<]+)">([^<]+)</a></li>' oParser = cParser() aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == True): total = len(aResult[1]) progress_ = progress().VScreate(SITE_NAME) for aEntry in aResult[1]: progress_.VSupdate(progress_, total) if progress_.iscanceled(): break sTitle = aEntry[1].decode("utf8") sTitle = cUtil().unescape(sTitle).encode("utf8") sTitle = "PAGE " + sTitle sTitle = '[COLOR red]'+sTitle+'[/COLOR]' siteUrl = URL_MAIN+str(aEntry[0]) sThumbnail = "" sInfo = "" oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl',siteUrl) oOutputParameterHandler.addParameter('sMovieTitle', sTitle) oOutputParameterHandler.addParameter('sThumbnail', sThumbnail) oGui.addTV(SITE_IDENTIFIER, 'showMovies', sTitle, '', sThumbnail, sInfo, oOutputParameterHandler) progress_.VSclose(progress_) sNextPage = __checkForNextPage(sHtmlContent) if (sNextPage != False): oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sNextPage) oGui.addDir(SITE_IDENTIFIER, 'showMovies', '[COLOR teal]Next >>>[/COLOR]', 'next.png', oOutputParameterHandler) if not sSearch: oGui.setEndOfDirectory()
def showMovies(sSearch=''): oGui = cGui() if sSearch: sUrl = sSearch else: oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') oRequestHandler = cRequestHandler(sUrl) sHtmlContent = oRequestHandler.request() sPattern = '<div id="mt-.+?href="([^<]+)".+?src="([^<]+)" alt="([^<]+) Streaming.+?".+?class="calidad2">(.+?)<' 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 = str(aEntry[0]) sThumb = str(aEntry[1]) sTitle = str(aEntry[2]).replace(' - Saison', ' Saison') sQual = str(aEntry[3]) sDesc = '' #Si recherche et trop de resultat, on nettoye if sSearch and total > 2: if cUtil().CheckOccurence(sSearch.replace(URL_SEARCH[0], ''), sTitle) == 0: continue sDisplayTitle = ('%s [%s]') % (sTitle, sQual) oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sUrl) oOutputParameterHandler.addParameter('sMovieTitle', sTitle) oOutputParameterHandler.addParameter('sThumb', sThumb) if '-saison-' in sUrl: oGui.addTV(SITE_IDENTIFIER, 'seriesHosters', sTitle, '', sThumb, sDesc, oOutputParameterHandler) else: oGui.addMovie(SITE_IDENTIFIER, 'showHosters', sDisplayTitle, '', sThumb, sDesc, oOutputParameterHandler) progress_.VSclose(progress_) if not sSearch: sNextPage = __checkForNextPage(sHtmlContent) if (sNextPage != False): oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sNextPage) oGui.addNext(SITE_IDENTIFIER, 'showMovies', '[COLOR teal]Next >>>[/COLOR]', oOutputParameterHandler) if not sSearch: oGui.setEndOfDirectory()
def __getMediaLinkForGuest(self): oParser = cParser() #recuperation de la page xbmc.log('url teste : ' + self.__sUrl) oRequest = cRequestHandler(self.__sUrl) oRequest.addHeaderEntry('User-Agent', UA) sHtmlContent = oRequest.request() #Recuperation url cachee TabUrl = [] sPattern = '<span id="([^"]+)">([^<>]+)<\/span>' aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0]): TabUrl = aResult[1] else: return False, False #on essais de situer le code sPattern = '<script src="\/assets\/js\/video-js\/video\.js\.ol\.js">(.+)*' aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0]): sHtmlContent = aResult[1][0] #fh = open('c:\\test.txt', "w") #fh.write(sHtmlContent) #fh.close() code = '' #liste tout les decoders sHtmlContent = CheckCpacker(sHtmlContent) #xbmc.log(sHtmlContent) sHtmlContent = CheckJJDecoder(sHtmlContent) #xbmc.log(sHtmlContent) code = sHtmlContent #xbmc.log(code) if not (code): return False, False #Search the coded url hideenurl = '' sPattern = '\$\("#([^"]+)"\)' aResult = oParser.parse(code, sPattern) if (aResult[0]): for i in TabUrl: if aResult[1][0] == i[0]: hideenurl = i[1] #xbmc.log(str(i)) if not (hideenurl): xbmc.log('Url codee non trouvee') return False, False #Calcul du decalage sPattern = '\(tmp\.slice\(-1\)\.charCodeAt\(0\) \+ ([0-9]+)\)' aResult = oParser.parse(code, sPattern) val = 3 if (aResult[0]): val = int(aResult[1][0]) xbmc.log('Decalage : ' + str(val)) string = cUtil().unescape(hideenurl) url = '' for c in string: v = ord(c) if v >= 33 and v <= 126: v = ((v + 14) % 94) + 33 url = url + chr(v) url = url[:-1] + chr(ord(url[-1]) + val) api_call = "https://openload.co/stream/" + url + "?mime=true" xbmc.log('1 er url : ' + api_call) api_call = GetOpenloadUrl(api_call) #Si ca marche pas on teste d'autres trucs au hazard if not (api_call): url0 = url[:-1] + chr(ord(url[-1]) - val) for i in range(0, 5): if i != val: url2 = url0[:-1] + chr(ord(url0[-1]) + i) url2 = "https://openload.co/stream/" + url2 + "?mime=true" #xbmc.log(url2) url3 = GetOpenloadUrl(url2) if (url3): api_call = url3 if (api_call): return True, api_call return False, False
def serieHosters(): oGui = cGui() oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') sMovieTitle = oInputParameterHandler.getValue('sMovieTitle') sThumbnail = oInputParameterHandler.getValue('sThumbnail') oParser = cParser() liste = False #fh = open('c:\\test.txt', "w") #fh.write(sHtmlContent) #fh.close() #1 - liste fichier if 'dl-protect.com' in sUrl: sPattern = 'href="([^<]+)" target="_blank.+?>(.+?)<.a>' aResult = oParser.parse(sUrl, sPattern) if (aResult[0] == True): UrlList = '' vid_list = [] hoster_list = [] if len(aResult[1]) > 1: for i in aResult[1]: vid_list.extend([i[0]]) hoster_list.extend([i[1]]) if len(aResult[1]) == 1: UrlList = aResult[1][0][0] else: result = xbmcgui.Dialog().select('Choose a link list', hoster_list) if result != -1: UrlList = vid_list[result] if (UrlList): sHtmlContent = DecryptDlProtect(UrlList) if sHtmlContent: sPattern = '<br .><a href="(.+?)" target="_blank">http:.+?<.a>' aResult = oParser.parse(sHtmlContent, sPattern) liste = True else: return else: #2 - Normal sPattern = 'href="([^<]+)" target="_blank"[^<>]*>.+?<\/a>' aResult = oParser.parse(sUrl, sPattern) #affichage if (aResult[0] == True): total = len(aResult[1]) dialog = cConfig().createDialog(SITE_NAME) index = 1 for aEntry in aResult[1]: cConfig().updateDialog(dialog, total) if dialog.iscanceled(): break sTitle = sMovieTitle if liste: sTitle = sTitle + ' (' + str(index) + ') ' index = index + 1 sHosterUrl = str(aEntry) oHoster = cHosterGui().checkHoster(sHosterUrl) if (oHoster != False): sDisplayTitle = cUtil().DecoTitle(sTitle) oHoster.setDisplayName(sDisplayTitle) oHoster.setFileName(sTitle) cHosterGui().showHoster(oGui, oHoster, sHosterUrl, sThumbnail) cConfig().finishDialog(dialog) oGui.setEndOfDirectory()
def showMoviesearch(sSearch = ''): oGui = cGui() if sSearch: sUrl = sSearch else: oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') oRequestHandler = cRequestHandler(sUrl) sHtmlContent = oRequestHandler.request() # (.+?) ([^<]+) .+? sPattern = '<div class="BlockItem"><a href="([^<]+)">.+?<div class="BlockImageItem"><img width=".+?" height=".+?" src="([^<]+)" class="attachment-defaultb size-defaultb wp-post-image" alt="([^<]+)" />' oParser = cParser() aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == True): total = len(aResult[1]) progress_ = progress().VScreate(SITE_NAME) for aEntry in aResult[1]: progress_.VSupdate(progress_, total) if progress_.iscanceled(): break if "فيلم" not in aEntry[2]: continue siteUrl = aEntry[0] sTitle = aEntry[2].decode("utf8") sTitle = cUtil().unescape(sTitle).encode("utf8") sTitle = sTitle.replace("مشاهدة","").replace("مترجمة","").replace("مترجم","").replace("فيلم","").replace("اون لاين","").replace("WEB-DL","").replace("BRRip","").replace("720p","").replace("HD-TC","").replace("HDRip","").replace("HD-CAM","").replace("DVDRip","").replace("BluRay","").replace("1080p","").replace("WEBRip","").replace("WEB-dl","").replace("4K","").replace("All","").replace("BDRip","").replace("HDCAM","").replace("HDTC","").replace("HDTV","").replace("HD","").replace("720","").replace("HDCam","").replace("Full HD","").replace("1080","").replace("HC","").replace("Web-dl","") sThumbnail = aEntry[1] sInfo = '' oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl',siteUrl) oOutputParameterHandler.addParameter('sMovieTitle', sTitle) oOutputParameterHandler.addParameter('sThumbnail', sThumbnail) oGui.addMovie(SITE_IDENTIFIER, 'showHosters', sTitle, '', sThumbnail, sInfo, oOutputParameterHandler) progress_.VSclose(progress_) sNextPage = __checkForNextPage(sHtmlContent) if (sNextPage != False): oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sNextPage) oGui.addDir(SITE_IDENTIFIER, 'showMoviesearch', '[COLOR teal]Next >>>[/COLOR]', 'next.png', oOutputParameterHandler) if not sSearch: oGui.setEndOfDirectory()
def showMovies(sSearch=''): oGui = cGui() if sSearch: sUrl = sSearch else: oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') oRequestHandler = cRequestHandler(sUrl) sHtmlContent = oRequestHandler.request() #Meilleure resolution sthumbnail sHtmlContent = sHtmlContent.replace('119x125', '125x160') #fh = open('c:\\test.txt', "w") #fh.write(sHtmlContent) #fh.close() #Magouille pour virer les 3 ligne en trop en cas de recherche if sSearch: sHtmlContent = sHtmlContent.replace('quelle-est-votre-serie-preferee', '<>') sHtmlContent = sHtmlContent.replace('top-series-du-moment', '<>') sHtmlContent = sHtmlContent.replace( 'listes-des-series-annulees-et-renouvelees', '<>') oParser = cParser() sPattern = '<div class="moviefilm"> *<a href=".+?"> *<img src="([^<>"]+)".+?\/><\/a><div class="movief"><a href="([^<]+)">([^<]+)<\/a><\/div>' aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == True): total = len(aResult[1]) dialog = cConfig().createDialog(SITE_NAME) for aEntry in aResult[1]: cConfig().updateDialog(dialog, total) if dialog.iscanceled(): break #Si recherche et trop de resultat, on nettoye if sSearch and total > 2: if cUtil().CheckOccurence(sSearch.replace(URL_SEARCH[0], ''), aEntry[2]) == 0: continue sTitle = aEntry[2] sTitle = sTitle.replace(' [Streaming]', '') sTitle = sTitle.replace(' [Telecharger]', '') sTitle = sTitle.replace(' [Complète]', '') sTitle = sTitle.replace(' [Complete]', '') sDisplayTitle = cUtil().DecoTitle(sTitle) oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', str(aEntry[1])) oOutputParameterHandler.addParameter('sMovieTitle', sTitle) oOutputParameterHandler.addParameter('sThumbnail', str(aEntry[0])) if '-filmographie-streaming' in aEntry[1]: pass elif 'series' in sUrl or re.match('.+?saison [0-9]+', sTitle, re.IGNORECASE): oGui.addTV(SITE_IDENTIFIER, 'showSeries', sDisplayTitle, '', aEntry[0], '', oOutputParameterHandler) else: oGui.addMovie(SITE_IDENTIFIER, 'showHosters', sDisplayTitle, '', aEntry[0], '', oOutputParameterHandler) cConfig().finishDialog(dialog) sNextPage = __checkForNextPage(sHtmlContent) if (sNextPage != False): oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sNextPage) oGui.addDir(SITE_IDENTIFIER, 'showMovies', '[COLOR teal]Next >>>[/COLOR]', 'next.png', oOutputParameterHandler) if not sSearch: oGui.setEndOfDirectory()
def showHosters(): oGui = cGui() oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') sMovieTitle = oInputParameterHandler.getValue('sMovieTitle') sThumb = oInputParameterHandler.getValue('sThumb') oRequestHandler = cRequestHandler(sUrl) sHtmlContent = oRequestHandler.request() oParser = cParser() #On separe liens vostfr - vf sPattern = '<div class="VOSTFR-tab">(.+?)<div class="VF-tab">' sPattern2 = '<div class="VF-tab">(.+?)<div id="fsElementsContainer">' aResult = oParser.parse(sHtmlContent, sPattern) aResult2 = oParser.parse(sHtmlContent, sPattern2) #pour total3 si pas liens vostfr total = 0 #on vire le - du titre sMovieTitle = sMovieTitle.replace(' - ', '') #Liens VOSTFR if (aResult[0] == True): sPattern = '<a href="([^"]+)".+?<\/i> EPS ([0-9]+)' aResult = oParser.parse(aResult[1][0], sPattern) if (aResult[0] == True): total = len(aResult[1]) dialog = cConfig().createDialog(SITE_NAME) oGui.addText(SITE_IDENTIFIER, '[COLOR red]VOSTFR[/COLOR]') for aEntry in aResult[1]: cConfig().updateDialog(dialog, total) if dialog.iscanceled(): break sHosterUrl = str(aEntry[0]) sMovieTitle2 = sMovieTitle + 'episode ' + aEntry[1] sDisplayTitle = cUtil().DecoTitle(sMovieTitle2) oHoster = cHosterGui().checkHoster(sHosterUrl) if (oHoster != False): oHoster.setDisplayName(sDisplayTitle) oHoster.setFileName(sMovieTitle2) cHosterGui().showHoster(oGui, oHoster, sHosterUrl, sThumb) #Liens VF if (aResult2[0] == True): sPattern = '<a href="([^"]+)".+?<\/i> EPS ([0-9]+)' aResult = oParser.parse(aResult2[1][0], sPattern) if (aResult[0] == True): total2 = len(aResult[1]) #update total dialog si liens vostfr puis vf total3 = total + total2 dialog = cConfig().createDialog(SITE_NAME) oGui.addText(SITE_IDENTIFIER, '[COLOR red]VF[/COLOR]') for aEntry in aResult[1]: cConfig().updateDialog(dialog, total3) if dialog.iscanceled(): break sHosterUrl = str(aEntry[0]) sMovieTitle2 = sMovieTitle + 'episode ' + aEntry[1] sDisplayTitle = cUtil().DecoTitle(sMovieTitle2) oHoster = cHosterGui().checkHoster(sHosterUrl) if (oHoster != False): oHoster.setDisplayName(sDisplayTitle) oHoster.setFileName(sMovieTitle2) cHosterGui().showHoster(oGui, oHoster, sHosterUrl, sThumb) cConfig().finishDialog(dialog) oGui.setEndOfDirectory()
def showLists(): oInputParameterHandler = cInputParameterHandler() iPage = 1 if (oInputParameterHandler.exist('page')): iPage = oInputParameterHandler.getValue('page') sUrl = oInputParameterHandler.getValue('siteUrl') result = grab.getUrl('list/' + sUrl, iPage, '') oGui = cGui() total = len(result) if (total > 0): for i in result['items']: sId, sType, sThumbnail, sFanart, sVote, sDesc = i['id'], i[ 'media_type'], i['poster_path'], i['backdrop_path'], i[ 'vote_average'], i['overview'] if sThumbnail: sThumbnail = POSTER_URL + sThumbnail else: sThumbnail = '' if sFanart: sFanart = FANART_URL + sFanart else: sFanart = '' sTitle = "None" if 'name' in i: sTitle = i['name'].encode("utf-8") if 'title' in i: sTitle = i['title'].encode("utf-8") sDisplayTitle = "%s (%s)" % (sTitle, sVote) oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', 'http://tmdb/%s' % sId) oOutputParameterHandler.addParameter('sMovieTitle', str(sTitle)) oOutputParameterHandler.addParameter('sThumbnail', str(sThumbnail)) oOutputParameterHandler.addParameter('sId', str(sId)) oOutputParameterHandler.addParameter('sFanart', str(sFanart)) oOutputParameterHandler.addParameter('sTmdbId', sId) #oOutputParameterHandler.addParameter('searchtext', sTitle) oOutputParameterHandler.addParameter('searchtext', cUtil().CleanName(sTitle)) #oGui.addTVDB(SITE_IDENTIFIER, 'showSeriesSaison', sTitle, 'series.png', sThumbnail, sFanart, oOutputParameterHandler) cGui.CONTENT = "movies" oGuiElement = cGuiElement() oGuiElement.setTmdbId(sId) oGuiElement.setSiteName('globalSearch') oGuiElement.setFunction('showSearch') oGuiElement.setTitle(sDisplayTitle) oGuiElement.setFileName(sTitle) oGuiElement.setIcon('series.png') if sType == 'movie': oGuiElement.setMeta(1) oGuiElement.setCat(1) elif sType == 'tv': oGuiElement.setMeta(2) oGuiElement.setCat(2) oGuiElement.setThumbnail(sThumbnail) oGuiElement.setPoster(sThumbnail) oGuiElement.setFanart(sFanart) oGuiElement.setDescription(sDesc) oGui.addFolder(oGuiElement, oOutputParameterHandler) oGui.setEndOfDirectory(view)
def showMovies(sSearch = ''): oGui = cGui() oParser = cParser() if sSearch: sUrl = sSearch else: oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') oRequestHandler = cRequestHandler(sUrl) sHtmlContent = oRequestHandler.request() sPattern = 'film-ripz".+?href=".+?">([^<]+)<.+?film-verz".+?href.+?>([^<]+)<.+?href="([^"]+)".+?src="([^"]+)".+?class="short-titl.+?>([^<]+)<' 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 #Si recherche et trop de resultat, on nettoye if sSearch and total > 2: if cUtil().CheckOccurence(sUrl.replace(URL_SEARCH_MOVIE[0], ''), aEntry[4]) == 0: continue sQual = aEntry[0] sLang = aEntry[1] sUrl2 = URL_MAIN[:-1] + aEntry[2] sThumb = re.sub('http.+?/img/french-stream.com.php\?src=', '', aEntry[3]) sThumb = sThumb.split('&')[0] if sThumb.startswith ('/'): sThumb = URL_MAIN[:-1] + sThumb sTitle = aEntry[4].replace('en streaming', '').replace('Film ', '') sDisplayTitle = ('%s [%s] (%s)') % (sTitle, sQual, sLang) oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sUrl2) oOutputParameterHandler.addParameter('sMovieTitle', sTitle) oOutputParameterHandler.addParameter('sThumb', sThumb) oGui.addMovie(SITE_IDENTIFIER, 'showHosters', sDisplayTitle, '', sThumb, '', oOutputParameterHandler) progress_.VSclose(progress_) 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()