# -*- coding: utf-8 -*- # vStream https://github.com/Kodi-vStream/venom-xbmc-addons import re import xbmc 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 from resources.lib.util import cUtil SITE_IDENTIFIER = 'serie_streaming_watch' SITE_NAME = 'Serie-Streaming-Watch' SITE_DESC = 'Séries & Animés en Streaming' URL_MAIN = 'https://ww1.series-en-streaming.xyz/' SERIE_SERIES = ('http://', 'load') SERIE_NEWS = (URL_MAIN + 'category/series/?orderby=date', 'showMovies') SERIE_GENRES = (True, 'showGenres') URL_SEARCH = (URL_MAIN + '?s=', 'showMovies') URL_SEARCH_SERIES = (URL_MAIN + '?s=', 'showMovies') FUNCTION_SEARCH = 'showMovies' 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', SERIE_NEWS[0]) oGui.addDir(SITE_IDENTIFIER, SERIE_NEWS[1], 'Séries (Derniers ajouts)', 'news.png', oOutputParameterHandler) oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', SERIE_GENRES[0]) oGui.addDir(SITE_IDENTIFIER, SERIE_GENRES[1], 'Séries (Genres)', 'genres.png', oOutputParameterHandler) oGui.setEndOfDirectory() def showSearch(): oGui = cGui() sSearchText = oGui.showKeyBoard() if (sSearchText != False): showMovies(URL_SEARCH[0] + sSearchText) oGui.setEndOfDirectory() return def showGenres(): oGui = cGui() sUrl = URL_MAIN liste = [] liste.append(['Action', sUrl + 'category/series/action/']) liste.append(['Animation', sUrl + 'category/series/animation/']) liste.append(['Arts Martiaux', sUrl + 'category/series/arts-martiaux/']) liste.append(['Aventure', sUrl + 'category/series/aventure/']) liste.append(['Biopic', sUrl + 'category/series/biopic/']) liste.append(['Classique', sUrl + 'category/series/classique/']) liste.append(['Comédie', sUrl + 'category/series/comedie/']) liste.append(['Comédie dramatique', sUrl + 'category/series/comedie-dramatique/']) liste.append(['Comédie musicale', sUrl + 'category/series/comedie-musicale/']) liste.append(['Dessin animés', sUrl + 'category/series/dessin-anime/']) liste.append(['Divers', sUrl + 'category/series/divers/']) liste.append(['Documentaire', sUrl + 'category/series/documentaire/']) liste.append(['Drama', sUrl + 'category/series/drama/']) liste.append(['Drame', sUrl + 'category/series/drame/']) liste.append(['Epouvante-Horreur', sUrl + 'category/series/epouvante-horreur/']) liste.append(['Espionnage', sUrl + 'category/series/espionnage/']) liste.append(['Famille', sUrl + 'category/series/famille/']) liste.append(['Fantastique', sUrl + 'category/series/fantastique/']) liste.append(['Guerre', sUrl + 'category/series/guerre/']) liste.append(['Historique', sUrl + 'category/series/historique/']) liste.append(['Judiciaire', sUrl + 'category/series/judiciaire/']) liste.append(['Médical', sUrl + 'category/series/medical/']) liste.append(['Musical', sUrl + 'category/series/musical/']) liste.append(['Péplum', sUrl + 'category/series/peplum/']) liste.append(['Policier', sUrl + 'category/series/policier/']) liste.append(['Romance', sUrl + 'category/series/romance/']) liste.append(['Science-fiction', sUrl + 'category/series/science-fiction/']) liste.append(['Soap', sUrl + 'category/series/soap/']) liste.append(['Thriller', sUrl + 'category/series/thriller/']) liste.append(['Webséries', sUrl + 'category/series/webserie/']) liste.append(['Western', sUrl + 'category/series/western/']) for sTitle, sUrl in liste: oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sUrl) oGui.addDir(SITE_IDENTIFIER, 'showMovies', sTitle, 'genres.png', oOutputParameterHandler) 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 = '
3: if cUtil().CheckOccurence(sSearch.replace(URL_SEARCH[0], ''), sTitle) == 0: continue oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sUrl) oOutputParameterHandler.addParameter('sMovieTitle', sTitle) oOutputParameterHandler.addParameter('sThumb', sThumb) oGui.addTV(SITE_IDENTIFIER, 'ShowEpisode', sTitle, '', sThumb, '', oOutputParameterHandler) progress_.VSclose(progress_) if not sSearch: 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) oGui.setEndOfDirectory() def __checkForNextPage(sHtmlContent): sPattern = 'Suivante' oParser = cParser() aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == True): return aResult[1][0] return False def ShowEpisode(): oGui = cGui() oParser = cParser() oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') sMovieTitle = oInputParameterHandler.getValue('sMovieTitle') sThumb = oInputParameterHandler.getValue('sThumb') oRequestHandler = cRequestHandler(sUrl) sHtmlContent = oRequestHandler.request() # récupération des Synopsis sDesc = '' try: sPattern = 'Synopsis :(.+?)

' aResult = oParser.parse(sHtmlContent, sPattern) if aResult[0]: sDesc = aResult[1][0] sDesc = sDesc.replace('\\', '').replace('…', '...') except: pass sPattern = '
([^<>]+)<\/span><\/a>' aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == True): for aEntry in aResult[1]: sUrl = aEntry[0] sTitle = sMovieTitle + ' episode ' + aEntry[1] oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sUrl) oOutputParameterHandler.addParameter('sMovieTitle', sTitle) oOutputParameterHandler.addParameter('sThumb', sThumb) oOutputParameterHandler.addParameter('sDesc', sDesc) oGui.addEpisode(SITE_IDENTIFIER, 'showLinks', sTitle, '', sThumb, sDesc, oOutputParameterHandler) oGui.setEndOfDirectory() def showLinks(): oGui = cGui() oParser = cParser() oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') sMovieTitle = oInputParameterHandler.getValue('sMovieTitle') sThumb = oInputParameterHandler.getValue('sThumb') sDesc = oInputParameterHandler.getValue('sDesc') oRequestHandler = cRequestHandler(sUrl) sHtmlContent = oRequestHandler.request() sPattern = '(.+?)|myLecteur">Lecteur (?:)*([a-z]+)(?:)* *:
"\']+?)["\']' aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == True): return aResult[1][0] # recherche d'un lien redirigé sPattern = '"\']+?)["\'] target=._blank.>' aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == True): return aResult[1][0] return ''