# -*- coding: utf-8 -*- # vStream https://github.com/Kodi-vStream/venom-xbmc-addons import re import base64 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 #, VSlog # copie du site http://www.kaydo.ws/ # copie du site https://www.hds.to/ SITE_IDENTIFIER = 'kaydo_ws' SITE_NAME = 'Kaydo (hdss.to)' SITE_DESC = 'Site de streaming en HD' URL_MAIN = 'https://hdss.to/' MOVIE_MOVIE = (URL_MAIN + 'films-z/', 'showMovies') MOVIE_NEWS = (URL_MAIN + 'films-z/', 'showMovies') MOVIE_COMMENTS = (URL_MAIN + 'populaires/', 'showMovies') MOVIE_NOTES = (URL_MAIN + 'mieux-notes/', 'showMovies') MOVIE_GENRES = (True, 'showMovieGenres') MOVIE_LIST = (True, 'showAlpha') SERIE_SERIES = (URL_MAIN + 'tv-series-z/', 'showMovies') SERIE_NEWS = (URL_MAIN + 'tv-series-z/', 'showMovies') URL_SEARCH = (URL_MAIN + '?s=', 'showMovies') URL_SEARCH_MOVIES = (URL_SEARCH[0], 'showMovies') URL_SEARCH_SERIES = (URL_SEARCH[0], 'showMovies') FUNCTION_SEARCH = 'sHowResultSearch' UA = 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:79.0) Gecko/20100101 Firefox/79.0' def Decode(chain): try: chain = 'aHR' + chain chain = 'M'.join(chain.split('7A4c1Y9T8c')) chain = 'V'.join(chain.split('8A5d1YX84A428s')) chain = ''.join(chain.split('$')) return base64.b64decode(chain) except: return chain 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', MOVIE_NEWS[0]) oGui.addDir(SITE_IDENTIFIER, MOVIE_NEWS[1], 'Films (Derniers ajouts)', 'news.png', oOutputParameterHandler) oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', MOVIE_COMMENTS[0]) oGui.addDir(SITE_IDENTIFIER, MOVIE_COMMENTS[1], 'Films (Les plus commentés)', 'comments.png', oOutputParameterHandler) oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', MOVIE_NOTES[0]) oGui.addDir(SITE_IDENTIFIER, MOVIE_NOTES[1], 'Films (Les mieux notés)', 'notes.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_LIST[0]) oGui.addDir(SITE_IDENTIFIER, MOVIE_LIST[1], 'Films (Par lettre)', 'az.png', oOutputParameterHandler) oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', SERIE_NEWS[0]) oGui.addDir(SITE_IDENTIFIER, SERIE_NEWS[1], 'Séries (Derniers ajouts)', 'news.png', oOutputParameterHandler) oGui.setEndOfDirectory() def showAlpha(): oGui = cGui() liste = [] liste.append(['#', URL_MAIN + 'letters/0-9/']) liste.append(['A', URL_MAIN + 'letters/a/']) liste.append(['B', URL_MAIN + 'letters/b/']) liste.append(['C', URL_MAIN + 'letters/c/']) liste.append(['D', URL_MAIN + 'letters/d/']) liste.append(['E', URL_MAIN + 'letters/e/']) liste.append(['F', URL_MAIN + 'letters/f/']) liste.append(['G', URL_MAIN + 'letters/g/']) liste.append(['H', URL_MAIN + 'letters/h/']) liste.append(['I', URL_MAIN + 'letters/i/']) liste.append(['J', URL_MAIN + 'letters/j/']) liste.append(['K', URL_MAIN + 'letters/k/']) liste.append(['L', URL_MAIN + 'letters/l/']) liste.append(['M', URL_MAIN + 'letters/m/']) liste.append(['N', URL_MAIN + 'letters/n/']) liste.append(['O', URL_MAIN + 'letters/o/']) liste.append(['P', URL_MAIN + 'letters/p/']) liste.append(['Q', URL_MAIN + 'letters/q/']) liste.append(['R', URL_MAIN + 'letters/r/']) liste.append(['S', URL_MAIN + 'letters/s/']) liste.append(['T', URL_MAIN + 'letters/t/']) liste.append(['U', URL_MAIN + 'letters/u/']) liste.append(['V', URL_MAIN + 'letters/v/']) liste.append(['W', URL_MAIN + 'letters/w/']) liste.append(['X', URL_MAIN + 'letters/x/']) liste.append(['Y', URL_MAIN + 'letters/y/']) liste.append(['Z', URL_MAIN + 'letters/z/']) for sTitle, sUrl in liste: oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sUrl) oGui.addDir(SITE_IDENTIFIER, 'showMovies', 'Lettre [COLOR coral]' + sTitle + '[/COLOR]', 'listes.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 showMovieGenres(): oGui = cGui() liste = [] liste.append(['Action', URL_MAIN + 'action/']) liste.append(['Animation', URL_MAIN + 'animation/']) liste.append(['Aventure', URL_MAIN + 'aventure/']) liste.append(['Comédie', URL_MAIN + 'comedie/']) liste.append(['Crime',URL_MAIN + 'crime/']) liste.append(['Documentaire',URL_MAIN + 'documentaire/']) liste.append(['Drame', URL_MAIN + 'drame/']) liste.append(['Etranger', URL_MAIN + 'etranger/']) liste.append(['Fantastique', URL_MAIN + 'fantastique/']) liste.append(['Famille', URL_MAIN + 'familial/']) liste.append(['Guerre', URL_MAIN + 'guerre/' ]) liste.append(['Historique', URL_MAIN + 'histoire/']) liste.append(['Horreur',URL_MAIN + 'horreur/']) liste.append(['Musical', URL_MAIN + 'musique/']) liste.append(['Mystere',URL_MAIN + 'mystere/']) liste.append(['Romance', URL_MAIN + 'romance/']) liste.append(['Science Fiction', URL_MAIN + 'science-fiction/']) liste.append(['Telefilm', URL_MAIN + 'telefilm/']) 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 showMovies(sSearch=''): oGui = cGui() if sSearch: sUrl = sSearch.replace(' ', '+') #sPattern = 'Title">Search<.+?([^<]+).+?Year">([^<]+).+?Qlty">([^<]+).+?Description">

([^<]+)' else: oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') if URL_MAIN + 'letters/' in sUrl: sPattern = '.+?href="([^"]+).+?src="([^"]+).+?class="MvTbTtl.+?([^<]*).+?([^<]*).+?Qlty">([^<]+).+?([^<]*)' else: sPattern = 'class="TPost C">.+?href="([^"]+)".+?img src="([^"]+)".+?Title">([^<]+).+?Year">([^<]+).+?Qlty">([^<]+).+?Description">

([^<]+)' oRequestHandler = cRequestHandler(sUrl) sHtmlContent = oRequestHandler.request() oParser = cParser() # réécriture pour prendre les séries dans le menu des genres # sHtmlContent = sHtmlContent.replace('TV>>[/COLOR]', oOutputParameterHandler) oGui.setEndOfDirectory() def __checkForNextPage(sHtmlContent): oParser = cParser() sPattern = '