# -*- coding: utf-8 -*- # vStream https://github.com/Kodi-vStream/venom-xbmc-addons # Arias800 import json 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.parser import cParser from resources.lib.comaddon import progress#, VSlog SITE_IDENTIFIER = 'neko_sama' SITE_NAME = 'Neko Sama' SITE_DESC = 'anime en streaming' URL_MAIN = 'https://www.neko-sama.fr/' URL_SEARCH = (URL_MAIN + 'animes-search.json', 'showSearchResult') URL_SEARCH_SERIES = (URL_SEARCH[0], 'showSearchResult') FUNCTION_SEARCH = 'showSearchResult' ANIM_ANIMS = ('http://', 'load') ANIM_POPULAR = (URL_MAIN + 'anime/', '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', ANIM_POPULAR[0]) oGui.addDir(SITE_IDENTIFIER, ANIM_POPULAR[1], 'Animés (Populaire)', 'animes.png', oOutputParameterHandler) oGui.setEndOfDirectory() def showSearch(): oGui = cGui() sSearchText = oGui.showKeyBoard() if (sSearchText != False): showSearchResult(sSearchText) 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 Dramatique', URL_MAIN + 'comedie-dramatique/']) liste.append(['Comédie Musicale', URL_MAIN + 'comedie-musicale/']) liste.append(['Documentaire', URL_MAIN + 'documentaire/']) liste.append(['Drame', URL_MAIN + 'drame/']) 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(['Musical', URL_MAIN + 'musical/']) liste.append(['Policier', URL_MAIN + 'policier/']) liste.append(['Péplum', URL_MAIN + 'peplum/']) liste.append(['Romance', URL_MAIN + 'romance/']) liste.append(['Science Fiction', URL_MAIN + 'science-fiction/']) liste.append(['Spectacle', URL_MAIN + 'spectacle/']) liste.append(['Thriller', URL_MAIN + 'thriller/']) liste.append(['Western', URL_MAIN + 'western/']) liste.append(['Divers', URL_MAIN + 'divers/']) for sTitle, sUrl in liste: oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sUrl) oGui.addDir(SITE_IDENTIFIER, 'showMovies', sTitle, 'genres.png', oOutputParameterHandler) oGui.setEndOfDirectory() def parseJson(json_object, sSearch): # Parse le json pour recuperer les elements qui contiennent sSearch dans leurs titre Title = [] Url = [] Thumb = [] for dicts in json_object: if sSearch in dicts['title'].lower() or sSearch in dicts['title_english'].lower() or sSearch in dicts['others'].lower(): Title.append(dicts['title']) Url.append(dicts['url']) Thumb.append(dicts['url_image']) return Title, Url, Thumb def showSearchResult(sSearch): oGui = cGui() oRequestHandler = cRequestHandler(URL_SEARCH[0]) sSearch = sSearch.lower() data = json.loads(oRequestHandler.request()) Title, Url, Thumb = parseJson(data, sSearch) total = len(Title) progress_ = progress().VScreate(SITE_NAME) for title, url, thumb in zip(Title, Url, Thumb): progress_.VSupdate(progress_, total) if progress_.iscanceled(): break sTitle = title sUrl2 = URL_MAIN + url sThumb = thumb sDesc = '' oOutputParameterHandler = cOutputParameterHandler() oOutputParameterHandler.addParameter('siteUrl', sUrl2) oOutputParameterHandler.addParameter('sMovieTitle', sTitle) oOutputParameterHandler.addParameter('sThumb', sThumb) oGui.addAnime(SITE_IDENTIFIER, 'ShowSerieSaisonEpisodes', sTitle, '', sThumb, sDesc, oOutputParameterHandler) progress_.VSclose(progress_) if not sSearch: oGui.setEndOfDirectory() def showMovies(): oGui = cGui() oParser = cParser() oInputParameterHandler = cInputParameterHandler() sUrl = oInputParameterHandler.getValue('siteUrl') oRequestHandler = cRequestHandler(sUrl) sHtmlContent = oRequestHandler.request() sPattern = '
.+?([^>>[/COLOR]', oOutputParameterHandler) oGui.setEndOfDirectory() def __checkForNextPage(sHtmlContent): oParser = cParser() sPattern = '\s*