diff --git a/plugin.video.alfa/addon.xml b/plugin.video.alfa/addon.xml index ec030a61..73abc370 100755 --- a/plugin.video.alfa/addon.xml +++ b/plugin.video.alfa/addon.xml @@ -1,5 +1,5 @@ - + @@ -18,17 +18,16 @@ resources/media/themes/ss/4.jpg [B]Estos son los cambios para esta versión:[/B] - » dailymotion » ver-peliculas - » poseidonhd » cinedetodo - » wikiseries » uptobox - » allpeliculas » gounlimited - » pepecine » descargas2020 - » mejortorrent » mispelisyseries - » torrentlocura » torrentrapid - » tumejortorrent » tvsinpagar - » elitetorrent » netutv + [COLOR green][B]Canales agregados y arreglos[/B][/COLOR] + » clipwatching » vidup + » allcalidad » descargacineclasico + » mastorrent » tiotorrent + » animeshd » filebebo + » cuevana2 » Cuevana2español + » seriesverde » flashx ¤ arreglos internos - ¤ Agradecimientos a @angedam, @alaquepasa por colaborar con ésta versión. + + ¤ Agradecimientos a @angedam, @alaquepasa, @mrgaturus, @axlt2002 por colaborar con ésta versión. Navega con Kodi por páginas web para ver sus videos de manera fácil. diff --git a/plugin.video.alfa/channels/allcalidad.py b/plugin.video.alfa/channels/allcalidad.py index 3f1f56a7..8c607370 100755 --- a/plugin.video.alfa/channels/allcalidad.py +++ b/plugin.video.alfa/channels/allcalidad.py @@ -161,8 +161,8 @@ def findvideos(item): title = titulo, url = url )) - tmdb.set_infoLabels(itemlist, __modo_grafico__) itemlist = servertools.get_servers_itemlist(itemlist, lambda i: i.title % i.server.capitalize()) + tmdb.set_infoLabels(itemlist, __modo_grafico__) # Requerido para FilterTools itemlist = filtertools.get_links(itemlist, item, list_language) diff --git a/plugin.video.alfa/channels/animeshd.json b/plugin.video.alfa/channels/animeshd.json index 23b4e042..8aeb2a89 100755 --- a/plugin.video.alfa/channels/animeshd.json +++ b/plugin.video.alfa/channels/animeshd.json @@ -8,5 +8,38 @@ "banner": "https://s4.postimg.cc/lulxulmql/animeshd-banner.png", "categories": [ "anime" + ], + "settings": [ + { + "id": "include_in_global_search", + "type": "bool", + "label": "Incluir en busqueda global", + "default": false, + "enabled": false, + "visible": false + }, + { + "id": "filter_languages", + "type": "list", + "label": "Mostrar enlaces en idioma...", + "default": 0, + "enabled": true, + "visible": true, + "lvalues": [ + "No filtrar", + "LAT", + "CAST", + "VOSE" + ] + }, + { + "id": "comprueba_enlaces_num", + "type": "list", + "label": "Número de enlaces a verificar", + "default": 1, + "enabled": true, + "visible": "eq(-1,true)", + "lvalues": [ "5", "10", "15", "20" ] + } ] } diff --git a/plugin.video.alfa/channels/animeshd.py b/plugin.video.alfa/channels/animeshd.py index d1f5635a..8d343d3b 100644 --- a/plugin.video.alfa/channels/animeshd.py +++ b/plugin.video.alfa/channels/animeshd.py @@ -10,6 +10,8 @@ from channelselector import get_thumb from core import tmdb from core.item import Item from platformcode import logger, config +from channels import autoplay +from channels import filtertools tgenero = {"Comedia": "https://s7.postimg.cc/ne9g9zgwb/comedia.png", "Drama": "https://s16.postimg.cc/94sia332d/drama.png", @@ -31,42 +33,60 @@ tgenero = {"Comedia": "https://s7.postimg.cc/ne9g9zgwb/comedia.png", host = "http://www.animeshd.tv" -headers = [['User-Agent', 'Mozilla/50.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0'], - ['Referer', host]] +__comprueba_enlaces__ = config.get_setting('comprueba_enlaces', 'poseidonhd') +__comprueba_enlaces_num__ = config.get_setting('comprueba_enlaces_num', 'poseidonhd') + + +IDIOMAS = {'Castellano':'CAST','Latino': 'LAT', 'Subtitulado': 'VOSE'} +list_language = IDIOMAS.values() +list_quality = [] +list_servers = ['rapidvideo', 'openload', 'gvideo', 'streamango'] def mainlist(item): logger.info() + + autoplay.init(item.channel, list_servers, list_quality) + itemlist = [] - itemlist.append(item.clone(title="Ultimas", + + itemlist.append(item.clone(title="Castellano", action="lista", - thumbnail=get_thumb('last', auto=True), - fanart='https://s22.postimg.cc/cb7nmhwv5/ultimas.png', - url=host + '/ultimos' - )) + thumbnail=get_thumb('channels_spanish.png'), + fanart='https://s18.postimg.cc/fwvaeo6qh/todas.png', + url=host + '/castellano')) + + itemlist.append(item.clone(title="Latino", + action="lista", + thumbnail=get_thumb('channels_latino.png'), + fanart='https://s18.postimg.cc/fwvaeo6qh/todas.png', + url=host + '/latino')) itemlist.append(item.clone(title="Todas", action="lista", thumbnail=get_thumb('all', auto=True), fanart='https://s18.postimg.cc/fwvaeo6qh/todas.png', - url=host + '/buscar?t=todos&q=' - )) + url=host + '/buscar?t=todo&q=')) itemlist.append(item.clone(title="Generos", action="generos", url=host, thumbnail=get_thumb('genres', auto=True), - fanart='https://s3.postimg.cc/5s9jg2wtf/generos.png' - )) + fanart='https://s3.postimg.cc/5s9jg2wtf/generos.png')) itemlist.append(item.clone(title="Buscar", action="search", - url=host + '/buscar?t=todos&q=', + url=host + '/buscar?t=todo&q=', thumbnail=get_thumb('search', auto=True), fanart='https://s30.postimg.cc/pei7txpa9/buscar.png' )) + itemlist = filtertools.show_option(itemlist, item.channel, list_language, list_quality) + + autoplay.show_option(item.channel, itemlist) + + return itemlist @@ -98,21 +118,22 @@ def lista(item): title=title, url=url, thumbnail=thumbnail, - contentSerieName=title + contentSerieName=title, + context=filtertools.context(item, list_language, list_quality) )) # Paginacion next_page = scrapertools.find_single_match(data, - '
  • .*?<\/span><\/li>
  • .*?<\/a><\/li>') + '') next_page_url = scrapertools.decodeHtmlentities(next_page) if next_page_url != "": itemlist.append(Item(channel=item.channel, action="lista", title=">> Página siguiente", - url=next_page_url, + url=host+next_page_url, thumbnail='https://s16.postimg.cc/9okdu7hhx/siguiente.png' )) - tmdb.set_infoLabels(itemlist) + tmdb.set_infoLabels(itemlist, seekTmdb=True) return itemlist @@ -137,7 +158,7 @@ def generos(item): itemlist = [] data = get_source(item.url) - patron = '
  • (.*?)<\/a><\/li>' + patron = '
  • (.*?)<\/a><\/li>' matches = re.compile(patron, re.DOTALL).findall(data) for scrapedurl, scrapedtitle in matches: @@ -159,16 +180,59 @@ def episodios(item): itemlist = [] data = get_source(item.url) - patron = '
  • <\/span>(.*?) (\d+)<\/li>' + patron = '
  • .*?<\/span>(' \ + '.*?) (\d+)<\/li>' matches = re.compile(patron, re.DOTALL).findall(data) + infoLabels = item.infoLabels for scrapedurl, scrapedlang, scrapedtitle, episode in matches: language = scrapedlang title = scrapedtitle + " " + "1x" + episode url = scrapedurl - itemlist.append(item.clone(title=title, url=url, action='findvideos', language=language)) + infoLabels['season'] ='1' + infoLabels['episode'] = episode + + itemlist.append(Item(channel=item.channel, title=title, contentSerieName=item.contentSerieName, url=url, + action='findvideos', language=IDIOMAS[language], infoLabels=infoLabels)) - if config.get_videolibrary_support(): - itemlist.append(Item(channel=item.channel, title="Añadir serie a la biblioteca", url=item.url, action="add_serie_to_library", extra="episodios", fanart=item.thumbnail, thumbnail=item.thumbnail, contentTitle=item.show, show=item.show)) + tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True) + + if config.get_videolibrary_support() and len(itemlist) > 0: + itemlist.append( + Item(channel=item.channel, title='[COLOR yellow]Añadir esta serie a la videoteca[/COLOR]', url=item.url, + action="add_serie_to_library", extra="episodios", contentSerieName=item.contentSerieName, + extra1='library')) return itemlist + +def findvideos(item): + logger.info() + + itemlist = [] + + data = get_source(item.url) + patron = "
  • .*?ref="([^"]+).*?"tit">(.*?)' + + matches = scrapertools.find_multiple_matches(text, pattern) + for link, title in matches: + itemlist.append(item.clone(title=title, fulltitle=item.title, url=link, action='findvideos', extra=1)) + +def episodes(item): + logger.info() + itemlist = [] + + data = load_data(item.url) + seasonsPattern = '"#episodios(\d+)".*?>(.*?)' + episodesPattern = 'id="episodios%s">(.*?)' + + matches = scrapertools.find_multiple_matches(data, seasonsPattern) + for season, title in matches: + itemlist.append(Item(channel = item.channel, title="[COLOR blue]%s[/COLOR]" % title)) + episodeMatches = scrapertools.find_single_match(data, episodesPattern % season) + put_episodes(itemlist, item, episodeMatches) + + return itemlist + +def shows(item): + logger.info() + itemlist = [] + + data = load_data(item.url) + pattern = '"in">(.*?)' + + matches = scrapertools.find_multiple_matches(data, pattern) + for link, title in matches: + itemlist.append(Item(channel = item.channel, title=title, url=host + link, action="episodes")) + + return itemlist + +def movies(item): + logger.info() + itemlist = [] + + #descarga la pagina html + data = load_data(item.url) + + #patron para buscar las peliculas + pattern = '
  • &&'.replace('&&', pattern) + + matches = scrapertools.find_multiple_matches(data, pattern) + for link, genre in matches: + itemlist.append(Item(channel = item.channel, title=genre, url=link, action="movies")) + + return itemlist + +def genre(item): + return by(item, '(\D+)') + +def age(item): + return by(item, '(\d+)') + +def GKPluginLink(hash): + hashdata = urllib.urlencode({r'link':hash}) + json = httptools.downloadpage('https://player4.cuevana2.com/plugins/gkpluginsphp.php', post=hashdata).data + return jsontools.load(json)['link'] if json else '' + +#el pattern esta raro para eliminar los duplicados, de todas formas asi es un lenguaje de programacion verificando su sintaxis +def getContentMovie(data, item): + item.infoLabels["year"] = scrapertools.find_single_match(data, 'rel="tag">(\d+)') + genre = '' + for found_genre in scrapertools.find_multiple_matches(data, 'genero/.*?">(.*?)(?=.*?

    )'): + genre += found_genre + ', ' + item.infoLabels["genre"] = genre.strip(', ') + + director = '' + for found_director in scrapertools.find_multiple_matches(data, 'director/.*?">(.*?)(?=.*?

    )'): + director += found_director + ', ' + item.infoLabels["director"] = director.strip(', ') + + item.infoLabels["cast"] = tuple(found_cast for found_cast in scrapertools.find_multiple_matches( + data, 'reparto/.*?">(.*?)(?=.*?

    )')) + +def getContentShow(data, item): + item.thumbnail = scrapertools.find_single_match(data, 'width="120" height="160" src="([^"]+)"') + item.infoLabels['genre'] = scrapertools.find_single_match(data, '-4px;">(.*?)') + +def findvideos(item): + logger.info() + itemlist = [] + + data = load_data(item.url) + if item.extra: + getContentShow(data, item) + else: + getContentMovie(data, item) + pattern = '