#-*- coding: utf-8 -*- #Vstream https://github.com/Kodi-vStream/venom-xbmc-addons # plus vraiment le meme site from resources.lib.gui.hoster import cHosterGui from resources.lib.gui.gui import cGui from resources.lib.handler.inputParameterHandler import cInputParameterHandler from resources.lib.handler.outputParameterHandler import cOutputParameterHandler from resources.lib.handler.requestHandler import cRequestHandler from resources.lib.parser import cParser from resources.lib.comaddon import progress, dialog, VSlog, xbmc from resources.lib.util import Quote import re, requests UA = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36' SITE_IDENTIFIER = 'topreplay' SITE_NAME = 'TopReplay' SITE_DESC = 'Replay TV' URL_MAIN = 'https://www.topreplay.video' URL_SEARCH = (URL_MAIN + '/?s=', 'showMovies') URL_SEARCH_MISC = (URL_MAIN + '/?s=', 'showMovies') FUNCTION_SEARCH = 'showMovies' REPLAYTV_GENRES = (True, 'showGenre') REPLAYTV_NEWS = (URL_MAIN , 'showMovies') REPLAYTV_REPLAYTV = ('http://' , 'load') def load(): oGui = cGui() oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', 'http://venom/') oGui.addDir(SITE_IDENTIFIER, 'showSearch', 'Recherche', 'search.png', oOutputParameterHandler) oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', REPLAYTV_NEWS[0]) oGui.addDir(SITE_IDENTIFIER, REPLAYTV_NEWS[1], 'Nouveautés', 'replay.png', oOutputParameterHandler) oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', REPLAYTV_GENRES[0]) oGui.addDir(SITE_IDENTIFIER, REPLAYTV_GENRES[1], 'Genres', 'replay.png', oOutputParameterHandler) oGui.setEndOfDirectory() def showSearch(): oGui = cGui() sSearchText = oGui.showKeyBoard() if (sSearchText != False): sUrl = URL_SEARCH[0] + sSearchText showMovies(sUrl) oGui.setEndOfDirectory() return def showGenre(): oGui = cGui() oParser = cParser() oRequestHandler = cRequestHandler(URL_MAIN) sHtmlContent = oRequestHandler.request() reducesHtmlContent = oParser.abParse(sHtmlContent, 'class="main-menu menu bsm-pure clearfix">','') sPattern = '([^<]+)<\/a>' aResult = oParser.parse(reducesHtmlContent, 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] if 'Contactez' in sTitle: continue sUrl = aEntry[0] oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sUrl) oGui.addDir(SITE_IDENTIFIER, 'showMovies', sTitle , 'replay.png', oOutputParameterHandler) progress_.VSclose(progress_) 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 = 'data-src="([^"]+)".+?class="title"> *([^<]+)<\/a>' aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == False): oGui.addText(SITE_IDENTIFIER) if (aResult[0] == True): for aEntry in aResult[1]: sThumb = aEntry[0] sUrl = aEntry[1] sTitle = aEntry[2] if 'Générateur compte' in sTitle: continue oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sUrl) oOutputParameterHandler.addParameter('sMovieTitle', sTitle) oOutputParameterHandler.addParameter('sThumb', sThumb) oGui.addMisc(SITE_IDENTIFIER, 'showLinks', sTitle, 'replay.png', sThumb, '', oOutputParameterHandler) sNextPage = __checkForNextPage(sHtmlContent) if (sNextPage != False): oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sNextPage) number = re.search('/page/([0-9]+)', sNextPage).group(1) oGui.addNext(SITE_IDENTIFIER, 'showMovies', '[COLOR teal]Page ' + number + ' >>>[/COLOR]', oOutputParameterHandler) if not sSearch: oGui.setEndOfDirectory() def __checkForNextPage(sHtmlContent): oParser = cParser() sPattern = '([^<]+)' aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == False): oGui.addText(SITE_IDENTIFIER) if (aResult[0] == True): for aEntry in aResult[1]: sHosterUrl = aEntry[0] sTitle = sMovieTitle + ' ' + aEntry[1] oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sHosterUrl) oOutputParameterHandler.addParameter('sMovieTitle', sTitle) oOutputParameterHandler.addParameter('sThumb', sThumb) oGui.addMisc(SITE_IDENTIFIER, 'showHosters', sTitle, 'replay.png', sThumb, '', oOutputParameterHandler) oGui.setEndOfDirectory() def showHosters(): oGui = cGui() oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') sMovieTitle = oInputParameterHandler.getValue('sMovieTitle') sThumb = oInputParameterHandler.getValue('sThumb') if 'mon-tele' in sUrl: dialog().VSinfo('Décodage en cours', "Patientez", 5) s = requests.Session() response = s.get(sUrl, headers={'User-Agent':UA}) sHtmlContent = str(response.content) cookie_string = "; ".join([str(x)+"="+str(y) for x,y in s.cookies.items()]) oParser = cParser() sPattern = '