# -*- coding: utf-8 -*- # vStream https://github.com/Kodi-vStream/venom-xbmc-addons import re 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.util import cUtil from resources.lib.parser import cParser from resources.lib.comaddon import progress SITE_IDENTIFIER = 'streamdivx' SITE_NAME = 'StreamDivx' SITE_DESC = 'Regarder, Voir Films En Streaming VF 100% Gratuit.' URL_MAIN = 'https://wvvw.streamdivx.net/' # ou 'https://www.voustreaming.com/' < recherche hs FUNCTION_SEARCH = 'showMovies' URL_SEARCH = (URL_MAIN + 'tags/', FUNCTION_SEARCH) URL_SEARCH_MOVIES = (URL_SEARCH[0], FUNCTION_SEARCH) MOVIE_MOVIE = (True, 'load') MOVIE_NEWS = (URL_MAIN, 'showMovies') MOVIE_GENRES = (True, 'showGenres') MOVIE_ANNEES = (True, 'showMovieYears') def load(): oGui = cGui() oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', URL_SEARCH[0]) oGui.addDir(SITE_IDENTIFIER, 'showSearch', 'Recherche', 'search.png', oOutputParameterHandler) oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', MOVIE_NEWS[0]) oGui.addDir(SITE_IDENTIFIER, MOVIE_NEWS[1], 'Films (Derniers ajouts)', 'news.png', oOutputParameterHandler) oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', MOVIE_GENRES[0]) oGui.addDir(SITE_IDENTIFIER, MOVIE_GENRES[1], 'Films (Genres)', 'genres.png', oOutputParameterHandler) oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', MOVIE_ANNEES[0]) oGui.addDir(SITE_IDENTIFIER, MOVIE_ANNEES[1], 'Films (Par années)', 'annees.png', oOutputParameterHandler) oGui.setEndOfDirectory() def showSearch(): oGui = cGui() sSearchText = oGui.showKeyBoard() if (sSearchText != False): sSearchText = sSearchText.replace(' ', '+') sUrl = URL_SEARCH[0] + sSearchText showMovies(sUrl) oGui.setEndOfDirectory() return def showGenres(): oGui = cGui() liste = [] liste.append(['Action', URL_MAIN + 'action/']) liste.append(['Animation', URL_MAIN + 'animation/']) liste.append(['Arts Martiaux', URL_MAIN + 'arts-martiaux/']) liste.append(['Aventure', URL_MAIN + 'aventure/']) liste.append(['Biopic', URL_MAIN + 'biopic/']) liste.append(['Comédie', URL_MAIN + 'comedie/']) liste.append(['Comédie Musicale', URL_MAIN + 'comedie-musicale/']) liste.append(['Drame', URL_MAIN + 'drame/']) liste.append(['Documentaire', URL_MAIN + 'documentaire/']) liste.append(['Epouvante Horreur', URL_MAIN + 'epouvante-horreur/']) liste.append(['Erotique', URL_MAIN + 'erotique/']) liste.append(['Espionnage', URL_MAIN + 'espionnage//']) liste.append(['Famille', URL_MAIN + 'famille/']) liste.append(['Fantastique', URL_MAIN + 'fantastique/']) liste.append(['Guerre', URL_MAIN + 'guerre/']) liste.append(['Historique', URL_MAIN + 'historique/']) liste.append(['Judiciaire', URL_MAIN + 'judiciaire/']) liste.append(['Musical', URL_MAIN + 'musical/']) liste.append(['Policier', URL_MAIN + 'policier/']) liste.append(['Romance', URL_MAIN + 'romance/']) liste.append(['Science Fiction', URL_MAIN + 'science-fiction/']) liste.append(['Thriller', URL_MAIN + 'thriller/']) liste.append(['Western', URL_MAIN + 'western/']) for sTitle, sUrl in liste: oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sUrl) oGui.addDir(SITE_IDENTIFIER, 'showMovies', sTitle, 'genres.png', oOutputParameterHandler) oGui.setEndOfDirectory() def showMovieYears(): oGui = cGui() for i in reversed(range(1985, 2021)): Year = str(i) oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', URL_MAIN + 'tags/' + Year + '/') oGui.addDir(SITE_IDENTIFIER, 'showMovies', Year, 'annees.png', oOutputParameterHandler) oGui.setEndOfDirectory() def showMovies(sSearch=''): oGui = cGui() oParser = cParser() if sSearch: sUrl = sSearch oRequest = cRequestHandler(sUrl) sHtmlContent = oRequest.request() else: oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') oRequestHandler = cRequestHandler(sUrl) sHtmlContent = oRequestHandler.request() if '

film du moment

' in sHtmlContent: sStart = '
films par Genres' sHtmlContent = oParser.abParse(sHtmlContent, sStart, sEnd) else: sHtmlContent = sHtmlContent sPattern = '
.+?href="([^"]+)".+?src="([^"]+)" alt="([^"]+)".+?class="quality ">([^<]+).+?

(.+?)<\/p>' aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == False): oGui.addText(SITE_IDENTIFIER) if (aResult[0] == True): total = len(aResult[1]) progress_ = progress().VScreate(SITE_NAME) for aEntry in aResult[1]: progress_.VSupdate(progress_, total) if progress_.iscanceled(): break sUrl = aEntry[0] sThumb = aEntry[1] sTitle = aEntry[2] # .decode("unicode_escape").encode("latin-1") sQual = aEntry[3] sDesc = aEntry[4] sDisplayTitle = ('%s [%s]') % (sTitle, sQual) # Nettoie le titre, la premiere phrase est souvent doublée sDesc = sDesc.replace('SYNOPSIS ET DÉTAILS', '').lstrip() if len (sDesc) > 180: idx = sDesc.find(sDesc[:15], 30, 180) if idx > 0: sDesc = sDesc[idx:] oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sUrl) oOutputParameterHandler.addParameter('sMovieTitle', sTitle) oOutputParameterHandler.addParameter('sThumb', sThumb) 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) 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): oParser = cParser() sPattern = 'Last page<\/a>' aResult = oParser.parse(sHtmlContent, sPattern) if (aResult[0] == True): return aResult[1][0] return False def showHosters(): oGui = cGui() oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') sMovieTitle = oInputParameterHandler.getValue('sMovieTitle') sThumb = oInputParameterHandler.getValue('sThumb') # sPost = oInputParameterHandler.getValue('sPost') oRequestHandler = cRequestHandler(sUrl) # oRequestHandler.setRequestType(1) # oRequestHandler.addParameters('levideo', sPost) sHtmlContent = oRequestHandler.request() oParser = cParser() sPattern = '