From f869817be45753023f89009663d233f1a4b6a3f6 Mon Sep 17 00:00:00 2001 From: Intel1 Date: Wed, 13 Feb 2019 08:33:57 -0500 Subject: [PATCH 1/4] Actualizaciones MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit -goodpelis: Eliminado, web no existe -pelismundo: Cambio de dominio -search: Ahora muestra el canal exacto que hace que la búsqueda se congele cuando se escoge en la configuración del búscador global: Buscador Multithread (No marcar) y muestra el porcentaje de avance más preciso -wopelis: Eliminado, web no existe --- plugin.video.alfa/channels/goodpelis.json | 54 ---- plugin.video.alfa/channels/goodpelis.py | 354 --------------------- plugin.video.alfa/channels/pelismundo.py | 15 +- plugin.video.alfa/channels/repelis.py | 16 +- plugin.video.alfa/channels/search.py | 47 ++- plugin.video.alfa/channels/wopelis.json | 40 --- plugin.video.alfa/channels/wopelis.py | 366 ---------------------- 7 files changed, 36 insertions(+), 856 deletions(-) delete mode 100644 plugin.video.alfa/channels/goodpelis.json delete mode 100644 plugin.video.alfa/channels/goodpelis.py delete mode 100755 plugin.video.alfa/channels/wopelis.json delete mode 100755 plugin.video.alfa/channels/wopelis.py diff --git a/plugin.video.alfa/channels/goodpelis.json b/plugin.video.alfa/channels/goodpelis.json deleted file mode 100644 index d4811917..00000000 --- a/plugin.video.alfa/channels/goodpelis.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "id": "goodpelis", - "name": "GoodPelis", - "active": false, - "adult": false, - "language": ["lat"], - "thumbnail": "http://goodpelis.net/wp-content/uploads/2017/11/Logo-GP.png", - "banner": "", - "categories": [ - "movie" - ], - "settings": [ - { - "id": "include_in_global_search", - "type": "bool", - "label": "Incluir en busqueda global", - "default": true, - "enabled": true, - "visible": true - }, - { - "id": "include_in_newest_latino", - "type": "bool", - "label": "Incluir en Novedades - Latino", - "default": true, - "enabled": true, - "visible": true - }, - { - "id": "include_in_newest_peliculas", - "type": "bool", - "label": "Incluir en Novedades - Peliculas", - "default": true, - "enabled": true, - "visible": true - }, - { - "id": "include_in_newest_infantiles", - "type": "bool", - "label": "Incluir en Novedades - Infantiles", - "default": true, - "enabled": true, - "visible": true - }, - { - "id": "include_in_newest_terror", - "type": "bool", - "label": "Incluir en Novedades - Terror", - "default": true, - "enabled": true, - "visible": true - } - ] -} diff --git a/plugin.video.alfa/channels/goodpelis.py b/plugin.video.alfa/channels/goodpelis.py deleted file mode 100644 index c7aa3349..00000000 --- a/plugin.video.alfa/channels/goodpelis.py +++ /dev/null @@ -1,354 +0,0 @@ -# -*- coding: utf-8 -*- -# -*- Channel GoodPelis -*- -# -*- Created for Alfa-addon -*- -# -*- By the Alfa Develop Group -*- - -import re - -from core import httptools -from core import scrapertools -from core import servertools -from core import tmdb -from core.item import Item -from platformcode import config, logger -from channelselector import get_thumb - -host = 'https://goodpelis.net/' - - -def mainlist(item): - logger.info() - - itemlist = [] - - itemlist.append(item.clone(title="Peliculas", - action="menu_peliculas", - thumbnail=get_thumb('movies', auto=True), - )) - - # itemlist.append(item.clone(title="Series", - # action="menu_series", - # thumbnail=get_thumb('tvshows', auto=True), - # )) - - itemlist.append(item.clone(title="Buscar", action="search", - thumbnail=get_thumb('search', auto=True), - url=host + '?s=' - )) - - return itemlist - - -def menu_peliculas(item): - logger.info() - - itemlist = [] - - itemlist.append(item.clone(title="Todas", - action="list_all", - thumbnail=get_thumb('all', auto=True), - url=host + 'page/1/?s' - )) - - itemlist.append(item.clone(title="Generos", - action="seccion", - url=host + 'page/1/?s', - thumbnail=get_thumb('genres', auto=True), - seccion='generos-pelicula' - )) - - itemlist.append(item.clone(title="Por Año", - action="seccion", - url=host + 'page/1/?s', - thumbnail=get_thumb('year', auto=True), - seccion='fecha-estreno' - )) - - itemlist.append(item.clone(title="Calidad", - action="seccion", - url=host + 'page/1/?s', - thumbnail=get_thumb('quality', auto=True), - seccion='calidad' - )) - - return itemlist - - -def menu_series(item): - logger.info() - - itemlist = [] - - itemlist.append(item.clone(title="Todas", - action="list_all", thumbnail=get_thumb('all', auto=True), - url=host + 'series/page/1/', - )) - - itemlist.append(item.clone(title="Generos", - action="seccion", - url=host + 'series/page/1/', - thumbnail=get_thumb('genres', auto=True), - seccion='generos-serie' - )) - - itemlist.append(item.clone(title="Por Año", - action="seccion", - url=host + 'series/page/1/', - thumbnail=get_thumb('year', auto=True), - seccion='series-lanzamiento' - )) - - return itemlist - - -def list_all(item): - logger.info() - - itemlist = [] - data = get_source(item.url) - patron = 'class=item.*?
(.*?)<') - title = contentTitle + ' (%s)' % quality - - year = scrapedyear - - if 'series' in item.url or 'series' in url: - action = 'seasons' - contentSerieName = contentTitle - quality = '' - new_item = Item(channel=item.channel, - action=action, - title=title, - url=url, - thumbnail=thumbnail, - plot=plot, - quality=quality, - infoLabels={'year': year} - ) - if 'series' not in item.url: - new_item.contentTitle = contentTitle - else: - new_item.contentSerieName = contentSerieName - if 'temporada' not in url: - itemlist.append(new_item) - - tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True) - # Paginacion - - if itemlist != []: - next_page = scrapertools.find_single_match(data, - '
Siguiente') - if next_page != '': - itemlist.append(Item(channel=item.channel, - action="list_all", - title='Siguiente >>>', - url=next_page, - )) - return itemlist - - -def seccion(item): - logger.info() - itemlist = [] - data = get_source(item.url) - if item.seccion == 'generos-pelicula': - patron = '
  • (.*?<\/a> .*?)<\/span><\/li>' - elif item.seccion == 'generos-serie': - patron = '
  • (.*?<\/a> .*?)<\/span><\/li>' - elif item.seccion in ['fecha-estreno', 'series-lanzamiento']: - patron = '
  • (.*?)<\/a>' % host - elif item.seccion == 'calidad': - patron = '
  • (.*?)<\/a>' % host - matches = re.compile(patron, re.DOTALL).findall(data) - for scrapedurl, scrapedtitle in matches: - thumbnail = '' - if 'generos' in item.seccion: - cantidad = scrapertools.find_single_match(scrapedtitle, '(\d+)') - title = scrapertools.find_single_match(scrapedtitle, '(.*?)<') - url = scrapedurl - title = scrapertools.decodeHtmlentities(title) - title = title + ' (%s)' % cantidad - elif item.seccion in ['series-lanzamiento', 'fecha-estreno', 'calidad']: - title = scrapedtitle - url = '%s%s%s' % (host, item.seccion, scrapedurl) - - itemlist.append(item.clone(action='list_all', - title=title, - url=url, - thumbnail=thumbnail - )) - return itemlist - - -def seasons(item): - logger.info() - - itemlist = [] - - data = get_source(item.url) - patron = '.*?- Temporada (.*?)<\/span>' - matches = re.compile(patron, re.DOTALL).findall(data) - - for temporada in matches: - title = 'Temporada %s' % temporada - contentSeasonNumber = temporada - item.infoLabels['season'] = contentSeasonNumber - itemlist.append(item.clone(action='episodiosxtemp', - title=title, - contentSeasonNumber=contentSeasonNumber - )) - - 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, - contentSeasonNumber=contentSeasonNumber - )) - - return itemlist - - -def episodios(item): - logger.info() - - itemlist = [] - data = get_source(item.url) - - patron = '
  • %s.*?x.*?(\d+)<\/div>.*? (.*?)<\/a>.*?<\/i>' % temporada - matches = re.compile(patron, re.DOTALL).findall(data) - - for scrapedep, scrapedurl, scrapedtitle in matches: - title = temporada + 'x%s %s' % (scrapedep, scrapedtitle) - url = scrapedurl - contentEpisodeNumber = scrapedep - item.infoLabels['episode'] = contentEpisodeNumber - itemlist.append(item.clone(action='findvideos', - title=title, - url=url, - contentEpisodeNumber=contentEpisodeNumber, - )) - tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True) - return itemlist - - -def findvideos(item): - logger.info() - url_list = [] - itemlist = [] - duplicados = [] - data = get_source(item.url) - src = data - patron = '<(?:iframe|IFRAME).*?(?:src|SRC)=(.*?) (?:scrolling|frameborder|FRAMEBORDER)' - matches = re.compile(patron, re.DOTALL).findall(data) - - for url in matches: - lang = 'LAT' - quality = item.quality - title = '[%s] [%s]' - if url != '': - itemlist.append(item.clone(title=title, url=url, action='play', language=lang)) - - itemlist = servertools.get_servers_itemlist(itemlist, lambda i: i.title % (i.server, i.language)) - - if item.infoLabels['mediatype'] == 'movie': - if config.get_videolibrary_support() and len(itemlist) > 0 and item.extra != 'findvideos': - itemlist.append(Item(channel=item.channel, - title='[COLOR yellow]Añadir esta pelicula a la videoteca[/COLOR]', - url=item.url, - action="add_pelicula_to_library", - extra="findvideos", - contentTitle=item.contentTitle - )) - - return itemlist - - -def search(item, texto): - logger.info() - texto = texto.replace(" ", "+") - item.url = item.url + texto - try: - if texto != '': - return list_all(item) - else: - return [] - except: - import sys - for line in sys.exc_info(): - logger.error("%s" % line) - return [] - - -def newest(categoria): - logger.info() - itemlist = [] - item = Item() - try: - if categoria in ['peliculas', 'latino']: - item.url = host + 'page/1/?s' - - elif categoria == 'infantiles': - item.url = host + 'category/animacion/' - - elif categoria == 'terror': - item.url = host + 'category/terror/' - - itemlist = list_all(item) - if itemlist[-1].title == 'Siguiente >>>': - itemlist.pop() - except: - import sys - for line in sys.exc_info(): - logger.error("{0}".format(line)) - return [] - - return itemlist - - -def get_source(url): - logger.info() - data = httptools.downloadpage(url).data - data = re.sub(r'"|\n|\r|\t| |
    |\s{2,}', "", data) - return data diff --git a/plugin.video.alfa/channels/pelismundo.py b/plugin.video.alfa/channels/pelismundo.py index a7a2ceb4..b73e9d2f 100644 --- a/plugin.video.alfa/channels/pelismundo.py +++ b/plugin.video.alfa/channels/pelismundo.py @@ -12,7 +12,7 @@ from core import tmdb from core.item import Item from platformcode import config, logger -host = "http://www.pelismundo.com" +host = "https://www.pelisvips.com" idiomas = {"Castellano":"CAST","Subtitulad":"VOSE","Latino":"LAT"} def mainlist(item): @@ -209,17 +209,14 @@ def findvideos(item): )) tmdb.set_infoLabels(itemlist) itemlist = servertools.get_servers_itemlist(itemlist, lambda i: i.title % i.server.capitalize()) - if itemlist: + if itemlist and item.contentChannel != "videolibrary": itemlist.append(Item(channel = item.channel)) itemlist.append(item.clone(channel="trailertools", title="Buscar Tráiler", action="buscartrailer", context="", text_color="magenta")) - # Opción "Añadir esta película a la biblioteca de KODI" - if item.extra != "library": - if config.get_videolibrary_support(): - itemlist.append(Item(channel=item.channel, title="Añadir a la videoteca", text_color="green", - action="add_pelicula_to_library", url=item.url, thumbnail = item.thumbnail, - fulltitle = item.contentTitle - )) + if config.get_videolibrary_support(): + itemlist.append(item.clone(title="Añadir a la videoteca", text_color="green", + action="add_pelicula_to_library", url=item.url, fulltitle = item.contentTitle + )) return itemlist diff --git a/plugin.video.alfa/channels/repelis.py b/plugin.video.alfa/channels/repelis.py index 8f64886b..d921c349 100644 --- a/plugin.video.alfa/channels/repelis.py +++ b/plugin.video.alfa/channels/repelis.py @@ -25,7 +25,7 @@ list_servers = ['rapidvideo', 'streamango', 'fastplay', 'openload', 'netu', 'vid __channel__='repelis' -host = "https://repelisgo.io" +host = "https://repelisgo.com" try: __modo_grafico__ = config.get_setting('modo_grafico', __channel__) @@ -207,23 +207,23 @@ def findvideos(item): autoplay.start(itemlist, item) - if itemlist: + if itemlist and item.contentChannel != "videolibrary": itemlist.append(Item(channel = item.channel)) itemlist.append(item.clone(channel="trailertools", title="Buscar Tráiler", action="buscartrailer", context="", text_color="magenta")) # Opción "Añadir esta película a la biblioteca de KODI" - if item.extra != "library": - if config.get_videolibrary_support(): - itemlist.append(Item(channel=item.channel, title="Añadir a la videoteca", text_color="green", - action="add_pelicula_to_library", url=item.url, thumbnail = item.thumbnail, - contentTitle = item.contentTitle - )) + if config.get_videolibrary_support(): + itemlist.append(Item(channel=item.channel, title="Añadir a la videoteca", text_color="green", + action="add_pelicula_to_library", url=item.url, thumbnail = item.thumbnail, + contentTitle = item.contentTitle + )) return itemlist def play(item): logger.info() itemlist = [] + #headers = {"} url1 = httptools.downloadpage(host + item.url, follow_redirects=False, only_headers=True).headers.get("location", "") itemlist.append(item.clone(url=url1)) itemlist = servertools.get_servers_itemlist(itemlist) diff --git a/plugin.video.alfa/channels/search.py b/plugin.video.alfa/channels/search.py index 90ea7199..c6a2dd20 100644 --- a/plugin.video.alfa/channels/search.py +++ b/plugin.video.alfa/channels/search.py @@ -481,19 +481,16 @@ def do_search(item, categories=None): time.sleep(0.5) progreso = platformtools.dialog_progress(config.get_localized_string(30993) % tecleado, "") channel_files = sorted(glob.glob(channels_path), key=lambda x: os.path.basename(x)) - import math - # fix float porque la division se hace mal en python 2.x - number_of_channels = float(100) / len(channel_files) threads = [] search_results = {} start_time = time.time() + list_channels_search = [] + # Extrae solo los canales a buscar for index, infile in enumerate(channel_files): try: - percentage = int(math.ceil((index + 1) * number_of_channels)) - basename = os.path.basename(infile) basename_without_extension = basename[:-5] logger.info("%s..." % basename_without_extension) @@ -539,29 +536,40 @@ def do_search(item, categories=None): if not include_in_global_search: logger.info("%s -no incluido en lista a buscar-" % basename_without_extension) continue + list_channels_search.append(infile) + except: + logger.error("No se puede buscar en: %s" % channel_parameters["title"]) + import traceback + logger.error(traceback.format_exc()) + continue + + for index, infile in enumerate(list_channels_search): + try: + # fix float porque la division se hace mal en python 2.x + percentage = int(float((index+1))/len(list_channels_search)*float(100)) + basename = os.path.basename(infile) + basename_without_extension = basename[:-5] + logger.info("%s..." % basename_without_extension) + channel_parameters = channeltools.get_channel_parameters(basename_without_extension) + # Movido aqui el progreso, para que muestre el canal exacto que está buscando + progreso.update(percentage, + config.get_localized_string(60520) % (channel_parameters["title"])) + # Modo Multi Thread if progreso.iscanceled(): progreso.close() logger.info("Búsqueda cancelada") return itemlist - - # Modo Multi Thread if multithread: t = Thread(target=channel_search, args=[search_results, channel_parameters, tecleado], name=channel_parameters["title"]) t.setDaemon(True) t.start() threads.append(t) - # Modo single Thread else: logger.info("Intentado búsqueda en %s de %s " % (basename_without_extension, tecleado)) channel_search(search_results, channel_parameters, tecleado) - - logger.info("%s incluido en la búsqueda" % basename_without_extension) - progreso.update(percentage, - config.get_localized_string(60520) % channel_parameters["title"]) - except: logger.error("No se puede buscar en: %s" % channel_parameters["title"]) import traceback @@ -581,24 +589,18 @@ def do_search(item, categories=None): list_pendent_names = [a.getName() for a in pendent] mensaje = config.get_localized_string(70282) % (", ".join(list_pendent_names)) - progreso.update(percentage, config.get_localized_string(60521) % (len(threads) - len(pendent), len(threads)), + progreso.update(percentage, config.get_localized_string(60521) % (len(threads) - len(pendent) + 1, len(threads)), mensaje) - logger.debug(mensaje) - if progreso.iscanceled(): logger.info("Búsqueda cancelada") break - time.sleep(0.5) pendent = [a for a in threads if a.isAlive()] - total = 0 - for channel in sorted(search_results.keys()): for element in search_results[channel]: total += len(element["itemlist"]) title = channel - # resultados agrupados por canales if item.contextual == True or item.action == 'search_tmdb': result_mode = 1 @@ -606,10 +608,8 @@ def do_search(item, categories=None): if len(search_results[channel]) > 1: title += " -%s" % element["item"].title.strip() title += " (%s)" % len(element["itemlist"]) - title = re.sub("\[COLOR [^\]]+\]", "", title) title = re.sub("\[/COLOR]", "", title) - itemlist.append(Item(title=title, channel="search", action="show_result", url=element["item"].url, extra=element["item"].extra, folder=True, adult=element["adult"], from_action="search", from_channel=element["item"].channel, tecleado=tecleado)) @@ -625,13 +625,10 @@ def do_search(item, categories=None): i.infoPlus = True itemlist.append(i.clone(title=title, from_action=i.action, from_channel=i.channel, channel="search", action="show_result", adult=element["adult"])) - title = config.get_localized_string(59972) % ( tecleado, total, time.time() - start_time) itemlist.insert(0, Item(title=title, text_color='yellow')) - progreso.close() - #Para opcion Buscar en otros canales if item.contextual == True: return exact_results(itemlist, tecleado) diff --git a/plugin.video.alfa/channels/wopelis.json b/plugin.video.alfa/channels/wopelis.json deleted file mode 100755 index 04110e74..00000000 --- a/plugin.video.alfa/channels/wopelis.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "id": "wopelis", - "name": "WoPelis", - "active": true, - "adult": false, - "language": ["cast", "lat"], - "banner": "https://github.com/master-1970/resources/raw/master/images/bannermenu/wopelis.png", - "fanart": "https://github.com/master-1970/resources/raw/master/images/fanart/wopelis.png", - "thumbnail": "https://github.com/master-1970/resources/raw/master/images/squares/wopelis.png", - "categories": [ - "movie", - "tvshow" - ], - "settings": [ - { - "id": "include_in_global_search", - "type": "bool", - "label": "Incluir en busqueda global", - "default": true, - "enabled": true, - "visible": true - }, - { - "id": "include_in_newest_peliculas", - "type": "bool", - "label": "Incluir en Novedades - Películas", - "default": true, - "enabled": true, - "visible": true - }, - { - "id": "include_in_newest_series", - "type": "bool", - "label": "Incluir en Novedades - Series", - "default": true, - "enabled": true, - "visible": true - } - ] -} \ No newline at end of file diff --git a/plugin.video.alfa/channels/wopelis.py b/plugin.video.alfa/channels/wopelis.py deleted file mode 100755 index 99fd1111..00000000 --- a/plugin.video.alfa/channels/wopelis.py +++ /dev/null @@ -1,366 +0,0 @@ -# -*- coding: utf-8 -*- - -import re - -from core import channeltools -from core import httptools -from core import scrapertools -from core import servertools -from core import tmdb -from core.item import Item -from platformcode import config, logger - -HOST = 'http://www.wopelis.com' -__channel__ = 'wopelis' -parameters = channeltools.get_channel_parameters(__channel__) -fanart_host = parameters['fanart'] -thumbnail_host = parameters['thumbnail'] -color1, color2, color3 = ['0xFF58D3F7', '0xFF2E64FE', '0xFF0404B4'] - - -def mainlist(item): - logger.info() - itemlist = [] - item.url = HOST - item.text_color = color2 - item.fanart = fanart_host - - item.thumbnail = "https://github.com/master-1970/resources/raw/master/images/genres/0/Directors%20Chair.png" - url = HOST + "/galep.php?solo=cenlaces&empen=0" - itemlist.append(item.clone(title="Películas:", folder=False, text_color=color3, text_bold=True)) - itemlist.append(item.clone(title=" Recientes", action="listado", url=url)) - itemlist.append(item.clone(title=" Mas populares de la semana", action="listado", url=url + "&ord=popu")) - itemlist.append(item.clone(title=" Por géneros", action="generos", url=HOST + "/index.php")) - itemlist.append(item.clone(title=" Buscar película", action="search", url=url)) - - itemlist.append(item.clone(title="", folder=False, thumbnail=thumbnail_host)) - - item.thumbnail = "https://github.com/master-1970/resources/raw/master/images/genres/0/TV%20Series.png" - url = HOST + "/gales.php?empen=0" - itemlist.append(item.clone(title="Series:", folder=False, text_color=color3, text_bold=True)) - itemlist.append(item.clone(title=" Nuevos episodios", action="listado", url=url + "&ord=reci")) - itemlist.append(item.clone(title=" Mas populares de la semana", action="listado", url=url + "&ord=popu")) - itemlist.append(item.clone(title=" Por géneros", action="generos", url=HOST + "/series.php")) - itemlist.append(item.clone(title=" Buscar serie", action="search", url=url + "&ord=popu")) - - return itemlist - - -def newest(categoria): - logger.info() - itemlist = [] - item = Item() - try: - if categoria == 'peliculas': - item.url = HOST + "/galep.php?solo=cenlaces&empen=0" - - elif categoria == 'series': - item.url = HOST + "/gales.php?empen=0&ord=reci" - - else: - return [] - - itemlist = listado(item) - if itemlist[-1].title == ">> Página siguiente": - itemlist.pop() - - # Se captura la excepción, para no interrumpir al canal novedades si un canal falla - except: - import sys - for line in sys.exc_info(): - logger.error("{0}".format(line)) - return [] - - return itemlist - - -def search(item, texto): - logger.info("search:" + texto) - try: - if texto: - item.url = "%s&busqueda=%s" % (item.url, texto.replace(" ", "+")) - return listado(item) - else: - return [] - # Se captura la excepción, para no interrumpir al buscador global si un canal falla - except: - import sys - for line in sys.exc_info(): - logger.error("%s" % line) - return [] - - -def generos(item): - logger.info() - itemlist = [] - dict_gender = {"acción": "accion", "animación": "animacion", "ciencia ficción": "ciencia%20ficcion", - "fantasía": "fantasia", "música": "musica", "película de la televisión": "pelicula%20de%20tv"} - - data = downloadpage(item.url) - data = scrapertools.find_single_match(data, '') - - for genero in scrapertools.find_multiple_matches(data, '