From 0ecbbf8065553e7398f15aeeb2ad2f0b4de1324f Mon Sep 17 00:00:00 2001 From: pipcat Date: Thu, 17 May 2018 19:19:22 +0200 Subject: [PATCH 01/24] Correcciones pelispedia --- plugin.video.alfa/channels/pelispedia.json | 14 - plugin.video.alfa/channels/pelispedia.py | 519 +++++++++++---------- 2 files changed, 283 insertions(+), 250 deletions(-) mode change 100755 => 100644 plugin.video.alfa/channels/pelispedia.json mode change 100755 => 100644 plugin.video.alfa/channels/pelispedia.py diff --git a/plugin.video.alfa/channels/pelispedia.json b/plugin.video.alfa/channels/pelispedia.json old mode 100755 new mode 100644 index 322248f4..cc578ae3 --- a/plugin.video.alfa/channels/pelispedia.json +++ b/plugin.video.alfa/channels/pelispedia.json @@ -21,20 +21,6 @@ "enabled": true, "visible": true }, - { - "id": "perfil", - "type": "list", - "label": "Perfil de color", - "default": 3, - "enabled": true, - "visible": true, - "lvalues": [ - "Sin color", - "Perfil 3", - "Perfil 2", - "Perfil 1" - ] - }, { "id": "orden_episodios", "type": "bool", diff --git a/plugin.video.alfa/channels/pelispedia.py b/plugin.video.alfa/channels/pelispedia.py old mode 100755 new mode 100644 index 321dc11a..1f26a4fb --- a/plugin.video.alfa/channels/pelispedia.py +++ b/plugin.video.alfa/channels/pelispedia.py @@ -3,6 +3,7 @@ import re import urllib import urlparse +import json from channelselector import get_thumb from core import channeltools @@ -13,6 +14,7 @@ from core import tmdb from core.item import Item from platformcode import config, logger from platformcode import platformtools +from core import filetools __channel__ = "pelispedia" @@ -21,20 +23,9 @@ CHANNEL_HOST = "http://www.pelispedia.tv/" # Configuracion del canal try: __modo_grafico__ = config.get_setting('modo_grafico', __channel__) - __perfil__ = config.get_setting('perfil', __channel__) except: __modo_grafico__ = True - __perfil__ = 0 -# Fijar perfil de color -perfil = [['0xFF6E2802', '0xFFFAA171', '0xFFE9D7940'], - ['0xFFA5F6AF', '0xFF5FDA6D', '0xFF11811E'], - ['0xFF58D3F7', '0xFF2E64FE', '0xFF0404B4']] - -if __perfil__ - 1 >= 0: - color1, color2, color3 = perfil[__perfil__ - 1] -else: - color1 = color2 = color3 = "" parameters = channeltools.get_channel_parameters(__channel__) fanart_host = parameters['fanart'] @@ -45,52 +36,66 @@ def mainlist(item): logger.info() itemlist = list() - itemlist.append(Item(channel=__channel__, title="Películas", text_color=color1, fanart=fanart_host, folder=False, + itemlist.append(Item(channel=__channel__, title="Películas", fanart=fanart_host, folder=False, thumbnail=thumbnail_host, text_bold=True)) - itemlist.append( - Item(channel=__channel__, action="listado", title=" Novedades", text_color=color2, viewcontent="movies", - url=urlparse.urljoin(CHANNEL_HOST, "movies/all/"), fanart=fanart_host, extra="movies", - viewmode="movie_with_plot", + + itemlist.append(Item(channel=__channel__, action="listado", title=" Novedades", + url=urlparse.urljoin(CHANNEL_HOST, "movies/all/"), extra="movies", + viewcontent="movies", viewmode="movie_with_plot", fanart=fanart_host, thumbnail="https://raw.githubusercontent.com/master-1970/resources/master/images/genres/0/Directors%20Chair.png")) - itemlist.append( - Item(channel=__channel__, action="listado_alfabetico", title=" Por orden alfabético", text_color=color2, - url=urlparse.urljoin(CHANNEL_HOST, "movies/all/"), extra="movies", fanart=fanart_host, - viewmode="thumbnails", + + itemlist.append(Item(channel=__channel__, action="listado_alfabetico", title=" Por orden alfabético", + url=urlparse.urljoin(CHANNEL_HOST, "movies/all/"), extra="movies", + viewmode="thumbnails", fanart=fanart_host, thumbnail="https://raw.githubusercontent.com/master-1970/resources/master/images/genres/0/A-Z.png")) - itemlist.append(Item(channel=__channel__, action="listado_genero", title=" Por género", text_color=color2, - url=urlparse.urljoin(CHANNEL_HOST, "movies/all/"), extra="movies", fanart=fanart_host, - thumbnail="https://raw.githubusercontent.com/master-1970/resources/master/images/genres/0/Genre.png")) - itemlist.append(Item(channel=__channel__, action="listado_anio", title=" Por año", text_color=color2, - url=urlparse.urljoin(CHANNEL_HOST, "movies/all/"), extra="movies", fanart=fanart_host, - thumbnail="https://raw.githubusercontent.com/master-1970/resources/master/images/genres/0/Year.png")) - # itemlist.append(Item(channel=__channel__, action="search", title=" Buscar...", text_color=color2, + + itemlist.append(Item(channel=__channel__, action="listado_genero", title=" Por género", + url=urlparse.urljoin(CHANNEL_HOST, "movies/all/"), extra="movies", + fanart=fanart_host, + thumbnail="https://raw.githubusercontent.com/master-1970/resources/master/images/genres/0/Genre.png")) + + itemlist.append(Item(channel=__channel__, action="listado_anio", title=" Por año", + url=urlparse.urljoin(CHANNEL_HOST, "movies/all/"), extra="movies", + fanart=fanart_host, + thumbnail="https://raw.githubusercontent.com/master-1970/resources/master/images/genres/0/Year.png")) + + # itemlist.append(Item(channel=__channel__, action="search", title=" Buscar...", # url=urlparse.urljoin(CHANNEL_HOST, "buscar/?s="), extra="movies", fanart=fanart_host)) - itemlist.append(Item(channel=__channel__, title="Series", text_color=color1, fanart=fanart_host, folder=False, + + itemlist.append(Item(channel=__channel__, title="Series", fanart=fanart_host, folder=False, thumbnail=thumbnail_host, text_bold=True)) + itemlist.append( - Item(channel=__channel__, action="listado", title=" Novedades", text_color=color2, viewcontent="tvshows", - url=urlparse.urljoin(CHANNEL_HOST, "series/all/"), extra="serie", fanart=fanart_host, - viewmode="movie_with_plot", + Item(channel=__channel__, action="listado", title=" Novedades", + url=urlparse.urljoin(CHANNEL_HOST, "series/all/"), extra="serie", + viewcontent="tvshows", viewmode="movie_with_plot", fanart=fanart_host, thumbnail="https://raw.githubusercontent.com/master-1970/resources/master/images/genres/0/TV%20Series.png")) - itemlist.append(Item(channel=__channel__, action="listado_alfabetico", title=" Por orden alfabético", - text_color=color2, extra="serie", fanart=fanart_host, viewmode="thumbnails", - thumbnail="https://raw.githubusercontent.com/master-1970/resources/master/images/genres/0/A-Z.png")) - itemlist.append(Item(channel=__channel__, action="listado_genero", title=" Por género", extra="serie", - text_color=color2, fanart=fanart_host, url=urlparse.urljoin(CHANNEL_HOST, "series/all/"), - thumbnail="https://raw.githubusercontent.com/master-1970/resources/master/images/genres/0/Genre.png")) - itemlist.append( - Item(channel=__channel__, action="listado_anio", title=" Por año", extra="serie", text_color=color2, - fanart=fanart_host, url=urlparse.urljoin(CHANNEL_HOST, "series/all/"), + + itemlist.append(Item(channel=__channel__, action="listado_alfabetico", title=" Por orden alfabético", + url=urlparse.urljoin(CHANNEL_HOST, "series/all/"), extra="serie", + viewmode="thumbnails", fanart=fanart_host, + thumbnail="https://raw.githubusercontent.com/master-1970/resources/master/images/genres/0/A-Z.png")) + + itemlist.append(Item(channel=__channel__, action="listado_genero", title=" Por género", + url=urlparse.urljoin(CHANNEL_HOST, "series/all/"), extra="serie", + fanart=fanart_host, + thumbnail="https://raw.githubusercontent.com/master-1970/resources/master/images/genres/0/Genre.png")) + + itemlist.append(Item(channel=__channel__, action="listado_anio", title=" Por año", + url=urlparse.urljoin(CHANNEL_HOST, "series/all/"), extra="serie", + fanart=fanart_host, thumbnail="https://raw.githubusercontent.com/master-1970/resources/master/images/genres/0/Year.png")) - # itemlist.append(Item(channel=__channel__, action="search", title=" Buscar...", text_color=color2, + + # itemlist.append(Item(channel=__channel__, action="search", title=" Buscar...", # url=urlparse.urljoin(CHANNEL_HOST, "series/buscar/?s="), extra="serie", fanart=fanart_host)) - itemlist.append(Item(channel=__channel__, title="", fanart=fanart_host, folder=False, thumbnail=thumbnail_host)) - itemlist.append(Item(channel=__channel__, action="settings", title="Configuración", text_color=color1, - fanart=fanart_host, text_bold=True, - thumbnail=get_thumb("setting_0.png"))) + # ~ itemlist.append(Item(channel=__channel__, title="", fanart=fanart_host, folder=False, thumbnail=thumbnail_host)) + + # ~ itemlist.append(Item(channel=__channel__, action="settings", title="Configuración", + # ~ fanart=fanart_host, text_bold=True, + # ~ thumbnail=get_thumb("setting_0.png"))) return itemlist @@ -123,7 +128,7 @@ def listado_alfabetico(item): itemlist.append( Item(channel=__channel__, action="listado", title=letra, url=urlparse.urljoin(CHANNEL_HOST, cadena), - extra=item.extra, text_color=color2, viewcontent=viewcontent, + extra=item.extra, fanart=fanart_host, viewcontent=viewcontent, thumbnail="https://raw.githubusercontent.com/master-1970/resources/master/images/genres/0/A-Z.png")) return itemlist @@ -160,7 +165,7 @@ def listado_genero(item): itemlist.append( Item(channel=__channel__, action="listado", title=value, url=urlparse.urljoin(CHANNEL_HOST, cadena2), - extra=item.extra, text_color=color2, fanart=fanart_host, viewcontent=viewcontent, + extra=item.extra, fanart=fanart_host, viewcontent=viewcontent, thumbnail="https://raw.githubusercontent.com/master-1970/resources/master/images/genres/0/Genre.png")) return itemlist @@ -197,10 +202,10 @@ def listado_anio(item): if item.extra != "movies": cadena2 += "/" - itemlist.append(Item(channel=__channel__, action="listado", title=titulo + value, extra=item.extra, - url=urlparse.urljoin(CHANNEL_HOST, cadena2), text_color=color2, fanart=fanart_host, - thumbnail="https://raw.githubusercontent.com/master-1970/resources/master/images/genres/0/Year.png", - viewcontent=viewcontent)) + itemlist.append( + Item(channel=__channel__, action="listado", title=titulo + value, url=urlparse.urljoin(CHANNEL_HOST, cadena2), + extra=item.extra, fanart=fanart_host, viewcontent=viewcontent, + thumbnail="https://raw.githubusercontent.com/master-1970/resources/master/images/genres/0/Year.png")) return itemlist @@ -257,7 +262,8 @@ def listado(item): action = "temporadas" content_type = "tvshow" - data = httptools.downloadpage(item.url).data + # ~ data = httptools.downloadpage(item.url).data + data = obtener_data(item.url) data = re.sub(r"\n|\r|\t|\s{2}| |
|
|
|
|
|-\s", "", data) # logger.info("data -- {}".format(data)) @@ -270,7 +276,7 @@ def listado(item): plot = scrapertools.entityunescape(scrapedplot) new_item = Item(channel=__channel__, title=title, url=urlparse.urljoin(CHANNEL_HOST, scrapedurl), action=action, - thumbnail=scrapedthumbnail, plot=plot, context="", extra=item.extra, text_color=color3, + thumbnail=scrapedthumbnail, plot=plot, context="", extra=item.extra, contentType=content_type, fulltitle=title) if item.extra == 'serie': @@ -325,7 +331,7 @@ def listado(item): url = item.url.replace("rangeStart=" + ant_inicio, "rangeStart=" + inicio) itemlist.append(Item(channel=__channel__, action="listado", title=">> Página siguiente", extra=item.extra, - url=url, thumbnail=thumbnail_host, fanart=fanart_host, text_color=color2)) + url=url, thumbnail=thumbnail_host, fanart=fanart_host)) return itemlist @@ -335,8 +341,8 @@ def episodios(item): itemlist = [] - # Descarga la página - data = httptools.downloadpage(item.url).data + # ~ data = httptools.downloadpage(item.url).data + data = obtener_data(item.url) data = re.sub(r"\n|\r|\t|\s{2}| |
|
|
|
|
|-\s", "", data) patron = '
  • (.*?).*?' \ @@ -353,7 +359,7 @@ def episodios(item): continue title = "%sx%s: %s" % (season, episode.zfill(2), scrapertools.unescape(scrapedname)) - new_item = item.clone(title=title, url=scrapedurl, action="findvideos", text_color=color3, fulltitle=title, + new_item = item.clone(title=title, url=scrapedurl, action="findvideos", fulltitle=title, contentType="episode") if 'infoLabels' not in new_item: new_item.infoLabels = {} @@ -382,7 +388,7 @@ def episodios(item): if config.get_videolibrary_support() and len(itemlist) > 0: itemlist.append(Item(channel=__channel__, title="Añadir esta serie a la videoteca", url=item.url, action="add_serie_to_library", extra="episodios", show=item.show, category="Series", - text_color=color1, thumbnail=thumbnail_host, fanart=fanart_host)) + thumbnail=thumbnail_host, fanart=fanart_host)) return itemlist @@ -391,9 +397,8 @@ def temporadas(item): logger.info() itemlist = [] - # Descarga la página - data = httptools.downloadpage(item.url).data - + # ~ data = httptools.downloadpage(item.url).data + data = obtener_data(item.url) data = re.sub(r"\n|\r|\t|\s{2}| |
    |
    |
    |
    |
    |-\s", "", data) if not item.fanart: @@ -407,7 +412,7 @@ def temporadas(item): if len(matches) > 1: for scrapedseason, scrapedthumbnail in matches: temporada = scrapertools.find_single_match(scrapedseason, '(\d+)') - new_item = item.clone(text_color=color2, action="episodios", season=temporada, thumbnail=scrapedthumbnail) + new_item = item.clone(action="episodios", season=temporada, thumbnail=scrapedthumbnail) new_item.infoLabels['season'] = temporada new_item.extra = "" itemlist.append(new_item) @@ -429,7 +434,7 @@ def temporadas(item): if config.get_videolibrary_support() and len(itemlist) > 0: itemlist.append(Item(channel=__channel__, title="Añadir esta serie a la videoteca", url=item.url, action="add_serie_to_library", extra="episodios", show=item.show, category="Series", - text_color=color1, thumbnail=thumbnail_host, fanart=fanart_host)) + thumbnail=thumbnail_host, fanart=fanart_host)) return itemlist else: @@ -441,8 +446,8 @@ def findvideos(item): logger.info("item.url %s" % item.url) itemlist = [] - # Descarga la página - data = httptools.downloadpage(item.url).data + # ~ data = httptools.downloadpage(item.url).data + data = obtener_data(item.url) data = re.sub(r"\n|\r|\t|\s{2}| |
    |
    |
    |
    |
    |-\s", "", data) patron = '' + matches = re.compile(patron, re.DOTALL).findall(data) + + for option, scrapedurl in matches: + scrapedurl = scrapedurl.replace('"','').replace('&','&') + data_video = get_source(scrapedurl) + url = scrapertools.find_single_match(data_video, '
    .*?src=(.*?) frameborder') + opt_data = scrapertools.find_single_match(data,'%s>.*?.*?(.*?)'%option).split('-') + language = opt_data[0].strip() + language = language.replace('(','').replace(')','') + quality = opt_data[1].strip() + if url != '' and 'youtube' not in url: + itemlist.append(item.clone(title='%s', url=url, language=IDIOMAS[language], quality=quality, action='play')) + elif 'youtube' in url: + trailer = item.clone(title='Trailer', url=url, action='play', server='youtube') + + itemlist = servertools.get_servers_itemlist(itemlist, lambda i: i.title % '%s [%s] [%s]'%(i.server.capitalize(), + i.language, i.quality)) + tmdb.set_infoLabels_itemlist(itemlist, True) + try: + itemlist.append(trailer) + except: + pass + + # Requerido para FilterTools + itemlist = filtertools.get_links(itemlist, item, list_language) + + # Requerido para AutoPlay + + autoplay.start(itemlist, item) + + 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 + + if texto != '': + return list_all(item) + else: + return [] + + +def newest(categoria): + logger.info() + itemlist = [] + item = Item() + try: + if categoria in ['peliculas','latino']: + item.url = host + elif categoria == 'infantiles': + item.url = host+'/animacion' + elif categoria == 'terror': + item.url = host+'/terror' + elif categoria == 'documentales': + item.url = host+'/documental' + 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 From 65326191901d9e7d763274fa71cc18dab39fd003 Mon Sep 17 00:00:00 2001 From: Kingbox <37674310+lopezvg@users.noreply.github.com> Date: Wed, 23 May 2018 21:14:26 +0200 Subject: [PATCH 21/24] =?UTF-8?q?Clones=20NewPct1=20y=20Mejortorrent:=20me?= =?UTF-8?q?joras=20internas=20y=20cosm=C3=A9ticas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugin.video.alfa/channels/descargas2020.py | 131 ++++++++-------- plugin.video.alfa/channels/mejortorrent.py | 145 ++++++++++++------ plugin.video.alfa/channels/mispelisyseries.py | 131 ++++++++-------- plugin.video.alfa/channels/torrentlocura.py | 131 ++++++++-------- plugin.video.alfa/channels/torrentrapid.py | 131 ++++++++-------- plugin.video.alfa/channels/tumejortorrent.py | 131 ++++++++-------- plugin.video.alfa/channels/tvsinpagar.py | 131 ++++++++-------- 7 files changed, 503 insertions(+), 428 deletions(-) diff --git a/plugin.video.alfa/channels/descargas2020.py b/plugin.video.alfa/channels/descargas2020.py index 49c21676..241d2456 100644 --- a/plugin.video.alfa/channels/descargas2020.py +++ b/plugin.video.alfa/channels/descargas2020.py @@ -236,7 +236,7 @@ def listado(item): #Determinamos y marcamos idiomas distintos del castellano item_local.language = [] - if "[vos" in title.lower() or "v.o.s" in title.lower() or "vo" in title.lower() or ".com/pelicula/" in scrapedurl or ".com/series-vo" in scrapedurl or "-vo/" in scrapedurl or "vos" in calidad.lower() or "vose" in calidad.lower() or "v.o.s" in calidad.lower() or ".com/peliculas-vo" in item.url: + if "[vos" in title.lower() or "v.o.s" in title.lower() or "vo" in title.lower() or ".com/pelicula/" in scrapedurl or ".com/series-vo" in scrapedurl or "-vo/" in scrapedurl or "vos" in calidad.lower() or "vose" in calidad.lower() or "v.o.s" in calidad.lower() or "sub" in calidad.lower() or ".com/peliculas-vo" in item.url: item_local.language += ["VOS"] title = title.replace(" [Subs. integrados]", "").replace(" [subs. Integrados]", "").replace(" [VOSE", "").replace(" [VOS", "").replace(" (V.O.S.E)", "").replace(" VO", "").replace("Subtitulos", "") if "latino" in title.lower() or "argentina" in title.lower() or "-latino/" in scrapedurl or "latino" in calidad.lower() or "argentina" in calidad.lower(): @@ -272,8 +272,8 @@ def listado(item): if "audio" in title.lower(): #Reservamos info de audio para después de TMDB title_subs += ['[%s]' % scrapertools.find_single_match(title, r'(\[[a|A]udio.*?\])')] title = re.sub(r'\[[a|A]udio.*?\]', '', title) - if "[dual" in title.lower() or "multileng" in title.lower() or "multileng" in item_local.quality.lower(): - item_local.language += ["DUAL"] + if "[dual" in title.lower() or "multileng" in title.lower() or "multileng" in item_local.quality.lower() or (("espa" in title.lower() or "spani" in title.lower()) and "VOS" in item_local.language): + item_local.language[0:0] = ["DUAL"] title = re.sub(r'\[[D|d]ual.*?\]', '', title) title = re.sub(r'\[[M|m]ultileng.*?\]', '', title) item_local.quality = re.sub(r'\[[M|m]ultileng.*?\]', '', item_local.quality) @@ -309,7 +309,7 @@ def listado(item): title = title.replace("Ver online ", "").replace("Descarga Serie HD ", "").replace("Descargar Serie HD ", "").replace("Descarga Serie ", "").replace("Descargar Serie ", "").replace("Ver en linea ", "").replace("Ver en linea", "").replace("HD ", "").replace("(Proper)", "").replace("RatDVD", "").replace("DVDRiP", "").replace("DVDRIP", "").replace("DVDR", "").replace("DVD9", "").replace("DVD", "").replace("DVB", "").replace("- ES ", "").replace("ES ", "").replace("COMPLETA", "").replace("(", "-").replace(")", "-").replace(".", " ").strip() - title = title.replace("Descargar torrent ", "").replace("Descarga Gratis ", "").replace("Descargar Estreno ", "").replace("Descargar Estrenos ", "").replace("Pelicula en latino ", "").replace("Descargar Pelicula ", "").replace("Descargar Peliculas ", "").replace("Descargar peliculas ", "").replace("Descargar Todas ", "").replace("Descargar Otras ", "").replace("Descargar ", "").replace("Descarga ", "").replace("Bajar ", "").replace("RIP ", "").replace("Rip", "").replace("RiP", "").replace("RiP", "").replace("XviD", "").replace("AC3 5.1", "").replace("AC3", "").replace("1080p ", "").replace("720p ", "").replace("DVD-Screener ", "").replace("TS-Screener ", "").replace("Screener ", "").replace("BdRemux ", "").replace("BR ", "").replace("4KULTRA", "").replace("FULLBluRay", "").replace("FullBluRay", "").replace("BluRay", "").replace("Bonus Disc", "").replace("de Cine ", "").replace("TeleCine ", "").replace("latino", "").replace("Latino", "").replace("argentina", "").replace("Argentina", "").strip() + title = title.replace("Descargar torrent ", "").replace("Descarga Gratis ", "").replace("Descargar Estreno ", "").replace("Descargar Estrenos ", "").replace("Pelicula en latino ", "").replace("Descargar Pelicula ", "").replace("Descargar Peliculas ", "").replace("Descargar peliculas ", "").replace("Descargar Todas ", "").replace("Descargar Otras ", "").replace("Descargar ", "").replace("Descarga ", "").replace("Bajar ", "").replace("HDRIP ", "").replace("HDRiP ", "").replace("HDRip ", "").replace("RIP ", "").replace("Rip", "").replace("RiP", "").replace("XviD", "").replace("AC3 5.1", "").replace("AC3", "").replace("1080p ", "").replace("720p ", "").replace("DVD-Screener ", "").replace("TS-Screener ", "").replace("Screener ", "").replace("BdRemux ", "").replace("BR ", "").replace("4KULTRA", "").replace("FULLBluRay", "").replace("FullBluRay", "").replace("BluRay", "").replace("Bonus Disc", "").replace("de Cine ", "").replace("TeleCine ", "").replace("latino", "").replace("Latino", "").replace("argentina", "").replace("Argentina", "").strip() if title.endswith("torrent gratis"): title = title[:-15] if title.endswith("gratis"): title = title[:-7] @@ -324,16 +324,9 @@ def listado(item): if not "HDR" in item_local.quality: item_local.quality += " HDR" - while title.endswith(' '): - title = title[:-1] - while title.startswith(' '): - title = title[+1:] - while title_alt.endswith(' '): - title_alt = title_alt[:-1] - while title_alt.startswith(' '): - title_alt = title_alt[+1:] - while item_local.quality.endswith(' '): - item_local.quality = item_local.quality[:-1] + title = title.strip() + title_alt = title_alt.strip() + item_local.quality = item_local.quality.strip() if not title: #Usamos solo el title_alt en caso de que no exista el título original title = title_alt @@ -416,9 +409,9 @@ def listado(item): if config.get_setting("unify"): #Si Titulos Inteligentes SÍ seleccionados: title = title.replace("[", "-").replace("]", "-") - title = title.replace("--", "").replace(" []", "").replace("()", "").replace("(/)", "").replace("[/]", "") - title = re.sub(r'\s\[COLOR \w+\]\[\]\[\/COLOR\]', '', title) - title = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', title) + title = title.replace("--", "").replace(" []", "").replace("()", "").replace("(/)", "").replace("[/]", "").strip() + title = re.sub(r'\s\[COLOR \w+\]\[\[?\]?\]\[\/COLOR\]', '', title).strip() + title = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', title).strip() if category == "newest": #Viene de Novedades. Marquemos el título con el nombre del canal title += ' -%s-' % item_local.channel.capitalize() @@ -427,7 +420,7 @@ def listado(item): item_local.title = title - logger.debug("url: " + item_local.url + " / title: " + item_local.title + " / content title: " + item_local.contentTitle + "/" + item_local.contentSerieName + " / calidad: " + item_local.quality + " / year: " + year) + logger.debug("url: " + item_local.url + " / title: " + item_local.title + " / content title: " + item_local.contentTitle + "/" + item_local.contentSerieName + " / calidad: " + item_local.quality + " / year: " + str(item_local.infoLabels['year'])) #logger.debug(item_local) if len(itemlist) == 0: @@ -447,15 +440,10 @@ def listado_busqueda(item): cnt_tot = 40 # Poner el num. máximo de items por página. Dejamos que la web lo controle cnt_title = 0 # Contador de líneas insertadas en Itemlist cnt_pag = 0 # Contador de líneas leídas de Matches - category = "" # Guarda la categoria que viene desde una busqueda global if item.cnt_pag: cnt_pag = item.cnt_pag # Se guarda en la lista de páginas anteriores en Item del item.cnt_pag - - if item.category: - category = item.category - del item.category if item.totalItems: del item.totalItems if item.text_bold: @@ -578,12 +566,14 @@ def listado_busqueda(item): title_lista += [scrapedurl_alt] else: title_lista += [scrapedurl] - if "juego/" in scrapedurl or "xbox" in scrapedurl.lower() or "xbox" in scrapedtitle.lower() or "xbox" in calidad.lower() or "epub" in calidad.lower() or "pdf" in calidad.lower(): # no mostramos lo que no sean videos + if "juego/" in scrapedurl or "xbox" in scrapedurl.lower() or "xbox" in scrapedtitle.lower() or "windows" in scrapedtitle.lower() or "windows" in calidad.lower() or "nintendo" in scrapedtitle.lower() or "xbox" in calidad.lower() or "epub" in calidad.lower() or "pdf" in calidad.lower() or "pcdvd" in calidad.lower() or "crack" in calidad.lower(): # no mostramos lo que no sean videos continue cnt_title += 1 # Sería una línea real más para Itemlist #Creamos una copia de Item para cada contenido item_local = item.clone() + if item_local.category: + del item_local.category if item_local.tipo: del item_local.tipo if item_local.totalItems: @@ -594,6 +584,10 @@ def listado_busqueda(item): del item_local.pattern if item_local.title_lista: del item_local.title_lista + item_local.adult = True + del item_local.adult + item_local.folder = True + del item_local.folder item_local.title = '' item_local.context = "['buscar_trailer']" @@ -620,7 +614,7 @@ def listado_busqueda(item): #Determinamos y marcamos idiomas distintos del castellano item_local.language = [] - if "[vos" in title.lower() or "v.o.s" in title.lower() or "vo" in title.lower() or ".com/pelicula/" in scrapedurl or ".com/series-vo" in scrapedurl or "-vo/" in scrapedurl or "vos" in calidad.lower() or "vose" in calidad.lower() or "v.o.s" in calidad.lower(): + if "[vos" in title.lower() or "v.o.s" in title.lower() or "vo" in title.lower() or ".com/pelicula/" in scrapedurl or ".com/series-vo" in scrapedurl or "-vo/" in scrapedurl or "vos" in calidad.lower() or "vose" in calidad.lower() or "v.o.s" in calidad.lower() or "sub" in calidad.lower() or ".com/peliculas-vo" in item.url: item_local.language += ["VOS"] title = title.replace(" [Subs. integrados]", "").replace(" [subs. Integrados]", "").replace(" [VOSE", "").replace(" [VOS", "").replace(" (V.O.S.E)", "").replace(" VO", "").replace("Subtitulos", "") if "latino" in title.lower() or "argentina" in title.lower() or "-latino/" in scrapedurl or "latino" in calidad.lower() or "argentina" in calidad.lower(): @@ -654,8 +648,8 @@ def listado_busqueda(item): if "audio" in title.lower(): #Reservamos info de audio para después de TMDB title_subs += ['[%s]' % scrapertools.find_single_match(title, r'(\[[a|A]udio.*?\])')] title = re.sub(r'\[[a|A]udio.*?\]', '', title) - if "[dual" in title.lower() or "multileng" in title.lower() or "multileng" in item_local.quality.lower(): - item_local.language += ["DUAL"] + if "[dual" in title.lower() or "multileng" in title.lower() or "multileng" in item_local.quality.lower() or (("espa" in title.lower() or "spani" in title.lower()) and "VOS" in item_local.language): + item_local.language[0:0] = ["DUAL"] title = re.sub(r'\[[D|d]ual.*?\]', '', title) title = re.sub(r'\[[M|m]ultileng.*?\]', '', title) item_local.quality = re.sub(r'\[[M|m]ultileng.*?\]', '', item_local.quality) @@ -691,7 +685,7 @@ def listado_busqueda(item): title = title.replace("Ver online ", "").replace("Descarga Serie HD ", "").replace("Descargar Serie HD ", "").replace("Descarga Serie ", "").replace("Descargar Serie ", "").replace("Ver en linea ", "").replace("Ver en linea", "").replace("HD ", "").replace("(Proper)", "").replace("RatDVD", "").replace("DVDRiP", "").replace("DVDRIP", "").replace("DVDR", "").replace("DVD9", "").replace("DVD", "").replace("DVB", "").replace("- ES ", "").replace("ES ", "").replace("COMPLETA", "").replace("(", "-").replace(")", "-").replace(".", " ").strip() - title = title.replace("Descargar torrent ", "").replace("Descarga Gratis ", "").replace("Descargar Estreno ", "").replace("Descargar Estrenos ", "").replace("Pelicula en latino ", "").replace("Descargar Pelicula ", "").replace("Descargar Peliculas ", "").replace("Descargar peliculas ", "").replace("Descargar Todas ", "").replace("Descargar Otras ", "").replace("Descargar ", "").replace("Descarga ", "").replace("Bajar ", "").replace("RIP ", "").replace("Rip", "").replace("RiP", "").replace("RiP", "").replace("XviD", "").replace("AC3 5.1", "").replace("AC3", "").replace("1080p ", "").replace("720p ", "").replace("DVD-Screener ", "").replace("TS-Screener ", "").replace("Screener ", "").replace("BdRemux ", "").replace("BR ", "").replace("4KULTRA", "").replace("FULLBluRay", "").replace("FullBluRay", "").replace("BluRay", "").replace("Bonus Disc", "").replace("de Cine ", "").replace("TeleCine ", "").replace("latino", "").replace("Latino", "").replace("argentina", "").replace("Argentina", "").strip() + title = title.replace("Descargar torrent ", "").replace("Descarga Gratis ", "").replace("Descargar Estreno ", "").replace("Descargar Estrenos ", "").replace("Pelicula en latino ", "").replace("Descargar Pelicula ", "").replace("Descargar Peliculas ", "").replace("Descargar peliculas ", "").replace("Descargar Todas ", "").replace("Descargar Otras ", "").replace("Descargar ", "").replace("Descarga ", "").replace("Bajar ", "").replace("HDRIP ", "").replace("HDRiP ", "").replace("HDRip ", "").replace("RIP ", "").replace("Rip", "").replace("RiP", "").replace("XviD", "").replace("AC3 5.1", "").replace("AC3", "").replace("1080p ", "").replace("720p ", "").replace("DVD-Screener ", "").replace("TS-Screener ", "").replace("Screener ", "").replace("BdRemux ", "").replace("BR ", "").replace("4KULTRA", "").replace("FULLBluRay", "").replace("FullBluRay", "").replace("BluRay", "").replace("Bonus Disc", "").replace("de Cine ", "").replace("TeleCine ", "").replace("latino", "").replace("Latino", "").replace("argentina", "").replace("Argentina", "").strip() if "pelisyseries.com" in host and item_local.contentType == "tvshow": titulo = '' @@ -715,19 +709,18 @@ def listado_busqueda(item): if title.endswith(" -"): title = title[:-2] if "en espa" in title: title = title[:-11] #title = re.sub(r'^\s', '', title) - title = title.replace("a?o", 'año').replace("a?O", 'año').replace("A?o", 'Año').replace("A?O", 'Año') - while title.startswith(' '): - title = title[+1:] - while title.endswith(' '): - title = title[:-1] + title = title.replace("a?o", 'año').replace("a?O", 'año').replace("A?o", 'Año').replace("A?O", 'Año').strip() #Preparamos calidad item_local.quality = item_local.quality.replace("[ ", "").replace(" ]", "") #Preparamos calidad para Series item_local.quality = re.sub(r'\[\d{4}\]', '', item_local.quality) #Quitar año, si lo tiene item_local.quality = re.sub(r'\[Cap.*?\]', '', item_local.quality) #Quitar episodios, si lo tiene item_local.quality = re.sub(r'\[Docu.*?\]', '', item_local.quality) #Quitar tipo contenidos, si lo tiene - if "[es-" in item_local.quality.lower() or (("cast" in item_local.quality.lower() or "spani" in item_local.quality.lower()) and ("eng" in item_local.quality.lower() or "ing" in item_local.quality.lower())): #Mirar si es DUAL - item_local.language += ["DUAL"] #Salvar DUAL en idioma + #Mirar si es DUAL + if "VOS" in item_local.language and "DUAL" not in item_local.language and ("[sp" in item_local.quality.lower() or "espa" in item_local.quality.lower() or "cast" in item_local.quality.lower() or "spani" in item_local.quality.lower()): + item_local.language[0:0] = ["DUAL"] + if ("[es-" in item_local.quality.lower() or (("cast" in item_local.quality.lower() or "espa" in item_local.quality.lower() or "spani" in item_local.quality.lower()) and ("eng" in item_local.quality.lower() or "ing" in item_local.quality.lower()))) and "DUAL" not in item_local.language: #Mirar si es DUAL + item_local.language[0:0] = ["DUAL"] #Salvar DUAL en idioma item_local.quality = re.sub(r'\[[es|ES]-\w+]', '', item_local.quality) #borrar DUAL item_local.quality = re.sub(r'[\s|-][c|C]aste.+', '', item_local.quality) #Borrar después de Castellano item_local.quality = re.sub(r'[\s|-][e|E]spa.+', '', item_local.quality) #Borrar después de Español @@ -735,9 +728,7 @@ def listado_busqueda(item): item_local.quality = re.sub(r'[\s|-][i|I|e|E]ngl.+', '', item_local.quality) #Borrar después de Inglés-English item_local.quality = item_local.quality.replace("[", "").replace("]", " ").replace("ALTA DEFINICION", "HDTV").replace(" Cap", "") #Borrar palabras innecesarias restantes - item_local.quality = item_local.quality.replace("Espaol", "").replace("Español", "").replace("Espa", "").replace("Castellano ", "").replace("Castellano", "").replace("Spanish", "").replace("English", "").replace("Ingles", "").replace("Latino", "").replace("+Subs", "").replace("-Subs", "").replace("Subs", "").replace("VOSE", "").replace("VOS", "") - while item_local.quality.endswith(" "): #Borrar espacios de cola - item_local.quality = item_local.quality[:-1] + item_local.quality = item_local.quality.replace("Espaol", "").replace("Español", "").replace("Espa", "").replace("Castellano ", "").replace("Castellano", "").replace("Spanish", "").replace("English", "").replace("Ingles", "").replace("Latino", "").replace("+Subs", "").replace("-Subs", "").replace("Subs", "").replace("VOSE", "").replace("VOS", "").strip() #Limpieza final del título y guardado en las variables según su tipo de contenido item_local.title = title @@ -816,7 +807,7 @@ def listado_busqueda(item): #Agrega el item local a la lista itemlist itemlist.append(item_local.clone()) - if not category: #Si este campo no existe es que viene de la primera pasada de una búsqueda global + if not item.category: #Si este campo no existe es que viene de la primera pasada de una búsqueda global return itemlist #Retornamos sin pasar por la fase de maquillaje para ahorra tiempo #Pasamos a TMDB la lista completa Itemlist @@ -872,12 +863,12 @@ def listado_busqueda(item): if config.get_setting("unify"): #Si Titulos Inteligentes SÍ seleccionados: title = title.replace("[", "-").replace("]", "-") - title = title.replace("--", "").replace(" []", "").replace("()", "").replace("(/)", "").replace("[/]", "") - title = re.sub(r'\s\[COLOR \w+\]\[\]\[\/COLOR\]', '', title) - title = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', title) + title = title.replace("--", "").replace(" []", "").replace("()", "").replace("(/)", "").replace("[/]", "").strip() + title = re.sub(r'\s\[COLOR \w+\]\[\[?\]?\]\[\/COLOR\]', '', title).strip() + title = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', title).strip() item_local.title = title - logger.debug("url: " + item_local.url + " / title: " + item_local.title + " / content title: " + item_local.contentTitle + "/" + item_local.contentSerieName + " / calidad: " + item_local.quality + "[" + str(item_local.language) + "]" + " / calidad ORG: " + calidad + " / year: " + year + " / tamaño: " + size) + logger.debug("url: " + item_local.url + " / title: " + item_local.title + " / content title: " + item_local.contentTitle + "/" + item_local.contentSerieName + " / calidad: " + item_local.quality + "[" + str(item_local.language) + "]" + " / year: " + str(item_local.infoLabels['year'])) #logger.debug(item_local) @@ -889,7 +880,6 @@ def listado_busqueda(item): return itemlist def findvideos(item): - import xbmc from core import channeltools logger.info() itemlist = [] @@ -997,18 +987,31 @@ def findvideos(item): verificar_enlaces_descargas = -1 #Verificar todos los enlaces Descargar verificar_enlaces_descargas_validos = True #"¿Contar sólo enlaces 'verificados' en Descargar?" excluir_enlaces_descargas = [] #Lista vacía de servidores excluidos en Descargar - + # Saber si estamos en una ventana emergente lanzada desde una viñeta del menú principal, # con la función "play_from_library" unify_status = False - if xbmc.getCondVisibility('Window.IsMedia') == 1: + try: + import xbmc + if xbmc.getCondVisibility('Window.IsMedia') == 1: + unify_status = config.get_setting("unify") + except: unify_status = config.get_setting("unify") + #Salvamos la información de max num. de episodios por temporada para despues de TMDB + if item.infoLabels['temporada_num_episodios']: + num_episodios = item.infoLabels['temporada_num_episodios'] + else: + num_episodios = 1 + # Obtener la información actualizada del Episodio, si no la hay if not item.infoLabels['tmdb_id'] or (not item.infoLabels['episodio_titulo'] and item.contentType == 'episode'): tmdb.set_infoLabels(item, True) elif (not item.infoLabels['tvdb_id'] and item.contentType == 'episode') or item.contentChannel == "videolibrary": tmdb.set_infoLabels(item, True) + #Restauramos la información de max num. de episodios por temporada despues de TMDB + if item.infoLabels['temporada_num_episodios'] and num_episodios > item.infoLabels['temporada_num_episodios']: + item.infoLabels['temporada_num_episodios'] = num_episodios # Descarga la página data = re.sub(r"\n|\r|\t|\s{2}|()", "", httptools.downloadpage(item.url).data) @@ -1028,6 +1031,8 @@ def findvideos(item): item.infoLabels['episodio_titulo'] = re.sub(r'\s?\[.*?\]', '', item.infoLabels['episodio_titulo']) if item.infoLabels['episodio_titulo'] == item.contentSerieName: item.infoLabels['episodio_titulo'] = '' + if item.infoLabels['aired'] and item.contentType == "episode": + item.infoLabels['year'] = scrapertools.find_single_match(str(item.infoLabels['aired']), r'\/(\d{4})') #Generamos una copia de Item para trabajar sobre ella item_local = item.clone() @@ -1057,10 +1062,10 @@ def findvideos(item): else: title = item_local.title title_gen = title - - title_gen = re.sub(r'\s\[COLOR \w+\]\[\]\[\/COLOR\]', '', title_gen) #Quitamos etiquetas vacías - title_gen = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', title_gen) #Quitamos colores vacíos - title_gen = title_gen.replace(" []", "") #Quitamos etiquetas vacías + + title_gen = re.sub(r'\s\[COLOR \w+\]\[\[?\]?\]\[\/COLOR\]', '', title_gen).strip() #Quitamos etiquetas vacías + title_gen = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', title_gen).strip() #Quitamos colores vacíos + title_gen = title_gen.replace(" []", "").strip() #Quitamos etiquetas vacías if not unify_status: #Si Titulos Inteligentes NO seleccionados: title_gen = '**- [COLOR gold]Enlaces Ver: [/COLOR]%s[COLOR gold] -**[/COLOR]' % (title_gen) @@ -1074,9 +1079,9 @@ def findvideos(item): #Ahora pintamos el link del Torrent, si lo hay if item_local.url: # Hay Torrent ? - item_local.title = '[COLOR yellow][?][/COLOR] [COLOR yellow][Torrent][/COLOR] [COLOR limegreen][%s][/COLOR] [COLOR red][%s][/COLOR]' % (item_local.quality, str(item_local.language)) #Preparamos título de Torrent - item_local.title = re.sub(r'\s\[COLOR \w+\]\[\]\[\/COLOR\]', '', item_local.title) #Quitamos etiquetas vacías - item_local.title = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', item_local.title) #Quitamos colores vacíos + item_local.title = '[COLOR yellow][?][/COLOR] [COLOR yellow][Torrent][/COLOR] [COLOR limegreen][%s][/COLOR] [COLOR red]%s[/COLOR]' % (item_local.quality, str(item_local.language)) #Preparamos título de Torrent + item_local.title = re.sub(r'\s\[COLOR \w+\]\[\[?\]?\]\[\/COLOR\]', '', item_local.title).strip() #Quitamos etiquetas vacías + item_local.title = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', item_local.title).strip() #Quitamos colores vacíos item_local.alive = "??" #Calidad del link sin verificar item_local.action = "play" #Visualizar vídeo @@ -1156,9 +1161,9 @@ def findvideos(item): item_local.action = "play" item_local.server = servidor item_local.url = enlace - item_local.title = item_local.title.replace("[]", "") - item_local.title = re.sub(r'\s\[COLOR \w+\]\[\]\[\/COLOR\]', '', item_local.title) - item_local.title = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', item_local.title) + item_local.title = item_local.title.replace("[]", "").strip() + item_local.title = re.sub(r'\s\[COLOR \w+\]\[\[?\]?\]\[\/COLOR\]', '', item_local.title).strip() + item_local.title = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', item_local.title).strip() itemlist.append(item_local.clone()) except: pass @@ -1249,9 +1254,9 @@ def findvideos(item): item_local.action = "play" item_local.server = servidor item_local.url = enlace - item_local.title = parte_title.replace("[]", "") - item_local.title = re.sub(r'\[COLOR \w+\]\[\]\[\/COLOR\]', '', item_local.title) - item_local.title = re.sub(r'\[COLOR \w+\]-\[\/COLOR\]', '', item_local.title) + item_local.title = parte_title.replace("[]", "").strip() + item_local.title = re.sub(r'\s\[COLOR \w+\]\[\[?\]?\]\[\/COLOR\]', '', item_local.title).strip() + item_local.title = re.sub(r'\[COLOR \w+\]-\[\/COLOR\]', '', item_local.title).strip() itemlist.append(item_local.clone()) except: pass @@ -1426,10 +1431,10 @@ def episodios(item): item_local.title = '%s [%s] [%s] [COLOR limegreen][%s][/COLOR] [COLOR red]%s[/COLOR]' % (item_local.title, item_local.infoLabels['year'], rating, item_local.quality, str(item_local.language)) #Quitamos campos vacíos - item_local.infoLabels['episodio_titulo'] = item_local.infoLabels['episodio_titulo'].replace(" []", "") - item_local.title = item_local.title.replace(" []", "") - item_local.title = re.sub(r'\s\[COLOR \w+\]\[\]\[\/COLOR\]', '', item_local.title) - item_local.title = re.sub(r'\s\[COLOR \w+\]-\[\/COLOR\]', '', item_local.title) + item_local.infoLabels['episodio_titulo'] = item_local.infoLabels['episodio_titulo'].replace(" []", "").strip() + item_local.title = item_local.title.replace(" []", "").strip() + item_local.title = re.sub(r'\s\[COLOR \w+\]\[\[?\]?\]\[\/COLOR\]', '', item_local.title).strip() + item_local.title = re.sub(r'\s\[COLOR \w+\]-\[\/COLOR\]', '', item_local.title).strip() if num_episodios < item_local.contentEpisodeNumber: num_episodios = item_local.contentEpisodeNumber if num_episodios and not item_local.infoLabels['temporada_num_episodios']: diff --git a/plugin.video.alfa/channels/mejortorrent.py b/plugin.video.alfa/channels/mejortorrent.py index 0fece7f2..71ec2212 100755 --- a/plugin.video.alfa/channels/mejortorrent.py +++ b/plugin.video.alfa/channels/mejortorrent.py @@ -198,10 +198,19 @@ def listado(item): # Se limpian algunas etiquetas del item inical. for scrapedurl, scrapedthumbnail in matches: item_local = item.clone() - if item_local.tipo: - del item_local.tipo + item_local.tipo = True + del item_local.tipo if item_local.totalItems: del item_local.totalItems + if item_local.modo: + del item_local.modo + if item_local.next_page: + del item_local.next_page + item_local.pag = True + del item_local.pag + if item_local.text_color: + del item_local.text_color + item_local.title = '' item_local.context = "['buscar_trailer']" @@ -271,7 +280,7 @@ def listado(item): #logger.debug(matches) cnt = 0 for scrapedtitle, notused, scrapedinfo in matches: - item_local = itemlist[cnt] # Vinculamos item_local con la entrada de la lista itemlist (más fácil de leer) + item_local = itemlist[cnt] #Vinculamos item_local con la entrada de la lista itemlist (más fácil de leer) # Limpiamos títulos, Sacamos datos de calidad, audio y lenguaje scrapedtitle = re.sub('\r\n', '', scrapedtitle).decode('iso-8859-1').encode('utf8').strip() @@ -298,6 +307,9 @@ def listado(item): if "[dual" in title.lower(): title_subs = "[Dual]" title = title = re.sub(r'\[D|dual.*?\]', '', title) + if scrapertools.find_single_match(title, r'-\s[m|M].*?serie'): + title = re.sub(r'-\s[m|M].*?serie', '', title) + title_subs += "[Miniserie]" if title.endswith('.'): title = title[:-1] @@ -320,6 +332,7 @@ def listado(item): if not item_local.contentSerieName: item_local.contentSerieName = title item_local.infoLabels['tvshowtitle'] = item_local.contentSerieName + item_local.infoLabels['title'] = '' if not item_local.contentSerieName: item_local.contentSerieName = "dummy" @@ -339,9 +352,7 @@ def listado(item): if "4k" in title.lower() or "hdr" in title.lower(): item_local.quality = "4K" title = title.replace("4k-hdr", "").replace("4K-HDR", "").replace("hdr", "").replace("HDR", "").replace("4k", "").replace("4K", "") - title = title.replace("(", "").replace(")", "").replace("[", "").replace("]", "") - if title.endswith(' '): - title = title[:-1] + title = title.replace("(", "").replace(")", "").replace("[", "").replace("]", "").strip() item_local.title = title if item_local.extra == "peliculas": @@ -363,18 +374,22 @@ def listado(item): # Guardamos temporalmente info extra, si lo hay item_local.extra = item_local.extra + title_subs + #Salvamos y borramos el número de temporadas porque TMDB a veces hace tonterias. Lo pasamos como serie completa + if item_local.contentSeason and (item_local.contentType == "season" or item_local.contentType == "tvshow"): + item_local.SeasonBackup = item_local.contentSeason + del item_local.infoLabels['season'] + #logger.debug(item_local) - #Llamamos a TMDB para que complete InfoLabels desde item_local. No se hace desde itemlist porque mezcla bufferes - try: - #if "(" in title or "[" in title: #Usado para test de limpieza de títulos - # logger.debug(title) - tmdb.set_infoLabels(item_local, seekTmdb = True) - except: - logger.debug("TMDB ERROR: ") - logger.debug(item_local) + cnt += 1 + if cnt == len(itemlist): + break + + #Llamamos a TMDB para que complete InfoLabels + tmdb.set_infoLabels(itemlist, seekTmdb = True) - # Pasada para maqullaje de los títulos obtenidos desde TMDB + # Pasada para maqullaje de los títulos obtenidos desde TMDB + for item_local in itemlist: title = item_local.title title_subs = "" temporada = "" @@ -408,14 +423,14 @@ def listado(item): if not config.get_setting("unify"): #Si Titulos Inteligentes NO seleccionados: if item_local.contentType == "episode": if item_local.infoLabels['episodio_titulo']: - title = '%sx%s %s, %s [%s][%s][%s]' % (str(item_local.contentSeason), item_local.contentEpisodeNumber, item_local.infoLabels['episodio_titulo'], item_local.contentSerieName, scrapertools.find_single_match(str(item_local.infoLabels['aired']), r'\/(\d{4})'), item_local.quality, str(item_local.language)) + title = '%sx%s %s, %s [COLOR yellow][%s][/COLOR] [%s] [COLOR limegreen][%s][/COLOR] [COLOR red]%s[/COLOR]' % (str(item_local.SeasonBackup), str(item_local.contentEpisodeNumber).zfill(2), item_local.infoLabels['episodio_titulo'], item_local.contentSerieName, scrapertools.find_single_match(str(item_local.infoLabels['aired']), r'\/(\d{4})'), rating, item_local.quality, str(item_local.language)) else: - title = '%sx%s %s [%s][%s][%s]' % (str(item_local.contentSeason), item_local.contentEpisodeNumber, item_local.contentSerieName, scrapertools.find_single_match(str(item_local.infoLabels['aired']), r'\/(\d{4})'), item_local.quality, str(item_local.language)) + title = '%sx%s %s [COLOR yellow][%s][/COLOR] [%s] [COLOR limegreen][%s][/COLOR] [COLOR red]%s[/COLOR]' % (str(item_local.SeasonBackup), str(item_local.contentEpisodeNumber).zfill(2), item_local.contentSerieName, scrapertools.find_single_match(str(item_local.infoLabels['aired']), r'\/(\d{4})'), rating, item_local.quality, str(item_local.language)) item_local.infoLabels['title'] = item_local.contentSerieName elif item_local.contentType == "season" or item_local.contentType == "tvshow": if item_local.extra == "series" or temporada == "[Temp.]": - title = '%s - Temporada %s [COLOR yellow][%s][/COLOR] [%s] [COLOR limegreen][%s][/COLOR] [COLOR red]%s[/COLOR]' % (item_local.contentSerieName, str(item_local.contentSeason), scrapertools.find_single_match(str(item_local.infoLabels['aired']), r'\/(\d{4})'), rating, item_local.quality, str(item_local.language)) + title = '%s - Temporada %s [COLOR yellow][%s][/COLOR] [%s] [COLOR limegreen][%s][/COLOR] [COLOR red]%s[/COLOR]' % (item_local.contentSerieName, str(item_local.SeasonBackup), scrapertools.find_single_match(str(item_local.infoLabels['aired']), r'\/(\d{4})'), rating, item_local.quality, str(item_local.language)) else: title = '%s [COLOR yellow][%s][/COLOR] [%s] [COLOR limegreen][%s][/COLOR] [COLOR red]%s[/COLOR]' % (item_local.contentSerieName, scrapertools.find_single_match(str(item_local.infoLabels['aired']), r'\/(\d{4})'), rating, item_local.quality, str(item_local.language)) @@ -432,23 +447,22 @@ def listado(item): elif item_local.contentType == "season" or item_local.contentType == "tvshow": if item_local.extra == "series" or temporada == "[Temp.]": - title = '%s - Temporada %s -%s-' % (item_local.contentSerieName, item_local.contentSeason, scrapertools.find_single_match(str(item_local.infoLabels['aired']), r'\/(\d{4})')) + title = '%s - Temporada %s' % (item_local.contentSerieName, item_local.SeasonBackup) else: - title = '%s -%s-' % (item_local.contentSerieName, scrapertools.find_single_match(str(item_local.infoLabels['aired']), r'\/(\d{4})')) + title = '%s' % (item_local.contentSerieName) title_subs = title_subs.replace("[", "-").replace("]", "-") + if item_local.SeasonBackup: + del item_local.SeasonBackup + item_local.infoLabels['episodio_titulo'] = item_local.infoLabels['episodio_titulo'].replace("--", "").replace(" []", "").replace("()", "").replace("(/)", "").replace("[/]", "") title = title.replace("--", "").replace(" []", "").replace("()", "").replace("(/)", "").replace("[/]", "") - title = re.sub(r'\s\[COLOR \w+\]\[\]\[\/COLOR\]', '', title) + title = re.sub(r'\s\[COLOR \w+\]\[\[?\]?\]\[\/COLOR\]', '', title) title = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', title) item_local.title = title + title_subs item_local.contentTitle += title_subs #añadimos info adicional para display #logger.debug(item_local) - - cnt += 1 - if cnt == len(itemlist): - break - + if len(itemlist) == 0: itemlist.append(Item(channel=item.channel, action="mainlist", title="No se ha podido cargar el listado")) else: @@ -537,10 +551,12 @@ def listado_busqueda(item): if item_local.category: category = item.category del item_local.category - if item_local.tipo: - del item_local.tipo + item_local.tipo = True + del item_local.tipo if item_local.totalItems: del item_local.totalItems + if item_local.text_color: + del item_local.text_color item_local.contentThumbnail = '' item_local.thumbnail = '' item_local.context = "['buscar_trailer']" @@ -574,6 +590,9 @@ def listado_busqueda(item): if "[Dual" in title or "[dual" in title: title_subs = "[Dual]" title = title = re.sub(r'\[[D|d]ual.*?\]', '', title) + if scrapertools.find_single_match(title, r'-\s[m|M].*?serie'): + title = re.sub(r'-\s[m|M].*?serie', '', title) + title_subs += "[Miniserie]" if title.endswith('.'): title = title[:-1] @@ -608,6 +627,7 @@ def listado_busqueda(item): title = item_local.contentSerieName item_local.title = title item_local.infoLabels['tvshowtitle'] = item_local.contentSerieName + item_local.infoLabels['title'] = '' if not item_local.contentSerieName: item_local.contentSerieName = "dummy" item_local.contentSeason = scrapertools.find_single_match(scrapedurl, '.*?-(\d{1,2})-Temp.*?\.html') @@ -628,9 +648,7 @@ def listado_busqueda(item): if "4K" in title or "4k" in title or "HDR" in title or "hdr" in title: item_local.quality = "4K" title = title.replace("4k-hdr", "").replace("4K-HDR", "").replace("hdr", "").replace("HDR", "").replace("4k", "").replace("4K", "") - title = title.replace("(", "").replace(")", "").replace("[", "").replace("]", "") - if title.endswith(' '): - title = title[:-1] + title = title.replace("(", "").replace(")", "").replace("[", "").replace("]", "").strip() item_local.title = title if "/peli-" in scrapedurl: @@ -651,13 +669,18 @@ def listado_busqueda(item): # Guardamos temporalmente info de subtítulos, si lo hay item_local.extra = item_local.extra + title_subs + #Salvamos y borramos el número de temporadas porque TMDB a veces hace tonterias. Lo pasamos como serie completa + if item_local.contentSeason and (item_local.contentType == "season" or item_local.contentType == "tvshow"): + item_local.SeasonBackup = item_local.contentSeason + del item_local.infoLabels['season'] + itemlist.append(item_local.clone()) #logger.debug(item_local) if not category: #Si este campo no existe es que viene de la primera pasada de una búsqueda global return itemlist #Retornamos sin pasar por la fase de maquillaje para ahorra tiempo - + #Llamamos a TMDB para que complete InfoLabels desde itemlist. Mejor desde itemlist porque envía las queries en paralelo tmdb.set_infoLabels(itemlist, seekTmdb = True) @@ -692,7 +715,7 @@ def listado_busqueda(item): if not config.get_setting("unify"): #Si Titulos Inteligentes NO seleccionados: if item_local.contentType == "season" or item_local.contentType == "tvshow": if item_local.extra == "series" or temporada == "[Temp.]": - title = '%s - Temporada %s [COLOR yellow][%s][/COLOR] [%s] [COLOR limegreen][%s][/COLOR] [COLOR red]%s[/COLOR]' % (item_local.contentSerieName, str(item_local.contentSeason), scrapertools.find_single_match(str(item_local.infoLabels['aired']), r'\/(\d{4})'), rating, item_local.quality, str(item_local.language)) + title = '%s - Temporada %s [COLOR yellow][%s][/COLOR] [%s] [COLOR limegreen][%s][/COLOR] [COLOR red]%s[/COLOR]' % (item_local.contentSerieName, str(item_local.SeasonBackup), scrapertools.find_single_match(str(item_local.infoLabels['aired']), r'\/(\d{4})'), rating, item_local.quality, str(item_local.language)) else: title = '%s [COLOR yellow][%s][/COLOR] [%s] [COLOR limegreen][%s][/COLOR] [COLOR red]%s[/COLOR]' % (item_local.contentSerieName, scrapertools.find_single_match(str(item_local.infoLabels['aired']), r'\/(\d{4})'), rating, item_local.quality, str(item_local.language)) @@ -702,13 +725,16 @@ def listado_busqueda(item): if config.get_setting("unify"): #Si Titulos Inteligentes SÍ seleccionados: if item_local.contentType == "season" or item_local.contentType == "tvshow": if item_local.extra == "series" or temporada == "[Temp.]": - title = '%s - Temporada %s -%s-' % (item_local.contentSerieName, item_local.contentSeason, scrapertools.find_single_match(str(item_local.infoLabels['aired']), r'\/(\d{4})')) + title = '%s - Temporada %s' % (item_local.contentSerieName, item_local.SeasonBackup) else: - title = '%s -%s-' % (item_local.contentSerieName, scrapertools.find_single_match(str(item_local.infoLabels['aired']), r'\/(\d{4})')) + title = '%s' % (item_local.contentSerieName) title_subs = title_subs.replace("[", "-").replace("]", "-") + if item_local.SeasonBackup: + del item_local.SeasonBackup + item_local.infoLabels['episodio_titulo'] = item_local.infoLabels['episodio_titulo'].replace("--", "").replace(" []", "").replace("()", "").replace("(/)", "").replace("[/]", "") title = title.replace("--", "").replace(" []", "").replace("()", "").replace("(/)", "").replace("[/]", "") - title = re.sub(r'\s\[COLOR \w+\]\[\]\[\/COLOR\]', '', title) + title = re.sub(r'\s\[COLOR \w+\]\[\[?\]?\]\[\/COLOR\]', '', title) title = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', title) item_local.title = title + title_subs item_local.contentTitle += title_subs #añadimos info adicional para display @@ -718,29 +744,41 @@ def listado_busqueda(item): if url_next_page: itemlist.append( - Item(channel=item.channel, action="listado_busqueda", title="[COLOR gold][B]Pagina siguiente >>[/B][/COLOR]", url=url_next_page, next_page=next_page, cnt_pag=cnt_pag, pag=pag, modo=modo, extra=item.extra, tipo=item.tipo)) + Item(channel=item.channel, action="listado_busqueda", title="[COLOR gold][B]Pagina siguiente >>[/B][/COLOR]", url=url_next_page, next_page=next_page, cnt_pag=cnt_pag, pag=pag, modo=modo, extra=item.extra)) - #logger.debug(url_next_page + " / " + next_page + " / " + str(matches_cnt) + " / " + str(cnt_pag) + " / " + str(pag) + " / " + modo + " / " + item.extra + " / " + str(item.tipo)) + #logger.debug(url_next_page + " / " + next_page + " / " + str(matches_cnt) + " / " + str(cnt_pag) + " / " + str(pag) + " / " + modo + " / " + item.extra )) return itemlist def findvideos(item): - import xbmc logger.info() itemlist = [] # Saber si estamos en una ventana emergente lanzada desde una viñeta del menú principal, # con la función "play_from_library" unify_status = False - if xbmc.getCondVisibility('Window.IsMedia') == 1: + try: + import xbmc + if xbmc.getCondVisibility('Window.IsMedia') == 1: + unify_status = config.get_setting("unify") + except: unify_status = config.get_setting("unify") + #Salvamos la información de max num. de episodios por temporada para despues de TMDB + if item.infoLabels['temporada_num_episodios']: + num_episodios = item.infoLabels['temporada_num_episodios'] + else: + num_episodios = 1 + # Obtener la información actualizada del Episodio, si no la hay if not item.infoLabels['tmdb_id'] or (not item.infoLabels['episodio_titulo'] and item.contentType == 'episode'): tmdb.set_infoLabels(item, True) elif (not item.infoLabels['tvdb_id'] and item.contentType == 'episode') or item.contentChannel == "videolibrary": tmdb.set_infoLabels(item, True) + #Restauramos la información de max num. de episodios por temporada despues de TMDB + if item.infoLabels['temporada_num_episodios'] and num_episodios > item.infoLabels['temporada_num_episodios']: + item.infoLabels['temporada_num_episodios'] = num_episodios if item.post: #Puede traer datos para una llamada "post". De momento usado para documentales, pero podrían ser series data = re.sub(r"\n|\r|\t|\s{2}|()", "", httptools.downloadpage(item.url, post=item.post).data) @@ -774,11 +812,13 @@ def findvideos(item): item_local.action = "" item_local.server = "torrent" - #Limpiamos de año y rating de episodios + #Limpiamos de año y rating de episodios, usamos el año del episodio en vez del de la serie if item_local.infoLabels['episodio_titulo']: item_local.infoLabels['episodio_titulo'] = re.sub(r'\s?\[.*?\]', '', item_local.infoLabels['episodio_titulo']) if item_local.infoLabels['episodio_titulo'] == item_local.contentSerieName: item_local.infoLabels['episodio_titulo'] = '' + if item_local.infoLabels['aired'] and item_local.contentType == "episode": + item_local.infoLabels['year'] = scrapertools.find_single_match(str(item_local.infoLabels['aired']), r'\/(\d{4})') rating = '' #Ponemos el rating if item_local.infoLabels['rating'] and item_local.infoLabels['rating'] != '0.0': @@ -809,9 +849,9 @@ def findvideos(item): title = item_local.title title_gen = title - title_gen = re.sub(r'\s\[COLOR \w+\]\[\]\[\/COLOR\]', '', title_gen) #Quitamos etiquetas vacías - title_gen = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', title_gen) #Quitamos colores vacíos - title_gen = title_gen.replace(" []", "") #Quitamos etiquetas vacías + title_gen = re.sub(r'\s\[COLOR \w+\]\[\[?\]?\]\[\/COLOR\]', '', title_gen) #Quitamos etiquetas vacías + title_gen = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', title_gen) #Quitamos colores vacíos + title_gen = title_gen.replace(" []", "") #Quitamos etiquetas vacías if not unify_status: #Si Titulos Inteligentes NO seleccionados: title_gen = '**- [COLOR gold]Enlaces Ver: [/COLOR]%s[COLOR gold] -**[/COLOR]' % (title_gen) @@ -826,8 +866,8 @@ def findvideos(item): #Ahora pintamos el link del Torrent, si lo hay if item_local.url: # Hay Torrent ? item_local.title = '[COLOR yellow][?][/COLOR] [COLOR yellow][Torrent][/COLOR] [COLOR limegreen][%s][/COLOR] [COLOR red]%s[/COLOR]' % (item_local.quality, str(item_local.language)) #Preparamos título de Torrent - item_local.title = re.sub(r'\s\[COLOR \w+\]\[\]\[\/COLOR\]', '', item_local.title) #Quitamos etiquetas vacías - item_local.title = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', item_local.title) #Quitamos colores vacíos + item_local.title = re.sub(r'\s\[COLOR \w+\]\[\[?\]?\]\[\/COLOR\]', '', item_local.title) #Quitamos etiquetas vacías + item_local.title = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', item_local.title) #Quitamos colores vacíos item_local.alive = "??" #Calidad del link sin verificar item_local.action = "play" #Visualizar vídeo @@ -874,7 +914,7 @@ def episodios(item): item_local = item.clone() item_local.action = "findvideos" item_local.contentType = "episode" - item_local.infoLabels['title'] = '' + item_local.extra = "episodios" item_local.url = urlparse.urljoin(host, scrapedurl) @@ -889,7 +929,11 @@ def episodios(item): title = scrapedtitle.lower() epi = title.split("x") if len(epi) > 1: - #temporada = re.sub("\D", "", epi[0]) + temporada = re.sub("\D", "", epi[0]) + if temporada: + item_local.contentSeason = temporada + else: + item_local.contentSeason = 1 capitulo = re.search("\d+", epi[1]) if capitulo: item_local.contentEpisodeNumber = capitulo.group() @@ -897,6 +941,7 @@ def episodios(item): item_local.contentEpisodeNumber = 1 else: #Se prepara el Post para documentales + item_local.contentSeason = 1 item_local.contentEpisodeNumber = 1 item_local.url = host + "/secciones.php?sec=descargas&ap=contar_varios" item_local.post = urllib.urlencode({name: value, "total_capis": total_capis, "tabla": tabla, "titulo": titulo_post}) @@ -957,12 +1002,12 @@ def episodios(item): item_local.infoLabels['episodio_titulo'] = '%s [%s] [%s]' % (item_local.contentSerieName, item_local.infoLabels['year'], rating) item_local.infoLabels['title'] = item_local.infoLabels['episodio_titulo'] - item_local.title = '%s [COLOR yellow][%s][/COLOR] [%s] [COLOR limegreen][%s][/COLOR] [COLOR red][%s][/COLOR]' % (item_local.title, item_local.infoLabels['year'], rating, item_local.quality, str(item_local.language)) + item_local.title = '%s [COLOR yellow][%s][/COLOR] [%s] [COLOR limegreen][%s][/COLOR] [COLOR red]%s[/COLOR]' % (item_local.title, item_local.infoLabels['year'], rating, item_local.quality, str(item_local.language)) #Quitamos campos vacíos item_local.infoLabels['episodio_titulo'] = item_local.infoLabels['episodio_titulo'].replace(" []", "") item_local.title = item_local.title.replace(" []", "") - item_local.title = re.sub(r'\s\[COLOR \w+\]\[\]\[\/COLOR\]', '', item_local.title) + item_local.title = re.sub(r'\s\[COLOR \w+\]\[\[?\]?\]\[\/COLOR\]', '', item_local.title) item_local.title = re.sub(r'\s\[COLOR \w+\]-\[\/COLOR\]', '', item_local.title) if num_episodios < item_local.contentEpisodeNumber: num_episodios = item_local.contentEpisodeNumber diff --git a/plugin.video.alfa/channels/mispelisyseries.py b/plugin.video.alfa/channels/mispelisyseries.py index 6a0c5b93..76e2c44e 100644 --- a/plugin.video.alfa/channels/mispelisyseries.py +++ b/plugin.video.alfa/channels/mispelisyseries.py @@ -236,7 +236,7 @@ def listado(item): #Determinamos y marcamos idiomas distintos del castellano item_local.language = [] - if "[vos" in title.lower() or "v.o.s" in title.lower() or "vo" in title.lower() or ".com/pelicula/" in scrapedurl or ".com/series-vo" in scrapedurl or "-vo/" in scrapedurl or "vos" in calidad.lower() or "vose" in calidad.lower() or "v.o.s" in calidad.lower() or ".com/peliculas-vo" in item.url: + if "[vos" in title.lower() or "v.o.s" in title.lower() or "vo" in title.lower() or ".com/pelicula/" in scrapedurl or ".com/series-vo" in scrapedurl or "-vo/" in scrapedurl or "vos" in calidad.lower() or "vose" in calidad.lower() or "v.o.s" in calidad.lower() or "sub" in calidad.lower() or ".com/peliculas-vo" in item.url: item_local.language += ["VOS"] title = title.replace(" [Subs. integrados]", "").replace(" [subs. Integrados]", "").replace(" [VOSE", "").replace(" [VOS", "").replace(" (V.O.S.E)", "").replace(" VO", "").replace("Subtitulos", "") if "latino" in title.lower() or "argentina" in title.lower() or "-latino/" in scrapedurl or "latino" in calidad.lower() or "argentina" in calidad.lower(): @@ -272,8 +272,8 @@ def listado(item): if "audio" in title.lower(): #Reservamos info de audio para después de TMDB title_subs += ['[%s]' % scrapertools.find_single_match(title, r'(\[[a|A]udio.*?\])')] title = re.sub(r'\[[a|A]udio.*?\]', '', title) - if "[dual" in title.lower() or "multileng" in title.lower() or "multileng" in item_local.quality.lower(): - item_local.language += ["DUAL"] + if "[dual" in title.lower() or "multileng" in title.lower() or "multileng" in item_local.quality.lower() or (("espa" in title.lower() or "spani" in title.lower()) and "VOS" in item_local.language): + item_local.language[0:0] = ["DUAL"] title = re.sub(r'\[[D|d]ual.*?\]', '', title) title = re.sub(r'\[[M|m]ultileng.*?\]', '', title) item_local.quality = re.sub(r'\[[M|m]ultileng.*?\]', '', item_local.quality) @@ -309,7 +309,7 @@ def listado(item): title = title.replace("Ver online ", "").replace("Descarga Serie HD ", "").replace("Descargar Serie HD ", "").replace("Descarga Serie ", "").replace("Descargar Serie ", "").replace("Ver en linea ", "").replace("Ver en linea", "").replace("HD ", "").replace("(Proper)", "").replace("RatDVD", "").replace("DVDRiP", "").replace("DVDRIP", "").replace("DVDR", "").replace("DVD9", "").replace("DVD", "").replace("DVB", "").replace("- ES ", "").replace("ES ", "").replace("COMPLETA", "").replace("(", "-").replace(")", "-").replace(".", " ").strip() - title = title.replace("Descargar torrent ", "").replace("Descarga Gratis ", "").replace("Descargar Estreno ", "").replace("Descargar Estrenos ", "").replace("Pelicula en latino ", "").replace("Descargar Pelicula ", "").replace("Descargar Peliculas ", "").replace("Descargar peliculas ", "").replace("Descargar Todas ", "").replace("Descargar Otras ", "").replace("Descargar ", "").replace("Descarga ", "").replace("Bajar ", "").replace("RIP ", "").replace("Rip", "").replace("RiP", "").replace("RiP", "").replace("XviD", "").replace("AC3 5.1", "").replace("AC3", "").replace("1080p ", "").replace("720p ", "").replace("DVD-Screener ", "").replace("TS-Screener ", "").replace("Screener ", "").replace("BdRemux ", "").replace("BR ", "").replace("4KULTRA", "").replace("FULLBluRay", "").replace("FullBluRay", "").replace("BluRay", "").replace("Bonus Disc", "").replace("de Cine ", "").replace("TeleCine ", "").replace("latino", "").replace("Latino", "").replace("argentina", "").replace("Argentina", "").strip() + title = title.replace("Descargar torrent ", "").replace("Descarga Gratis ", "").replace("Descargar Estreno ", "").replace("Descargar Estrenos ", "").replace("Pelicula en latino ", "").replace("Descargar Pelicula ", "").replace("Descargar Peliculas ", "").replace("Descargar peliculas ", "").replace("Descargar Todas ", "").replace("Descargar Otras ", "").replace("Descargar ", "").replace("Descarga ", "").replace("Bajar ", "").replace("HDRIP ", "").replace("HDRiP ", "").replace("HDRip ", "").replace("RIP ", "").replace("Rip", "").replace("RiP", "").replace("XviD", "").replace("AC3 5.1", "").replace("AC3", "").replace("1080p ", "").replace("720p ", "").replace("DVD-Screener ", "").replace("TS-Screener ", "").replace("Screener ", "").replace("BdRemux ", "").replace("BR ", "").replace("4KULTRA", "").replace("FULLBluRay", "").replace("FullBluRay", "").replace("BluRay", "").replace("Bonus Disc", "").replace("de Cine ", "").replace("TeleCine ", "").replace("latino", "").replace("Latino", "").replace("argentina", "").replace("Argentina", "").strip() if title.endswith("torrent gratis"): title = title[:-15] if title.endswith("gratis"): title = title[:-7] @@ -324,16 +324,9 @@ def listado(item): if not "HDR" in item_local.quality: item_local.quality += " HDR" - while title.endswith(' '): - title = title[:-1] - while title.startswith(' '): - title = title[+1:] - while title_alt.endswith(' '): - title_alt = title_alt[:-1] - while title_alt.startswith(' '): - title_alt = title_alt[+1:] - while item_local.quality.endswith(' '): - item_local.quality = item_local.quality[:-1] + title = title.strip() + title_alt = title_alt.strip() + item_local.quality = item_local.quality.strip() if not title: #Usamos solo el title_alt en caso de que no exista el título original title = title_alt @@ -416,9 +409,9 @@ def listado(item): if config.get_setting("unify"): #Si Titulos Inteligentes SÍ seleccionados: title = title.replace("[", "-").replace("]", "-") - title = title.replace("--", "").replace(" []", "").replace("()", "").replace("(/)", "").replace("[/]", "") - title = re.sub(r'\s\[COLOR \w+\]\[\]\[\/COLOR\]', '', title) - title = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', title) + title = title.replace("--", "").replace(" []", "").replace("()", "").replace("(/)", "").replace("[/]", "").strip() + title = re.sub(r'\s\[COLOR \w+\]\[\[?\]?\]\[\/COLOR\]', '', title).strip() + title = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', title).strip() if category == "newest": #Viene de Novedades. Marquemos el título con el nombre del canal title += ' -%s-' % item_local.channel.capitalize() @@ -427,7 +420,7 @@ def listado(item): item_local.title = title - logger.debug("url: " + item_local.url + " / title: " + item_local.title + " / content title: " + item_local.contentTitle + "/" + item_local.contentSerieName + " / calidad: " + item_local.quality + " / year: " + year) + logger.debug("url: " + item_local.url + " / title: " + item_local.title + " / content title: " + item_local.contentTitle + "/" + item_local.contentSerieName + " / calidad: " + item_local.quality + " / year: " + str(item_local.infoLabels['year'])) #logger.debug(item_local) if len(itemlist) == 0: @@ -447,15 +440,10 @@ def listado_busqueda(item): cnt_tot = 40 # Poner el num. máximo de items por página. Dejamos que la web lo controle cnt_title = 0 # Contador de líneas insertadas en Itemlist cnt_pag = 0 # Contador de líneas leídas de Matches - category = "" # Guarda la categoria que viene desde una busqueda global if item.cnt_pag: cnt_pag = item.cnt_pag # Se guarda en la lista de páginas anteriores en Item del item.cnt_pag - - if item.category: - category = item.category - del item.category if item.totalItems: del item.totalItems if item.text_bold: @@ -578,12 +566,14 @@ def listado_busqueda(item): title_lista += [scrapedurl_alt] else: title_lista += [scrapedurl] - if "juego/" in scrapedurl or "xbox" in scrapedurl.lower() or "xbox" in scrapedtitle.lower() or "xbox" in calidad.lower() or "epub" in calidad.lower() or "pdf" in calidad.lower(): # no mostramos lo que no sean videos + if "juego/" in scrapedurl or "xbox" in scrapedurl.lower() or "xbox" in scrapedtitle.lower() or "windows" in scrapedtitle.lower() or "windows" in calidad.lower() or "nintendo" in scrapedtitle.lower() or "xbox" in calidad.lower() or "epub" in calidad.lower() or "pdf" in calidad.lower() or "pcdvd" in calidad.lower() or "crack" in calidad.lower(): # no mostramos lo que no sean videos continue cnt_title += 1 # Sería una línea real más para Itemlist #Creamos una copia de Item para cada contenido item_local = item.clone() + if item_local.category: + del item_local.category if item_local.tipo: del item_local.tipo if item_local.totalItems: @@ -594,6 +584,10 @@ def listado_busqueda(item): del item_local.pattern if item_local.title_lista: del item_local.title_lista + item_local.adult = True + del item_local.adult + item_local.folder = True + del item_local.folder item_local.title = '' item_local.context = "['buscar_trailer']" @@ -620,7 +614,7 @@ def listado_busqueda(item): #Determinamos y marcamos idiomas distintos del castellano item_local.language = [] - if "[vos" in title.lower() or "v.o.s" in title.lower() or "vo" in title.lower() or ".com/pelicula/" in scrapedurl or ".com/series-vo" in scrapedurl or "-vo/" in scrapedurl or "vos" in calidad.lower() or "vose" in calidad.lower() or "v.o.s" in calidad.lower(): + if "[vos" in title.lower() or "v.o.s" in title.lower() or "vo" in title.lower() or ".com/pelicula/" in scrapedurl or ".com/series-vo" in scrapedurl or "-vo/" in scrapedurl or "vos" in calidad.lower() or "vose" in calidad.lower() or "v.o.s" in calidad.lower() or "sub" in calidad.lower() or ".com/peliculas-vo" in item.url: item_local.language += ["VOS"] title = title.replace(" [Subs. integrados]", "").replace(" [subs. Integrados]", "").replace(" [VOSE", "").replace(" [VOS", "").replace(" (V.O.S.E)", "").replace(" VO", "").replace("Subtitulos", "") if "latino" in title.lower() or "argentina" in title.lower() or "-latino/" in scrapedurl or "latino" in calidad.lower() or "argentina" in calidad.lower(): @@ -654,8 +648,8 @@ def listado_busqueda(item): if "audio" in title.lower(): #Reservamos info de audio para después de TMDB title_subs += ['[%s]' % scrapertools.find_single_match(title, r'(\[[a|A]udio.*?\])')] title = re.sub(r'\[[a|A]udio.*?\]', '', title) - if "[dual" in title.lower() or "multileng" in title.lower() or "multileng" in item_local.quality.lower(): - item_local.language += ["DUAL"] + if "[dual" in title.lower() or "multileng" in title.lower() or "multileng" in item_local.quality.lower() or (("espa" in title.lower() or "spani" in title.lower()) and "VOS" in item_local.language): + item_local.language[0:0] = ["DUAL"] title = re.sub(r'\[[D|d]ual.*?\]', '', title) title = re.sub(r'\[[M|m]ultileng.*?\]', '', title) item_local.quality = re.sub(r'\[[M|m]ultileng.*?\]', '', item_local.quality) @@ -691,7 +685,7 @@ def listado_busqueda(item): title = title.replace("Ver online ", "").replace("Descarga Serie HD ", "").replace("Descargar Serie HD ", "").replace("Descarga Serie ", "").replace("Descargar Serie ", "").replace("Ver en linea ", "").replace("Ver en linea", "").replace("HD ", "").replace("(Proper)", "").replace("RatDVD", "").replace("DVDRiP", "").replace("DVDRIP", "").replace("DVDR", "").replace("DVD9", "").replace("DVD", "").replace("DVB", "").replace("- ES ", "").replace("ES ", "").replace("COMPLETA", "").replace("(", "-").replace(")", "-").replace(".", " ").strip() - title = title.replace("Descargar torrent ", "").replace("Descarga Gratis ", "").replace("Descargar Estreno ", "").replace("Descargar Estrenos ", "").replace("Pelicula en latino ", "").replace("Descargar Pelicula ", "").replace("Descargar Peliculas ", "").replace("Descargar peliculas ", "").replace("Descargar Todas ", "").replace("Descargar Otras ", "").replace("Descargar ", "").replace("Descarga ", "").replace("Bajar ", "").replace("RIP ", "").replace("Rip", "").replace("RiP", "").replace("RiP", "").replace("XviD", "").replace("AC3 5.1", "").replace("AC3", "").replace("1080p ", "").replace("720p ", "").replace("DVD-Screener ", "").replace("TS-Screener ", "").replace("Screener ", "").replace("BdRemux ", "").replace("BR ", "").replace("4KULTRA", "").replace("FULLBluRay", "").replace("FullBluRay", "").replace("BluRay", "").replace("Bonus Disc", "").replace("de Cine ", "").replace("TeleCine ", "").replace("latino", "").replace("Latino", "").replace("argentina", "").replace("Argentina", "").strip() + title = title.replace("Descargar torrent ", "").replace("Descarga Gratis ", "").replace("Descargar Estreno ", "").replace("Descargar Estrenos ", "").replace("Pelicula en latino ", "").replace("Descargar Pelicula ", "").replace("Descargar Peliculas ", "").replace("Descargar peliculas ", "").replace("Descargar Todas ", "").replace("Descargar Otras ", "").replace("Descargar ", "").replace("Descarga ", "").replace("Bajar ", "").replace("HDRIP ", "").replace("HDRiP ", "").replace("HDRip ", "").replace("RIP ", "").replace("Rip", "").replace("RiP", "").replace("XviD", "").replace("AC3 5.1", "").replace("AC3", "").replace("1080p ", "").replace("720p ", "").replace("DVD-Screener ", "").replace("TS-Screener ", "").replace("Screener ", "").replace("BdRemux ", "").replace("BR ", "").replace("4KULTRA", "").replace("FULLBluRay", "").replace("FullBluRay", "").replace("BluRay", "").replace("Bonus Disc", "").replace("de Cine ", "").replace("TeleCine ", "").replace("latino", "").replace("Latino", "").replace("argentina", "").replace("Argentina", "").strip() if "pelisyseries.com" in host and item_local.contentType == "tvshow": titulo = '' @@ -715,19 +709,18 @@ def listado_busqueda(item): if title.endswith(" -"): title = title[:-2] if "en espa" in title: title = title[:-11] #title = re.sub(r'^\s', '', title) - title = title.replace("a?o", 'año').replace("a?O", 'año').replace("A?o", 'Año').replace("A?O", 'Año') - while title.startswith(' '): - title = title[+1:] - while title.endswith(' '): - title = title[:-1] + title = title.replace("a?o", 'año').replace("a?O", 'año').replace("A?o", 'Año').replace("A?O", 'Año').strip() #Preparamos calidad item_local.quality = item_local.quality.replace("[ ", "").replace(" ]", "") #Preparamos calidad para Series item_local.quality = re.sub(r'\[\d{4}\]', '', item_local.quality) #Quitar año, si lo tiene item_local.quality = re.sub(r'\[Cap.*?\]', '', item_local.quality) #Quitar episodios, si lo tiene item_local.quality = re.sub(r'\[Docu.*?\]', '', item_local.quality) #Quitar tipo contenidos, si lo tiene - if "[es-" in item_local.quality.lower() or (("cast" in item_local.quality.lower() or "spani" in item_local.quality.lower()) and ("eng" in item_local.quality.lower() or "ing" in item_local.quality.lower())): #Mirar si es DUAL - item_local.language += ["DUAL"] #Salvar DUAL en idioma + #Mirar si es DUAL + if "VOS" in item_local.language and "DUAL" not in item_local.language and ("[sp" in item_local.quality.lower() or "espa" in item_local.quality.lower() or "cast" in item_local.quality.lower() or "spani" in item_local.quality.lower()): + item_local.language[0:0] = ["DUAL"] + if ("[es-" in item_local.quality.lower() or (("cast" in item_local.quality.lower() or "espa" in item_local.quality.lower() or "spani" in item_local.quality.lower()) and ("eng" in item_local.quality.lower() or "ing" in item_local.quality.lower()))) and "DUAL" not in item_local.language: #Mirar si es DUAL + item_local.language[0:0] = ["DUAL"] #Salvar DUAL en idioma item_local.quality = re.sub(r'\[[es|ES]-\w+]', '', item_local.quality) #borrar DUAL item_local.quality = re.sub(r'[\s|-][c|C]aste.+', '', item_local.quality) #Borrar después de Castellano item_local.quality = re.sub(r'[\s|-][e|E]spa.+', '', item_local.quality) #Borrar después de Español @@ -735,9 +728,7 @@ def listado_busqueda(item): item_local.quality = re.sub(r'[\s|-][i|I|e|E]ngl.+', '', item_local.quality) #Borrar después de Inglés-English item_local.quality = item_local.quality.replace("[", "").replace("]", " ").replace("ALTA DEFINICION", "HDTV").replace(" Cap", "") #Borrar palabras innecesarias restantes - item_local.quality = item_local.quality.replace("Espaol", "").replace("Español", "").replace("Espa", "").replace("Castellano ", "").replace("Castellano", "").replace("Spanish", "").replace("English", "").replace("Ingles", "").replace("Latino", "").replace("+Subs", "").replace("-Subs", "").replace("Subs", "").replace("VOSE", "").replace("VOS", "") - while item_local.quality.endswith(" "): #Borrar espacios de cola - item_local.quality = item_local.quality[:-1] + item_local.quality = item_local.quality.replace("Espaol", "").replace("Español", "").replace("Espa", "").replace("Castellano ", "").replace("Castellano", "").replace("Spanish", "").replace("English", "").replace("Ingles", "").replace("Latino", "").replace("+Subs", "").replace("-Subs", "").replace("Subs", "").replace("VOSE", "").replace("VOS", "").strip() #Limpieza final del título y guardado en las variables según su tipo de contenido item_local.title = title @@ -816,7 +807,7 @@ def listado_busqueda(item): #Agrega el item local a la lista itemlist itemlist.append(item_local.clone()) - if not category: #Si este campo no existe es que viene de la primera pasada de una búsqueda global + if not item.category: #Si este campo no existe es que viene de la primera pasada de una búsqueda global return itemlist #Retornamos sin pasar por la fase de maquillaje para ahorra tiempo #Pasamos a TMDB la lista completa Itemlist @@ -872,12 +863,12 @@ def listado_busqueda(item): if config.get_setting("unify"): #Si Titulos Inteligentes SÍ seleccionados: title = title.replace("[", "-").replace("]", "-") - title = title.replace("--", "").replace(" []", "").replace("()", "").replace("(/)", "").replace("[/]", "") - title = re.sub(r'\s\[COLOR \w+\]\[\]\[\/COLOR\]', '', title) - title = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', title) + title = title.replace("--", "").replace(" []", "").replace("()", "").replace("(/)", "").replace("[/]", "").strip() + title = re.sub(r'\s\[COLOR \w+\]\[\[?\]?\]\[\/COLOR\]', '', title).strip() + title = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', title).strip() item_local.title = title - logger.debug("url: " + item_local.url + " / title: " + item_local.title + " / content title: " + item_local.contentTitle + "/" + item_local.contentSerieName + " / calidad: " + item_local.quality + "[" + str(item_local.language) + "]" + " / calidad ORG: " + calidad + " / year: " + year + " / tamaño: " + size) + logger.debug("url: " + item_local.url + " / title: " + item_local.title + " / content title: " + item_local.contentTitle + "/" + item_local.contentSerieName + " / calidad: " + item_local.quality + "[" + str(item_local.language) + "]" + " / year: " + str(item_local.infoLabels['year'])) #logger.debug(item_local) @@ -889,7 +880,6 @@ def listado_busqueda(item): return itemlist def findvideos(item): - import xbmc from core import channeltools logger.info() itemlist = [] @@ -997,18 +987,31 @@ def findvideos(item): verificar_enlaces_descargas = -1 #Verificar todos los enlaces Descargar verificar_enlaces_descargas_validos = True #"¿Contar sólo enlaces 'verificados' en Descargar?" excluir_enlaces_descargas = [] #Lista vacía de servidores excluidos en Descargar - + # Saber si estamos en una ventana emergente lanzada desde una viñeta del menú principal, # con la función "play_from_library" unify_status = False - if xbmc.getCondVisibility('Window.IsMedia') == 1: + try: + import xbmc + if xbmc.getCondVisibility('Window.IsMedia') == 1: + unify_status = config.get_setting("unify") + except: unify_status = config.get_setting("unify") + #Salvamos la información de max num. de episodios por temporada para despues de TMDB + if item.infoLabels['temporada_num_episodios']: + num_episodios = item.infoLabels['temporada_num_episodios'] + else: + num_episodios = 1 + # Obtener la información actualizada del Episodio, si no la hay if not item.infoLabels['tmdb_id'] or (not item.infoLabels['episodio_titulo'] and item.contentType == 'episode'): tmdb.set_infoLabels(item, True) elif (not item.infoLabels['tvdb_id'] and item.contentType == 'episode') or item.contentChannel == "videolibrary": tmdb.set_infoLabels(item, True) + #Restauramos la información de max num. de episodios por temporada despues de TMDB + if item.infoLabels['temporada_num_episodios'] and num_episodios > item.infoLabels['temporada_num_episodios']: + item.infoLabels['temporada_num_episodios'] = num_episodios # Descarga la página data = re.sub(r"\n|\r|\t|\s{2}|()", "", httptools.downloadpage(item.url).data) @@ -1028,6 +1031,8 @@ def findvideos(item): item.infoLabels['episodio_titulo'] = re.sub(r'\s?\[.*?\]', '', item.infoLabels['episodio_titulo']) if item.infoLabels['episodio_titulo'] == item.contentSerieName: item.infoLabels['episodio_titulo'] = '' + if item.infoLabels['aired'] and item.contentType == "episode": + item.infoLabels['year'] = scrapertools.find_single_match(str(item.infoLabels['aired']), r'\/(\d{4})') #Generamos una copia de Item para trabajar sobre ella item_local = item.clone() @@ -1057,10 +1062,10 @@ def findvideos(item): else: title = item_local.title title_gen = title - - title_gen = re.sub(r'\s\[COLOR \w+\]\[\]\[\/COLOR\]', '', title_gen) #Quitamos etiquetas vacías - title_gen = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', title_gen) #Quitamos colores vacíos - title_gen = title_gen.replace(" []", "") #Quitamos etiquetas vacías + + title_gen = re.sub(r'\s\[COLOR \w+\]\[\[?\]?\]\[\/COLOR\]', '', title_gen).strip() #Quitamos etiquetas vacías + title_gen = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', title_gen).strip() #Quitamos colores vacíos + title_gen = title_gen.replace(" []", "").strip() #Quitamos etiquetas vacías if not unify_status: #Si Titulos Inteligentes NO seleccionados: title_gen = '**- [COLOR gold]Enlaces Ver: [/COLOR]%s[COLOR gold] -**[/COLOR]' % (title_gen) @@ -1074,9 +1079,9 @@ def findvideos(item): #Ahora pintamos el link del Torrent, si lo hay if item_local.url: # Hay Torrent ? - item_local.title = '[COLOR yellow][?][/COLOR] [COLOR yellow][Torrent][/COLOR] [COLOR limegreen][%s][/COLOR] [COLOR red][%s][/COLOR]' % (item_local.quality, str(item_local.language)) #Preparamos título de Torrent - item_local.title = re.sub(r'\s\[COLOR \w+\]\[\]\[\/COLOR\]', '', item_local.title) #Quitamos etiquetas vacías - item_local.title = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', item_local.title) #Quitamos colores vacíos + item_local.title = '[COLOR yellow][?][/COLOR] [COLOR yellow][Torrent][/COLOR] [COLOR limegreen][%s][/COLOR] [COLOR red]%s[/COLOR]' % (item_local.quality, str(item_local.language)) #Preparamos título de Torrent + item_local.title = re.sub(r'\s\[COLOR \w+\]\[\[?\]?\]\[\/COLOR\]', '', item_local.title).strip() #Quitamos etiquetas vacías + item_local.title = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', item_local.title).strip() #Quitamos colores vacíos item_local.alive = "??" #Calidad del link sin verificar item_local.action = "play" #Visualizar vídeo @@ -1156,9 +1161,9 @@ def findvideos(item): item_local.action = "play" item_local.server = servidor item_local.url = enlace - item_local.title = item_local.title.replace("[]", "") - item_local.title = re.sub(r'\s\[COLOR \w+\]\[\]\[\/COLOR\]', '', item_local.title) - item_local.title = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', item_local.title) + item_local.title = item_local.title.replace("[]", "").strip() + item_local.title = re.sub(r'\s\[COLOR \w+\]\[\[?\]?\]\[\/COLOR\]', '', item_local.title).strip() + item_local.title = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', item_local.title).strip() itemlist.append(item_local.clone()) except: pass @@ -1249,9 +1254,9 @@ def findvideos(item): item_local.action = "play" item_local.server = servidor item_local.url = enlace - item_local.title = parte_title.replace("[]", "") - item_local.title = re.sub(r'\[COLOR \w+\]\[\]\[\/COLOR\]', '', item_local.title) - item_local.title = re.sub(r'\[COLOR \w+\]-\[\/COLOR\]', '', item_local.title) + item_local.title = parte_title.replace("[]", "").strip() + item_local.title = re.sub(r'\s\[COLOR \w+\]\[\[?\]?\]\[\/COLOR\]', '', item_local.title).strip() + item_local.title = re.sub(r'\[COLOR \w+\]-\[\/COLOR\]', '', item_local.title).strip() itemlist.append(item_local.clone()) except: pass @@ -1426,10 +1431,10 @@ def episodios(item): item_local.title = '%s [%s] [%s] [COLOR limegreen][%s][/COLOR] [COLOR red]%s[/COLOR]' % (item_local.title, item_local.infoLabels['year'], rating, item_local.quality, str(item_local.language)) #Quitamos campos vacíos - item_local.infoLabels['episodio_titulo'] = item_local.infoLabels['episodio_titulo'].replace(" []", "") - item_local.title = item_local.title.replace(" []", "") - item_local.title = re.sub(r'\s\[COLOR \w+\]\[\]\[\/COLOR\]', '', item_local.title) - item_local.title = re.sub(r'\s\[COLOR \w+\]-\[\/COLOR\]', '', item_local.title) + item_local.infoLabels['episodio_titulo'] = item_local.infoLabels['episodio_titulo'].replace(" []", "").strip() + item_local.title = item_local.title.replace(" []", "").strip() + item_local.title = re.sub(r'\s\[COLOR \w+\]\[\[?\]?\]\[\/COLOR\]', '', item_local.title).strip() + item_local.title = re.sub(r'\s\[COLOR \w+\]-\[\/COLOR\]', '', item_local.title).strip() if num_episodios < item_local.contentEpisodeNumber: num_episodios = item_local.contentEpisodeNumber if num_episodios and not item_local.infoLabels['temporada_num_episodios']: diff --git a/plugin.video.alfa/channels/torrentlocura.py b/plugin.video.alfa/channels/torrentlocura.py index c084607b..8f5a5e2a 100755 --- a/plugin.video.alfa/channels/torrentlocura.py +++ b/plugin.video.alfa/channels/torrentlocura.py @@ -236,7 +236,7 @@ def listado(item): #Determinamos y marcamos idiomas distintos del castellano item_local.language = [] - if "[vos" in title.lower() or "v.o.s" in title.lower() or "vo" in title.lower() or ".com/pelicula/" in scrapedurl or ".com/series-vo" in scrapedurl or "-vo/" in scrapedurl or "vos" in calidad.lower() or "vose" in calidad.lower() or "v.o.s" in calidad.lower() or ".com/peliculas-vo" in item.url: + if "[vos" in title.lower() or "v.o.s" in title.lower() or "vo" in title.lower() or ".com/pelicula/" in scrapedurl or ".com/series-vo" in scrapedurl or "-vo/" in scrapedurl or "vos" in calidad.lower() or "vose" in calidad.lower() or "v.o.s" in calidad.lower() or "sub" in calidad.lower() or ".com/peliculas-vo" in item.url: item_local.language += ["VOS"] title = title.replace(" [Subs. integrados]", "").replace(" [subs. Integrados]", "").replace(" [VOSE", "").replace(" [VOS", "").replace(" (V.O.S.E)", "").replace(" VO", "").replace("Subtitulos", "") if "latino" in title.lower() or "argentina" in title.lower() or "-latino/" in scrapedurl or "latino" in calidad.lower() or "argentina" in calidad.lower(): @@ -272,8 +272,8 @@ def listado(item): if "audio" in title.lower(): #Reservamos info de audio para después de TMDB title_subs += ['[%s]' % scrapertools.find_single_match(title, r'(\[[a|A]udio.*?\])')] title = re.sub(r'\[[a|A]udio.*?\]', '', title) - if "[dual" in title.lower() or "multileng" in title.lower() or "multileng" in item_local.quality.lower(): - item_local.language += ["DUAL"] + if "[dual" in title.lower() or "multileng" in title.lower() or "multileng" in item_local.quality.lower() or (("espa" in title.lower() or "spani" in title.lower()) and "VOS" in item_local.language): + item_local.language[0:0] = ["DUAL"] title = re.sub(r'\[[D|d]ual.*?\]', '', title) title = re.sub(r'\[[M|m]ultileng.*?\]', '', title) item_local.quality = re.sub(r'\[[M|m]ultileng.*?\]', '', item_local.quality) @@ -309,7 +309,7 @@ def listado(item): title = title.replace("Ver online ", "").replace("Descarga Serie HD ", "").replace("Descargar Serie HD ", "").replace("Descarga Serie ", "").replace("Descargar Serie ", "").replace("Ver en linea ", "").replace("Ver en linea", "").replace("HD ", "").replace("(Proper)", "").replace("RatDVD", "").replace("DVDRiP", "").replace("DVDRIP", "").replace("DVDR", "").replace("DVD9", "").replace("DVD", "").replace("DVB", "").replace("- ES ", "").replace("ES ", "").replace("COMPLETA", "").replace("(", "-").replace(")", "-").replace(".", " ").strip() - title = title.replace("Descargar torrent ", "").replace("Descarga Gratis ", "").replace("Descargar Estreno ", "").replace("Descargar Estrenos ", "").replace("Pelicula en latino ", "").replace("Descargar Pelicula ", "").replace("Descargar Peliculas ", "").replace("Descargar peliculas ", "").replace("Descargar Todas ", "").replace("Descargar Otras ", "").replace("Descargar ", "").replace("Descarga ", "").replace("Bajar ", "").replace("RIP ", "").replace("Rip", "").replace("RiP", "").replace("RiP", "").replace("XviD", "").replace("AC3 5.1", "").replace("AC3", "").replace("1080p ", "").replace("720p ", "").replace("DVD-Screener ", "").replace("TS-Screener ", "").replace("Screener ", "").replace("BdRemux ", "").replace("BR ", "").replace("4KULTRA", "").replace("FULLBluRay", "").replace("FullBluRay", "").replace("BluRay", "").replace("Bonus Disc", "").replace("de Cine ", "").replace("TeleCine ", "").replace("latino", "").replace("Latino", "").replace("argentina", "").replace("Argentina", "").strip() + title = title.replace("Descargar torrent ", "").replace("Descarga Gratis ", "").replace("Descargar Estreno ", "").replace("Descargar Estrenos ", "").replace("Pelicula en latino ", "").replace("Descargar Pelicula ", "").replace("Descargar Peliculas ", "").replace("Descargar peliculas ", "").replace("Descargar Todas ", "").replace("Descargar Otras ", "").replace("Descargar ", "").replace("Descarga ", "").replace("Bajar ", "").replace("HDRIP ", "").replace("HDRiP ", "").replace("HDRip ", "").replace("RIP ", "").replace("Rip", "").replace("RiP", "").replace("XviD", "").replace("AC3 5.1", "").replace("AC3", "").replace("1080p ", "").replace("720p ", "").replace("DVD-Screener ", "").replace("TS-Screener ", "").replace("Screener ", "").replace("BdRemux ", "").replace("BR ", "").replace("4KULTRA", "").replace("FULLBluRay", "").replace("FullBluRay", "").replace("BluRay", "").replace("Bonus Disc", "").replace("de Cine ", "").replace("TeleCine ", "").replace("latino", "").replace("Latino", "").replace("argentina", "").replace("Argentina", "").strip() if title.endswith("torrent gratis"): title = title[:-15] if title.endswith("gratis"): title = title[:-7] @@ -324,16 +324,9 @@ def listado(item): if not "HDR" in item_local.quality: item_local.quality += " HDR" - while title.endswith(' '): - title = title[:-1] - while title.startswith(' '): - title = title[+1:] - while title_alt.endswith(' '): - title_alt = title_alt[:-1] - while title_alt.startswith(' '): - title_alt = title_alt[+1:] - while item_local.quality.endswith(' '): - item_local.quality = item_local.quality[:-1] + title = title.strip() + title_alt = title_alt.strip() + item_local.quality = item_local.quality.strip() if not title: #Usamos solo el title_alt en caso de que no exista el título original title = title_alt @@ -416,9 +409,9 @@ def listado(item): if config.get_setting("unify"): #Si Titulos Inteligentes SÍ seleccionados: title = title.replace("[", "-").replace("]", "-") - title = title.replace("--", "").replace(" []", "").replace("()", "").replace("(/)", "").replace("[/]", "") - title = re.sub(r'\s\[COLOR \w+\]\[\]\[\/COLOR\]', '', title) - title = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', title) + title = title.replace("--", "").replace(" []", "").replace("()", "").replace("(/)", "").replace("[/]", "").strip() + title = re.sub(r'\s\[COLOR \w+\]\[\[?\]?\]\[\/COLOR\]', '', title).strip() + title = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', title).strip() if category == "newest": #Viene de Novedades. Marquemos el título con el nombre del canal title += ' -%s-' % item_local.channel.capitalize() @@ -427,7 +420,7 @@ def listado(item): item_local.title = title - logger.debug("url: " + item_local.url + " / title: " + item_local.title + " / content title: " + item_local.contentTitle + "/" + item_local.contentSerieName + " / calidad: " + item_local.quality + " / year: " + year) + logger.debug("url: " + item_local.url + " / title: " + item_local.title + " / content title: " + item_local.contentTitle + "/" + item_local.contentSerieName + " / calidad: " + item_local.quality + " / year: " + str(item_local.infoLabels['year'])) #logger.debug(item_local) if len(itemlist) == 0: @@ -447,15 +440,10 @@ def listado_busqueda(item): cnt_tot = 40 # Poner el num. máximo de items por página. Dejamos que la web lo controle cnt_title = 0 # Contador de líneas insertadas en Itemlist cnt_pag = 0 # Contador de líneas leídas de Matches - category = "" # Guarda la categoria que viene desde una busqueda global if item.cnt_pag: cnt_pag = item.cnt_pag # Se guarda en la lista de páginas anteriores en Item del item.cnt_pag - - if item.category: - category = item.category - del item.category if item.totalItems: del item.totalItems if item.text_bold: @@ -578,12 +566,14 @@ def listado_busqueda(item): title_lista += [scrapedurl_alt] else: title_lista += [scrapedurl] - if "juego/" in scrapedurl or "xbox" in scrapedurl.lower() or "xbox" in scrapedtitle.lower() or "xbox" in calidad.lower() or "epub" in calidad.lower() or "pdf" in calidad.lower(): # no mostramos lo que no sean videos + if "juego/" in scrapedurl or "xbox" in scrapedurl.lower() or "xbox" in scrapedtitle.lower() or "windows" in scrapedtitle.lower() or "windows" in calidad.lower() or "nintendo" in scrapedtitle.lower() or "xbox" in calidad.lower() or "epub" in calidad.lower() or "pdf" in calidad.lower() or "pcdvd" in calidad.lower() or "crack" in calidad.lower(): # no mostramos lo que no sean videos continue cnt_title += 1 # Sería una línea real más para Itemlist #Creamos una copia de Item para cada contenido item_local = item.clone() + if item_local.category: + del item_local.category if item_local.tipo: del item_local.tipo if item_local.totalItems: @@ -594,6 +584,10 @@ def listado_busqueda(item): del item_local.pattern if item_local.title_lista: del item_local.title_lista + item_local.adult = True + del item_local.adult + item_local.folder = True + del item_local.folder item_local.title = '' item_local.context = "['buscar_trailer']" @@ -620,7 +614,7 @@ def listado_busqueda(item): #Determinamos y marcamos idiomas distintos del castellano item_local.language = [] - if "[vos" in title.lower() or "v.o.s" in title.lower() or "vo" in title.lower() or ".com/pelicula/" in scrapedurl or ".com/series-vo" in scrapedurl or "-vo/" in scrapedurl or "vos" in calidad.lower() or "vose" in calidad.lower() or "v.o.s" in calidad.lower(): + if "[vos" in title.lower() or "v.o.s" in title.lower() or "vo" in title.lower() or ".com/pelicula/" in scrapedurl or ".com/series-vo" in scrapedurl or "-vo/" in scrapedurl or "vos" in calidad.lower() or "vose" in calidad.lower() or "v.o.s" in calidad.lower() or "sub" in calidad.lower() or ".com/peliculas-vo" in item.url: item_local.language += ["VOS"] title = title.replace(" [Subs. integrados]", "").replace(" [subs. Integrados]", "").replace(" [VOSE", "").replace(" [VOS", "").replace(" (V.O.S.E)", "").replace(" VO", "").replace("Subtitulos", "") if "latino" in title.lower() or "argentina" in title.lower() or "-latino/" in scrapedurl or "latino" in calidad.lower() or "argentina" in calidad.lower(): @@ -654,8 +648,8 @@ def listado_busqueda(item): if "audio" in title.lower(): #Reservamos info de audio para después de TMDB title_subs += ['[%s]' % scrapertools.find_single_match(title, r'(\[[a|A]udio.*?\])')] title = re.sub(r'\[[a|A]udio.*?\]', '', title) - if "[dual" in title.lower() or "multileng" in title.lower() or "multileng" in item_local.quality.lower(): - item_local.language += ["DUAL"] + if "[dual" in title.lower() or "multileng" in title.lower() or "multileng" in item_local.quality.lower() or (("espa" in title.lower() or "spani" in title.lower()) and "VOS" in item_local.language): + item_local.language[0:0] = ["DUAL"] title = re.sub(r'\[[D|d]ual.*?\]', '', title) title = re.sub(r'\[[M|m]ultileng.*?\]', '', title) item_local.quality = re.sub(r'\[[M|m]ultileng.*?\]', '', item_local.quality) @@ -691,7 +685,7 @@ def listado_busqueda(item): title = title.replace("Ver online ", "").replace("Descarga Serie HD ", "").replace("Descargar Serie HD ", "").replace("Descarga Serie ", "").replace("Descargar Serie ", "").replace("Ver en linea ", "").replace("Ver en linea", "").replace("HD ", "").replace("(Proper)", "").replace("RatDVD", "").replace("DVDRiP", "").replace("DVDRIP", "").replace("DVDR", "").replace("DVD9", "").replace("DVD", "").replace("DVB", "").replace("- ES ", "").replace("ES ", "").replace("COMPLETA", "").replace("(", "-").replace(")", "-").replace(".", " ").strip() - title = title.replace("Descargar torrent ", "").replace("Descarga Gratis ", "").replace("Descargar Estreno ", "").replace("Descargar Estrenos ", "").replace("Pelicula en latino ", "").replace("Descargar Pelicula ", "").replace("Descargar Peliculas ", "").replace("Descargar peliculas ", "").replace("Descargar Todas ", "").replace("Descargar Otras ", "").replace("Descargar ", "").replace("Descarga ", "").replace("Bajar ", "").replace("RIP ", "").replace("Rip", "").replace("RiP", "").replace("RiP", "").replace("XviD", "").replace("AC3 5.1", "").replace("AC3", "").replace("1080p ", "").replace("720p ", "").replace("DVD-Screener ", "").replace("TS-Screener ", "").replace("Screener ", "").replace("BdRemux ", "").replace("BR ", "").replace("4KULTRA", "").replace("FULLBluRay", "").replace("FullBluRay", "").replace("BluRay", "").replace("Bonus Disc", "").replace("de Cine ", "").replace("TeleCine ", "").replace("latino", "").replace("Latino", "").replace("argentina", "").replace("Argentina", "").strip() + title = title.replace("Descargar torrent ", "").replace("Descarga Gratis ", "").replace("Descargar Estreno ", "").replace("Descargar Estrenos ", "").replace("Pelicula en latino ", "").replace("Descargar Pelicula ", "").replace("Descargar Peliculas ", "").replace("Descargar peliculas ", "").replace("Descargar Todas ", "").replace("Descargar Otras ", "").replace("Descargar ", "").replace("Descarga ", "").replace("Bajar ", "").replace("HDRIP ", "").replace("HDRiP ", "").replace("HDRip ", "").replace("RIP ", "").replace("Rip", "").replace("RiP", "").replace("XviD", "").replace("AC3 5.1", "").replace("AC3", "").replace("1080p ", "").replace("720p ", "").replace("DVD-Screener ", "").replace("TS-Screener ", "").replace("Screener ", "").replace("BdRemux ", "").replace("BR ", "").replace("4KULTRA", "").replace("FULLBluRay", "").replace("FullBluRay", "").replace("BluRay", "").replace("Bonus Disc", "").replace("de Cine ", "").replace("TeleCine ", "").replace("latino", "").replace("Latino", "").replace("argentina", "").replace("Argentina", "").strip() if "pelisyseries.com" in host and item_local.contentType == "tvshow": titulo = '' @@ -715,19 +709,18 @@ def listado_busqueda(item): if title.endswith(" -"): title = title[:-2] if "en espa" in title: title = title[:-11] #title = re.sub(r'^\s', '', title) - title = title.replace("a?o", 'año').replace("a?O", 'año').replace("A?o", 'Año').replace("A?O", 'Año') - while title.startswith(' '): - title = title[+1:] - while title.endswith(' '): - title = title[:-1] + title = title.replace("a?o", 'año').replace("a?O", 'año').replace("A?o", 'Año').replace("A?O", 'Año').strip() #Preparamos calidad item_local.quality = item_local.quality.replace("[ ", "").replace(" ]", "") #Preparamos calidad para Series item_local.quality = re.sub(r'\[\d{4}\]', '', item_local.quality) #Quitar año, si lo tiene item_local.quality = re.sub(r'\[Cap.*?\]', '', item_local.quality) #Quitar episodios, si lo tiene item_local.quality = re.sub(r'\[Docu.*?\]', '', item_local.quality) #Quitar tipo contenidos, si lo tiene - if "[es-" in item_local.quality.lower() or (("cast" in item_local.quality.lower() or "spani" in item_local.quality.lower()) and ("eng" in item_local.quality.lower() or "ing" in item_local.quality.lower())): #Mirar si es DUAL - item_local.language += ["DUAL"] #Salvar DUAL en idioma + #Mirar si es DUAL + if "VOS" in item_local.language and "DUAL" not in item_local.language and ("[sp" in item_local.quality.lower() or "espa" in item_local.quality.lower() or "cast" in item_local.quality.lower() or "spani" in item_local.quality.lower()): + item_local.language[0:0] = ["DUAL"] + if ("[es-" in item_local.quality.lower() or (("cast" in item_local.quality.lower() or "espa" in item_local.quality.lower() or "spani" in item_local.quality.lower()) and ("eng" in item_local.quality.lower() or "ing" in item_local.quality.lower()))) and "DUAL" not in item_local.language: #Mirar si es DUAL + item_local.language[0:0] = ["DUAL"] #Salvar DUAL en idioma item_local.quality = re.sub(r'\[[es|ES]-\w+]', '', item_local.quality) #borrar DUAL item_local.quality = re.sub(r'[\s|-][c|C]aste.+', '', item_local.quality) #Borrar después de Castellano item_local.quality = re.sub(r'[\s|-][e|E]spa.+', '', item_local.quality) #Borrar después de Español @@ -735,9 +728,7 @@ def listado_busqueda(item): item_local.quality = re.sub(r'[\s|-][i|I|e|E]ngl.+', '', item_local.quality) #Borrar después de Inglés-English item_local.quality = item_local.quality.replace("[", "").replace("]", " ").replace("ALTA DEFINICION", "HDTV").replace(" Cap", "") #Borrar palabras innecesarias restantes - item_local.quality = item_local.quality.replace("Espaol", "").replace("Español", "").replace("Espa", "").replace("Castellano ", "").replace("Castellano", "").replace("Spanish", "").replace("English", "").replace("Ingles", "").replace("Latino", "").replace("+Subs", "").replace("-Subs", "").replace("Subs", "").replace("VOSE", "").replace("VOS", "") - while item_local.quality.endswith(" "): #Borrar espacios de cola - item_local.quality = item_local.quality[:-1] + item_local.quality = item_local.quality.replace("Espaol", "").replace("Español", "").replace("Espa", "").replace("Castellano ", "").replace("Castellano", "").replace("Spanish", "").replace("English", "").replace("Ingles", "").replace("Latino", "").replace("+Subs", "").replace("-Subs", "").replace("Subs", "").replace("VOSE", "").replace("VOS", "").strip() #Limpieza final del título y guardado en las variables según su tipo de contenido item_local.title = title @@ -816,7 +807,7 @@ def listado_busqueda(item): #Agrega el item local a la lista itemlist itemlist.append(item_local.clone()) - if not category: #Si este campo no existe es que viene de la primera pasada de una búsqueda global + if not item.category: #Si este campo no existe es que viene de la primera pasada de una búsqueda global return itemlist #Retornamos sin pasar por la fase de maquillaje para ahorra tiempo #Pasamos a TMDB la lista completa Itemlist @@ -872,12 +863,12 @@ def listado_busqueda(item): if config.get_setting("unify"): #Si Titulos Inteligentes SÍ seleccionados: title = title.replace("[", "-").replace("]", "-") - title = title.replace("--", "").replace(" []", "").replace("()", "").replace("(/)", "").replace("[/]", "") - title = re.sub(r'\s\[COLOR \w+\]\[\]\[\/COLOR\]', '', title) - title = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', title) + title = title.replace("--", "").replace(" []", "").replace("()", "").replace("(/)", "").replace("[/]", "").strip() + title = re.sub(r'\s\[COLOR \w+\]\[\[?\]?\]\[\/COLOR\]', '', title).strip() + title = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', title).strip() item_local.title = title - logger.debug("url: " + item_local.url + " / title: " + item_local.title + " / content title: " + item_local.contentTitle + "/" + item_local.contentSerieName + " / calidad: " + item_local.quality + "[" + str(item_local.language) + "]" + " / calidad ORG: " + calidad + " / year: " + year + " / tamaño: " + size) + logger.debug("url: " + item_local.url + " / title: " + item_local.title + " / content title: " + item_local.contentTitle + "/" + item_local.contentSerieName + " / calidad: " + item_local.quality + "[" + str(item_local.language) + "]" + " / year: " + str(item_local.infoLabels['year'])) #logger.debug(item_local) @@ -889,7 +880,6 @@ def listado_busqueda(item): return itemlist def findvideos(item): - import xbmc from core import channeltools logger.info() itemlist = [] @@ -997,18 +987,31 @@ def findvideos(item): verificar_enlaces_descargas = -1 #Verificar todos los enlaces Descargar verificar_enlaces_descargas_validos = True #"¿Contar sólo enlaces 'verificados' en Descargar?" excluir_enlaces_descargas = [] #Lista vacía de servidores excluidos en Descargar - + # Saber si estamos en una ventana emergente lanzada desde una viñeta del menú principal, # con la función "play_from_library" unify_status = False - if xbmc.getCondVisibility('Window.IsMedia') == 1: + try: + import xbmc + if xbmc.getCondVisibility('Window.IsMedia') == 1: + unify_status = config.get_setting("unify") + except: unify_status = config.get_setting("unify") + #Salvamos la información de max num. de episodios por temporada para despues de TMDB + if item.infoLabels['temporada_num_episodios']: + num_episodios = item.infoLabels['temporada_num_episodios'] + else: + num_episodios = 1 + # Obtener la información actualizada del Episodio, si no la hay if not item.infoLabels['tmdb_id'] or (not item.infoLabels['episodio_titulo'] and item.contentType == 'episode'): tmdb.set_infoLabels(item, True) elif (not item.infoLabels['tvdb_id'] and item.contentType == 'episode') or item.contentChannel == "videolibrary": tmdb.set_infoLabels(item, True) + #Restauramos la información de max num. de episodios por temporada despues de TMDB + if item.infoLabels['temporada_num_episodios'] and num_episodios > item.infoLabels['temporada_num_episodios']: + item.infoLabels['temporada_num_episodios'] = num_episodios # Descarga la página data = re.sub(r"\n|\r|\t|\s{2}|()", "", httptools.downloadpage(item.url).data) @@ -1028,6 +1031,8 @@ def findvideos(item): item.infoLabels['episodio_titulo'] = re.sub(r'\s?\[.*?\]', '', item.infoLabels['episodio_titulo']) if item.infoLabels['episodio_titulo'] == item.contentSerieName: item.infoLabels['episodio_titulo'] = '' + if item.infoLabels['aired'] and item.contentType == "episode": + item.infoLabels['year'] = scrapertools.find_single_match(str(item.infoLabels['aired']), r'\/(\d{4})') #Generamos una copia de Item para trabajar sobre ella item_local = item.clone() @@ -1057,10 +1062,10 @@ def findvideos(item): else: title = item_local.title title_gen = title - - title_gen = re.sub(r'\s\[COLOR \w+\]\[\]\[\/COLOR\]', '', title_gen) #Quitamos etiquetas vacías - title_gen = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', title_gen) #Quitamos colores vacíos - title_gen = title_gen.replace(" []", "") #Quitamos etiquetas vacías + + title_gen = re.sub(r'\s\[COLOR \w+\]\[\[?\]?\]\[\/COLOR\]', '', title_gen).strip() #Quitamos etiquetas vacías + title_gen = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', title_gen).strip() #Quitamos colores vacíos + title_gen = title_gen.replace(" []", "").strip() #Quitamos etiquetas vacías if not unify_status: #Si Titulos Inteligentes NO seleccionados: title_gen = '**- [COLOR gold]Enlaces Ver: [/COLOR]%s[COLOR gold] -**[/COLOR]' % (title_gen) @@ -1074,9 +1079,9 @@ def findvideos(item): #Ahora pintamos el link del Torrent, si lo hay if item_local.url: # Hay Torrent ? - item_local.title = '[COLOR yellow][?][/COLOR] [COLOR yellow][Torrent][/COLOR] [COLOR limegreen][%s][/COLOR] [COLOR red][%s][/COLOR]' % (item_local.quality, str(item_local.language)) #Preparamos título de Torrent - item_local.title = re.sub(r'\s\[COLOR \w+\]\[\]\[\/COLOR\]', '', item_local.title) #Quitamos etiquetas vacías - item_local.title = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', item_local.title) #Quitamos colores vacíos + item_local.title = '[COLOR yellow][?][/COLOR] [COLOR yellow][Torrent][/COLOR] [COLOR limegreen][%s][/COLOR] [COLOR red]%s[/COLOR]' % (item_local.quality, str(item_local.language)) #Preparamos título de Torrent + item_local.title = re.sub(r'\s\[COLOR \w+\]\[\[?\]?\]\[\/COLOR\]', '', item_local.title).strip() #Quitamos etiquetas vacías + item_local.title = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', item_local.title).strip() #Quitamos colores vacíos item_local.alive = "??" #Calidad del link sin verificar item_local.action = "play" #Visualizar vídeo @@ -1156,9 +1161,9 @@ def findvideos(item): item_local.action = "play" item_local.server = servidor item_local.url = enlace - item_local.title = item_local.title.replace("[]", "") - item_local.title = re.sub(r'\s\[COLOR \w+\]\[\]\[\/COLOR\]', '', item_local.title) - item_local.title = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', item_local.title) + item_local.title = item_local.title.replace("[]", "").strip() + item_local.title = re.sub(r'\s\[COLOR \w+\]\[\[?\]?\]\[\/COLOR\]', '', item_local.title).strip() + item_local.title = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', item_local.title).strip() itemlist.append(item_local.clone()) except: pass @@ -1249,9 +1254,9 @@ def findvideos(item): item_local.action = "play" item_local.server = servidor item_local.url = enlace - item_local.title = parte_title.replace("[]", "") - item_local.title = re.sub(r'\[COLOR \w+\]\[\]\[\/COLOR\]', '', item_local.title) - item_local.title = re.sub(r'\[COLOR \w+\]-\[\/COLOR\]', '', item_local.title) + item_local.title = parte_title.replace("[]", "").strip() + item_local.title = re.sub(r'\s\[COLOR \w+\]\[\[?\]?\]\[\/COLOR\]', '', item_local.title).strip() + item_local.title = re.sub(r'\[COLOR \w+\]-\[\/COLOR\]', '', item_local.title).strip() itemlist.append(item_local.clone()) except: pass @@ -1426,10 +1431,10 @@ def episodios(item): item_local.title = '%s [%s] [%s] [COLOR limegreen][%s][/COLOR] [COLOR red]%s[/COLOR]' % (item_local.title, item_local.infoLabels['year'], rating, item_local.quality, str(item_local.language)) #Quitamos campos vacíos - item_local.infoLabels['episodio_titulo'] = item_local.infoLabels['episodio_titulo'].replace(" []", "") - item_local.title = item_local.title.replace(" []", "") - item_local.title = re.sub(r'\s\[COLOR \w+\]\[\]\[\/COLOR\]', '', item_local.title) - item_local.title = re.sub(r'\s\[COLOR \w+\]-\[\/COLOR\]', '', item_local.title) + item_local.infoLabels['episodio_titulo'] = item_local.infoLabels['episodio_titulo'].replace(" []", "").strip() + item_local.title = item_local.title.replace(" []", "").strip() + item_local.title = re.sub(r'\s\[COLOR \w+\]\[\[?\]?\]\[\/COLOR\]', '', item_local.title).strip() + item_local.title = re.sub(r'\s\[COLOR \w+\]-\[\/COLOR\]', '', item_local.title).strip() if num_episodios < item_local.contentEpisodeNumber: num_episodios = item_local.contentEpisodeNumber if num_episodios and not item_local.infoLabels['temporada_num_episodios']: diff --git a/plugin.video.alfa/channels/torrentrapid.py b/plugin.video.alfa/channels/torrentrapid.py index 0748133d..47090a32 100644 --- a/plugin.video.alfa/channels/torrentrapid.py +++ b/plugin.video.alfa/channels/torrentrapid.py @@ -236,7 +236,7 @@ def listado(item): #Determinamos y marcamos idiomas distintos del castellano item_local.language = [] - if "[vos" in title.lower() or "v.o.s" in title.lower() or "vo" in title.lower() or ".com/pelicula/" in scrapedurl or ".com/series-vo" in scrapedurl or "-vo/" in scrapedurl or "vos" in calidad.lower() or "vose" in calidad.lower() or "v.o.s" in calidad.lower() or ".com/peliculas-vo" in item.url: + if "[vos" in title.lower() or "v.o.s" in title.lower() or "vo" in title.lower() or ".com/pelicula/" in scrapedurl or ".com/series-vo" in scrapedurl or "-vo/" in scrapedurl or "vos" in calidad.lower() or "vose" in calidad.lower() or "v.o.s" in calidad.lower() or "sub" in calidad.lower() or ".com/peliculas-vo" in item.url: item_local.language += ["VOS"] title = title.replace(" [Subs. integrados]", "").replace(" [subs. Integrados]", "").replace(" [VOSE", "").replace(" [VOS", "").replace(" (V.O.S.E)", "").replace(" VO", "").replace("Subtitulos", "") if "latino" in title.lower() or "argentina" in title.lower() or "-latino/" in scrapedurl or "latino" in calidad.lower() or "argentina" in calidad.lower(): @@ -272,8 +272,8 @@ def listado(item): if "audio" in title.lower(): #Reservamos info de audio para después de TMDB title_subs += ['[%s]' % scrapertools.find_single_match(title, r'(\[[a|A]udio.*?\])')] title = re.sub(r'\[[a|A]udio.*?\]', '', title) - if "[dual" in title.lower() or "multileng" in title.lower() or "multileng" in item_local.quality.lower(): - item_local.language += ["DUAL"] + if "[dual" in title.lower() or "multileng" in title.lower() or "multileng" in item_local.quality.lower() or (("espa" in title.lower() or "spani" in title.lower()) and "VOS" in item_local.language): + item_local.language[0:0] = ["DUAL"] title = re.sub(r'\[[D|d]ual.*?\]', '', title) title = re.sub(r'\[[M|m]ultileng.*?\]', '', title) item_local.quality = re.sub(r'\[[M|m]ultileng.*?\]', '', item_local.quality) @@ -309,7 +309,7 @@ def listado(item): title = title.replace("Ver online ", "").replace("Descarga Serie HD ", "").replace("Descargar Serie HD ", "").replace("Descarga Serie ", "").replace("Descargar Serie ", "").replace("Ver en linea ", "").replace("Ver en linea", "").replace("HD ", "").replace("(Proper)", "").replace("RatDVD", "").replace("DVDRiP", "").replace("DVDRIP", "").replace("DVDR", "").replace("DVD9", "").replace("DVD", "").replace("DVB", "").replace("- ES ", "").replace("ES ", "").replace("COMPLETA", "").replace("(", "-").replace(")", "-").replace(".", " ").strip() - title = title.replace("Descargar torrent ", "").replace("Descarga Gratis ", "").replace("Descargar Estreno ", "").replace("Descargar Estrenos ", "").replace("Pelicula en latino ", "").replace("Descargar Pelicula ", "").replace("Descargar Peliculas ", "").replace("Descargar peliculas ", "").replace("Descargar Todas ", "").replace("Descargar Otras ", "").replace("Descargar ", "").replace("Descarga ", "").replace("Bajar ", "").replace("RIP ", "").replace("Rip", "").replace("RiP", "").replace("RiP", "").replace("XviD", "").replace("AC3 5.1", "").replace("AC3", "").replace("1080p ", "").replace("720p ", "").replace("DVD-Screener ", "").replace("TS-Screener ", "").replace("Screener ", "").replace("BdRemux ", "").replace("BR ", "").replace("4KULTRA", "").replace("FULLBluRay", "").replace("FullBluRay", "").replace("BluRay", "").replace("Bonus Disc", "").replace("de Cine ", "").replace("TeleCine ", "").replace("latino", "").replace("Latino", "").replace("argentina", "").replace("Argentina", "").strip() + title = title.replace("Descargar torrent ", "").replace("Descarga Gratis ", "").replace("Descargar Estreno ", "").replace("Descargar Estrenos ", "").replace("Pelicula en latino ", "").replace("Descargar Pelicula ", "").replace("Descargar Peliculas ", "").replace("Descargar peliculas ", "").replace("Descargar Todas ", "").replace("Descargar Otras ", "").replace("Descargar ", "").replace("Descarga ", "").replace("Bajar ", "").replace("HDRIP ", "").replace("HDRiP ", "").replace("HDRip ", "").replace("RIP ", "").replace("Rip", "").replace("RiP", "").replace("XviD", "").replace("AC3 5.1", "").replace("AC3", "").replace("1080p ", "").replace("720p ", "").replace("DVD-Screener ", "").replace("TS-Screener ", "").replace("Screener ", "").replace("BdRemux ", "").replace("BR ", "").replace("4KULTRA", "").replace("FULLBluRay", "").replace("FullBluRay", "").replace("BluRay", "").replace("Bonus Disc", "").replace("de Cine ", "").replace("TeleCine ", "").replace("latino", "").replace("Latino", "").replace("argentina", "").replace("Argentina", "").strip() if title.endswith("torrent gratis"): title = title[:-15] if title.endswith("gratis"): title = title[:-7] @@ -324,16 +324,9 @@ def listado(item): if not "HDR" in item_local.quality: item_local.quality += " HDR" - while title.endswith(' '): - title = title[:-1] - while title.startswith(' '): - title = title[+1:] - while title_alt.endswith(' '): - title_alt = title_alt[:-1] - while title_alt.startswith(' '): - title_alt = title_alt[+1:] - while item_local.quality.endswith(' '): - item_local.quality = item_local.quality[:-1] + title = title.strip() + title_alt = title_alt.strip() + item_local.quality = item_local.quality.strip() if not title: #Usamos solo el title_alt en caso de que no exista el título original title = title_alt @@ -416,9 +409,9 @@ def listado(item): if config.get_setting("unify"): #Si Titulos Inteligentes SÍ seleccionados: title = title.replace("[", "-").replace("]", "-") - title = title.replace("--", "").replace(" []", "").replace("()", "").replace("(/)", "").replace("[/]", "") - title = re.sub(r'\s\[COLOR \w+\]\[\]\[\/COLOR\]', '', title) - title = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', title) + title = title.replace("--", "").replace(" []", "").replace("()", "").replace("(/)", "").replace("[/]", "").strip() + title = re.sub(r'\s\[COLOR \w+\]\[\[?\]?\]\[\/COLOR\]', '', title).strip() + title = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', title).strip() if category == "newest": #Viene de Novedades. Marquemos el título con el nombre del canal title += ' -%s-' % item_local.channel.capitalize() @@ -427,7 +420,7 @@ def listado(item): item_local.title = title - logger.debug("url: " + item_local.url + " / title: " + item_local.title + " / content title: " + item_local.contentTitle + "/" + item_local.contentSerieName + " / calidad: " + item_local.quality + " / year: " + year) + logger.debug("url: " + item_local.url + " / title: " + item_local.title + " / content title: " + item_local.contentTitle + "/" + item_local.contentSerieName + " / calidad: " + item_local.quality + " / year: " + str(item_local.infoLabels['year'])) #logger.debug(item_local) if len(itemlist) == 0: @@ -447,15 +440,10 @@ def listado_busqueda(item): cnt_tot = 40 # Poner el num. máximo de items por página. Dejamos que la web lo controle cnt_title = 0 # Contador de líneas insertadas en Itemlist cnt_pag = 0 # Contador de líneas leídas de Matches - category = "" # Guarda la categoria que viene desde una busqueda global if item.cnt_pag: cnt_pag = item.cnt_pag # Se guarda en la lista de páginas anteriores en Item del item.cnt_pag - - if item.category: - category = item.category - del item.category if item.totalItems: del item.totalItems if item.text_bold: @@ -578,12 +566,14 @@ def listado_busqueda(item): title_lista += [scrapedurl_alt] else: title_lista += [scrapedurl] - if "juego/" in scrapedurl or "xbox" in scrapedurl.lower() or "xbox" in scrapedtitle.lower() or "xbox" in calidad.lower() or "epub" in calidad.lower() or "pdf" in calidad.lower(): # no mostramos lo que no sean videos + if "juego/" in scrapedurl or "xbox" in scrapedurl.lower() or "xbox" in scrapedtitle.lower() or "windows" in scrapedtitle.lower() or "windows" in calidad.lower() or "nintendo" in scrapedtitle.lower() or "xbox" in calidad.lower() or "epub" in calidad.lower() or "pdf" in calidad.lower() or "pcdvd" in calidad.lower() or "crack" in calidad.lower(): # no mostramos lo que no sean videos continue cnt_title += 1 # Sería una línea real más para Itemlist #Creamos una copia de Item para cada contenido item_local = item.clone() + if item_local.category: + del item_local.category if item_local.tipo: del item_local.tipo if item_local.totalItems: @@ -594,6 +584,10 @@ def listado_busqueda(item): del item_local.pattern if item_local.title_lista: del item_local.title_lista + item_local.adult = True + del item_local.adult + item_local.folder = True + del item_local.folder item_local.title = '' item_local.context = "['buscar_trailer']" @@ -620,7 +614,7 @@ def listado_busqueda(item): #Determinamos y marcamos idiomas distintos del castellano item_local.language = [] - if "[vos" in title.lower() or "v.o.s" in title.lower() or "vo" in title.lower() or ".com/pelicula/" in scrapedurl or ".com/series-vo" in scrapedurl or "-vo/" in scrapedurl or "vos" in calidad.lower() or "vose" in calidad.lower() or "v.o.s" in calidad.lower(): + if "[vos" in title.lower() or "v.o.s" in title.lower() or "vo" in title.lower() or ".com/pelicula/" in scrapedurl or ".com/series-vo" in scrapedurl or "-vo/" in scrapedurl or "vos" in calidad.lower() or "vose" in calidad.lower() or "v.o.s" in calidad.lower() or "sub" in calidad.lower() or ".com/peliculas-vo" in item.url: item_local.language += ["VOS"] title = title.replace(" [Subs. integrados]", "").replace(" [subs. Integrados]", "").replace(" [VOSE", "").replace(" [VOS", "").replace(" (V.O.S.E)", "").replace(" VO", "").replace("Subtitulos", "") if "latino" in title.lower() or "argentina" in title.lower() or "-latino/" in scrapedurl or "latino" in calidad.lower() or "argentina" in calidad.lower(): @@ -654,8 +648,8 @@ def listado_busqueda(item): if "audio" in title.lower(): #Reservamos info de audio para después de TMDB title_subs += ['[%s]' % scrapertools.find_single_match(title, r'(\[[a|A]udio.*?\])')] title = re.sub(r'\[[a|A]udio.*?\]', '', title) - if "[dual" in title.lower() or "multileng" in title.lower() or "multileng" in item_local.quality.lower(): - item_local.language += ["DUAL"] + if "[dual" in title.lower() or "multileng" in title.lower() or "multileng" in item_local.quality.lower() or (("espa" in title.lower() or "spani" in title.lower()) and "VOS" in item_local.language): + item_local.language[0:0] = ["DUAL"] title = re.sub(r'\[[D|d]ual.*?\]', '', title) title = re.sub(r'\[[M|m]ultileng.*?\]', '', title) item_local.quality = re.sub(r'\[[M|m]ultileng.*?\]', '', item_local.quality) @@ -691,7 +685,7 @@ def listado_busqueda(item): title = title.replace("Ver online ", "").replace("Descarga Serie HD ", "").replace("Descargar Serie HD ", "").replace("Descarga Serie ", "").replace("Descargar Serie ", "").replace("Ver en linea ", "").replace("Ver en linea", "").replace("HD ", "").replace("(Proper)", "").replace("RatDVD", "").replace("DVDRiP", "").replace("DVDRIP", "").replace("DVDR", "").replace("DVD9", "").replace("DVD", "").replace("DVB", "").replace("- ES ", "").replace("ES ", "").replace("COMPLETA", "").replace("(", "-").replace(")", "-").replace(".", " ").strip() - title = title.replace("Descargar torrent ", "").replace("Descarga Gratis ", "").replace("Descargar Estreno ", "").replace("Descargar Estrenos ", "").replace("Pelicula en latino ", "").replace("Descargar Pelicula ", "").replace("Descargar Peliculas ", "").replace("Descargar peliculas ", "").replace("Descargar Todas ", "").replace("Descargar Otras ", "").replace("Descargar ", "").replace("Descarga ", "").replace("Bajar ", "").replace("RIP ", "").replace("Rip", "").replace("RiP", "").replace("RiP", "").replace("XviD", "").replace("AC3 5.1", "").replace("AC3", "").replace("1080p ", "").replace("720p ", "").replace("DVD-Screener ", "").replace("TS-Screener ", "").replace("Screener ", "").replace("BdRemux ", "").replace("BR ", "").replace("4KULTRA", "").replace("FULLBluRay", "").replace("FullBluRay", "").replace("BluRay", "").replace("Bonus Disc", "").replace("de Cine ", "").replace("TeleCine ", "").replace("latino", "").replace("Latino", "").replace("argentina", "").replace("Argentina", "").strip() + title = title.replace("Descargar torrent ", "").replace("Descarga Gratis ", "").replace("Descargar Estreno ", "").replace("Descargar Estrenos ", "").replace("Pelicula en latino ", "").replace("Descargar Pelicula ", "").replace("Descargar Peliculas ", "").replace("Descargar peliculas ", "").replace("Descargar Todas ", "").replace("Descargar Otras ", "").replace("Descargar ", "").replace("Descarga ", "").replace("Bajar ", "").replace("HDRIP ", "").replace("HDRiP ", "").replace("HDRip ", "").replace("RIP ", "").replace("Rip", "").replace("RiP", "").replace("XviD", "").replace("AC3 5.1", "").replace("AC3", "").replace("1080p ", "").replace("720p ", "").replace("DVD-Screener ", "").replace("TS-Screener ", "").replace("Screener ", "").replace("BdRemux ", "").replace("BR ", "").replace("4KULTRA", "").replace("FULLBluRay", "").replace("FullBluRay", "").replace("BluRay", "").replace("Bonus Disc", "").replace("de Cine ", "").replace("TeleCine ", "").replace("latino", "").replace("Latino", "").replace("argentina", "").replace("Argentina", "").strip() if "pelisyseries.com" in host and item_local.contentType == "tvshow": titulo = '' @@ -715,19 +709,18 @@ def listado_busqueda(item): if title.endswith(" -"): title = title[:-2] if "en espa" in title: title = title[:-11] #title = re.sub(r'^\s', '', title) - title = title.replace("a?o", 'año').replace("a?O", 'año').replace("A?o", 'Año').replace("A?O", 'Año') - while title.startswith(' '): - title = title[+1:] - while title.endswith(' '): - title = title[:-1] + title = title.replace("a?o", 'año').replace("a?O", 'año').replace("A?o", 'Año').replace("A?O", 'Año').strip() #Preparamos calidad item_local.quality = item_local.quality.replace("[ ", "").replace(" ]", "") #Preparamos calidad para Series item_local.quality = re.sub(r'\[\d{4}\]', '', item_local.quality) #Quitar año, si lo tiene item_local.quality = re.sub(r'\[Cap.*?\]', '', item_local.quality) #Quitar episodios, si lo tiene item_local.quality = re.sub(r'\[Docu.*?\]', '', item_local.quality) #Quitar tipo contenidos, si lo tiene - if "[es-" in item_local.quality.lower() or (("cast" in item_local.quality.lower() or "spani" in item_local.quality.lower()) and ("eng" in item_local.quality.lower() or "ing" in item_local.quality.lower())): #Mirar si es DUAL - item_local.language += ["DUAL"] #Salvar DUAL en idioma + #Mirar si es DUAL + if "VOS" in item_local.language and "DUAL" not in item_local.language and ("[sp" in item_local.quality.lower() or "espa" in item_local.quality.lower() or "cast" in item_local.quality.lower() or "spani" in item_local.quality.lower()): + item_local.language[0:0] = ["DUAL"] + if ("[es-" in item_local.quality.lower() or (("cast" in item_local.quality.lower() or "espa" in item_local.quality.lower() or "spani" in item_local.quality.lower()) and ("eng" in item_local.quality.lower() or "ing" in item_local.quality.lower()))) and "DUAL" not in item_local.language: #Mirar si es DUAL + item_local.language[0:0] = ["DUAL"] #Salvar DUAL en idioma item_local.quality = re.sub(r'\[[es|ES]-\w+]', '', item_local.quality) #borrar DUAL item_local.quality = re.sub(r'[\s|-][c|C]aste.+', '', item_local.quality) #Borrar después de Castellano item_local.quality = re.sub(r'[\s|-][e|E]spa.+', '', item_local.quality) #Borrar después de Español @@ -735,9 +728,7 @@ def listado_busqueda(item): item_local.quality = re.sub(r'[\s|-][i|I|e|E]ngl.+', '', item_local.quality) #Borrar después de Inglés-English item_local.quality = item_local.quality.replace("[", "").replace("]", " ").replace("ALTA DEFINICION", "HDTV").replace(" Cap", "") #Borrar palabras innecesarias restantes - item_local.quality = item_local.quality.replace("Espaol", "").replace("Español", "").replace("Espa", "").replace("Castellano ", "").replace("Castellano", "").replace("Spanish", "").replace("English", "").replace("Ingles", "").replace("Latino", "").replace("+Subs", "").replace("-Subs", "").replace("Subs", "").replace("VOSE", "").replace("VOS", "") - while item_local.quality.endswith(" "): #Borrar espacios de cola - item_local.quality = item_local.quality[:-1] + item_local.quality = item_local.quality.replace("Espaol", "").replace("Español", "").replace("Espa", "").replace("Castellano ", "").replace("Castellano", "").replace("Spanish", "").replace("English", "").replace("Ingles", "").replace("Latino", "").replace("+Subs", "").replace("-Subs", "").replace("Subs", "").replace("VOSE", "").replace("VOS", "").strip() #Limpieza final del título y guardado en las variables según su tipo de contenido item_local.title = title @@ -816,7 +807,7 @@ def listado_busqueda(item): #Agrega el item local a la lista itemlist itemlist.append(item_local.clone()) - if not category: #Si este campo no existe es que viene de la primera pasada de una búsqueda global + if not item.category: #Si este campo no existe es que viene de la primera pasada de una búsqueda global return itemlist #Retornamos sin pasar por la fase de maquillaje para ahorra tiempo #Pasamos a TMDB la lista completa Itemlist @@ -872,12 +863,12 @@ def listado_busqueda(item): if config.get_setting("unify"): #Si Titulos Inteligentes SÍ seleccionados: title = title.replace("[", "-").replace("]", "-") - title = title.replace("--", "").replace(" []", "").replace("()", "").replace("(/)", "").replace("[/]", "") - title = re.sub(r'\s\[COLOR \w+\]\[\]\[\/COLOR\]', '', title) - title = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', title) + title = title.replace("--", "").replace(" []", "").replace("()", "").replace("(/)", "").replace("[/]", "").strip() + title = re.sub(r'\s\[COLOR \w+\]\[\[?\]?\]\[\/COLOR\]', '', title).strip() + title = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', title).strip() item_local.title = title - logger.debug("url: " + item_local.url + " / title: " + item_local.title + " / content title: " + item_local.contentTitle + "/" + item_local.contentSerieName + " / calidad: " + item_local.quality + "[" + str(item_local.language) + "]" + " / calidad ORG: " + calidad + " / year: " + year + " / tamaño: " + size) + logger.debug("url: " + item_local.url + " / title: " + item_local.title + " / content title: " + item_local.contentTitle + "/" + item_local.contentSerieName + " / calidad: " + item_local.quality + "[" + str(item_local.language) + "]" + " / year: " + str(item_local.infoLabels['year'])) #logger.debug(item_local) @@ -889,7 +880,6 @@ def listado_busqueda(item): return itemlist def findvideos(item): - import xbmc from core import channeltools logger.info() itemlist = [] @@ -997,18 +987,31 @@ def findvideos(item): verificar_enlaces_descargas = -1 #Verificar todos los enlaces Descargar verificar_enlaces_descargas_validos = True #"¿Contar sólo enlaces 'verificados' en Descargar?" excluir_enlaces_descargas = [] #Lista vacía de servidores excluidos en Descargar - + # Saber si estamos en una ventana emergente lanzada desde una viñeta del menú principal, # con la función "play_from_library" unify_status = False - if xbmc.getCondVisibility('Window.IsMedia') == 1: + try: + import xbmc + if xbmc.getCondVisibility('Window.IsMedia') == 1: + unify_status = config.get_setting("unify") + except: unify_status = config.get_setting("unify") + #Salvamos la información de max num. de episodios por temporada para despues de TMDB + if item.infoLabels['temporada_num_episodios']: + num_episodios = item.infoLabels['temporada_num_episodios'] + else: + num_episodios = 1 + # Obtener la información actualizada del Episodio, si no la hay if not item.infoLabels['tmdb_id'] or (not item.infoLabels['episodio_titulo'] and item.contentType == 'episode'): tmdb.set_infoLabels(item, True) elif (not item.infoLabels['tvdb_id'] and item.contentType == 'episode') or item.contentChannel == "videolibrary": tmdb.set_infoLabels(item, True) + #Restauramos la información de max num. de episodios por temporada despues de TMDB + if item.infoLabels['temporada_num_episodios'] and num_episodios > item.infoLabels['temporada_num_episodios']: + item.infoLabels['temporada_num_episodios'] = num_episodios # Descarga la página data = re.sub(r"\n|\r|\t|\s{2}|()", "", httptools.downloadpage(item.url).data) @@ -1028,6 +1031,8 @@ def findvideos(item): item.infoLabels['episodio_titulo'] = re.sub(r'\s?\[.*?\]', '', item.infoLabels['episodio_titulo']) if item.infoLabels['episodio_titulo'] == item.contentSerieName: item.infoLabels['episodio_titulo'] = '' + if item.infoLabels['aired'] and item.contentType == "episode": + item.infoLabels['year'] = scrapertools.find_single_match(str(item.infoLabels['aired']), r'\/(\d{4})') #Generamos una copia de Item para trabajar sobre ella item_local = item.clone() @@ -1057,10 +1062,10 @@ def findvideos(item): else: title = item_local.title title_gen = title - - title_gen = re.sub(r'\s\[COLOR \w+\]\[\]\[\/COLOR\]', '', title_gen) #Quitamos etiquetas vacías - title_gen = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', title_gen) #Quitamos colores vacíos - title_gen = title_gen.replace(" []", "") #Quitamos etiquetas vacías + + title_gen = re.sub(r'\s\[COLOR \w+\]\[\[?\]?\]\[\/COLOR\]', '', title_gen).strip() #Quitamos etiquetas vacías + title_gen = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', title_gen).strip() #Quitamos colores vacíos + title_gen = title_gen.replace(" []", "").strip() #Quitamos etiquetas vacías if not unify_status: #Si Titulos Inteligentes NO seleccionados: title_gen = '**- [COLOR gold]Enlaces Ver: [/COLOR]%s[COLOR gold] -**[/COLOR]' % (title_gen) @@ -1074,9 +1079,9 @@ def findvideos(item): #Ahora pintamos el link del Torrent, si lo hay if item_local.url: # Hay Torrent ? - item_local.title = '[COLOR yellow][?][/COLOR] [COLOR yellow][Torrent][/COLOR] [COLOR limegreen][%s][/COLOR] [COLOR red][%s][/COLOR]' % (item_local.quality, str(item_local.language)) #Preparamos título de Torrent - item_local.title = re.sub(r'\s\[COLOR \w+\]\[\]\[\/COLOR\]', '', item_local.title) #Quitamos etiquetas vacías - item_local.title = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', item_local.title) #Quitamos colores vacíos + item_local.title = '[COLOR yellow][?][/COLOR] [COLOR yellow][Torrent][/COLOR] [COLOR limegreen][%s][/COLOR] [COLOR red]%s[/COLOR]' % (item_local.quality, str(item_local.language)) #Preparamos título de Torrent + item_local.title = re.sub(r'\s\[COLOR \w+\]\[\[?\]?\]\[\/COLOR\]', '', item_local.title).strip() #Quitamos etiquetas vacías + item_local.title = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', item_local.title).strip() #Quitamos colores vacíos item_local.alive = "??" #Calidad del link sin verificar item_local.action = "play" #Visualizar vídeo @@ -1156,9 +1161,9 @@ def findvideos(item): item_local.action = "play" item_local.server = servidor item_local.url = enlace - item_local.title = item_local.title.replace("[]", "") - item_local.title = re.sub(r'\s\[COLOR \w+\]\[\]\[\/COLOR\]', '', item_local.title) - item_local.title = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', item_local.title) + item_local.title = item_local.title.replace("[]", "").strip() + item_local.title = re.sub(r'\s\[COLOR \w+\]\[\[?\]?\]\[\/COLOR\]', '', item_local.title).strip() + item_local.title = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', item_local.title).strip() itemlist.append(item_local.clone()) except: pass @@ -1249,9 +1254,9 @@ def findvideos(item): item_local.action = "play" item_local.server = servidor item_local.url = enlace - item_local.title = parte_title.replace("[]", "") - item_local.title = re.sub(r'\[COLOR \w+\]\[\]\[\/COLOR\]', '', item_local.title) - item_local.title = re.sub(r'\[COLOR \w+\]-\[\/COLOR\]', '', item_local.title) + item_local.title = parte_title.replace("[]", "").strip() + item_local.title = re.sub(r'\s\[COLOR \w+\]\[\[?\]?\]\[\/COLOR\]', '', item_local.title).strip() + item_local.title = re.sub(r'\[COLOR \w+\]-\[\/COLOR\]', '', item_local.title).strip() itemlist.append(item_local.clone()) except: pass @@ -1426,10 +1431,10 @@ def episodios(item): item_local.title = '%s [%s] [%s] [COLOR limegreen][%s][/COLOR] [COLOR red]%s[/COLOR]' % (item_local.title, item_local.infoLabels['year'], rating, item_local.quality, str(item_local.language)) #Quitamos campos vacíos - item_local.infoLabels['episodio_titulo'] = item_local.infoLabels['episodio_titulo'].replace(" []", "") - item_local.title = item_local.title.replace(" []", "") - item_local.title = re.sub(r'\s\[COLOR \w+\]\[\]\[\/COLOR\]', '', item_local.title) - item_local.title = re.sub(r'\s\[COLOR \w+\]-\[\/COLOR\]', '', item_local.title) + item_local.infoLabels['episodio_titulo'] = item_local.infoLabels['episodio_titulo'].replace(" []", "").strip() + item_local.title = item_local.title.replace(" []", "").strip() + item_local.title = re.sub(r'\s\[COLOR \w+\]\[\[?\]?\]\[\/COLOR\]', '', item_local.title).strip() + item_local.title = re.sub(r'\s\[COLOR \w+\]-\[\/COLOR\]', '', item_local.title).strip() if num_episodios < item_local.contentEpisodeNumber: num_episodios = item_local.contentEpisodeNumber if num_episodios and not item_local.infoLabels['temporada_num_episodios']: diff --git a/plugin.video.alfa/channels/tumejortorrent.py b/plugin.video.alfa/channels/tumejortorrent.py index 62749d97..61f987da 100644 --- a/plugin.video.alfa/channels/tumejortorrent.py +++ b/plugin.video.alfa/channels/tumejortorrent.py @@ -236,7 +236,7 @@ def listado(item): #Determinamos y marcamos idiomas distintos del castellano item_local.language = [] - if "[vos" in title.lower() or "v.o.s" in title.lower() or "vo" in title.lower() or ".com/pelicula/" in scrapedurl or ".com/series-vo" in scrapedurl or "-vo/" in scrapedurl or "vos" in calidad.lower() or "vose" in calidad.lower() or "v.o.s" in calidad.lower() or ".com/peliculas-vo" in item.url: + if "[vos" in title.lower() or "v.o.s" in title.lower() or "vo" in title.lower() or ".com/pelicula/" in scrapedurl or ".com/series-vo" in scrapedurl or "-vo/" in scrapedurl or "vos" in calidad.lower() or "vose" in calidad.lower() or "v.o.s" in calidad.lower() or "sub" in calidad.lower() or ".com/peliculas-vo" in item.url: item_local.language += ["VOS"] title = title.replace(" [Subs. integrados]", "").replace(" [subs. Integrados]", "").replace(" [VOSE", "").replace(" [VOS", "").replace(" (V.O.S.E)", "").replace(" VO", "").replace("Subtitulos", "") if "latino" in title.lower() or "argentina" in title.lower() or "-latino/" in scrapedurl or "latino" in calidad.lower() or "argentina" in calidad.lower(): @@ -272,8 +272,8 @@ def listado(item): if "audio" in title.lower(): #Reservamos info de audio para después de TMDB title_subs += ['[%s]' % scrapertools.find_single_match(title, r'(\[[a|A]udio.*?\])')] title = re.sub(r'\[[a|A]udio.*?\]', '', title) - if "[dual" in title.lower() or "multileng" in title.lower() or "multileng" in item_local.quality.lower(): - item_local.language += ["DUAL"] + if "[dual" in title.lower() or "multileng" in title.lower() or "multileng" in item_local.quality.lower() or (("espa" in title.lower() or "spani" in title.lower()) and "VOS" in item_local.language): + item_local.language[0:0] = ["DUAL"] title = re.sub(r'\[[D|d]ual.*?\]', '', title) title = re.sub(r'\[[M|m]ultileng.*?\]', '', title) item_local.quality = re.sub(r'\[[M|m]ultileng.*?\]', '', item_local.quality) @@ -309,7 +309,7 @@ def listado(item): title = title.replace("Ver online ", "").replace("Descarga Serie HD ", "").replace("Descargar Serie HD ", "").replace("Descarga Serie ", "").replace("Descargar Serie ", "").replace("Ver en linea ", "").replace("Ver en linea", "").replace("HD ", "").replace("(Proper)", "").replace("RatDVD", "").replace("DVDRiP", "").replace("DVDRIP", "").replace("DVDR", "").replace("DVD9", "").replace("DVD", "").replace("DVB", "").replace("- ES ", "").replace("ES ", "").replace("COMPLETA", "").replace("(", "-").replace(")", "-").replace(".", " ").strip() - title = title.replace("Descargar torrent ", "").replace("Descarga Gratis ", "").replace("Descargar Estreno ", "").replace("Descargar Estrenos ", "").replace("Pelicula en latino ", "").replace("Descargar Pelicula ", "").replace("Descargar Peliculas ", "").replace("Descargar peliculas ", "").replace("Descargar Todas ", "").replace("Descargar Otras ", "").replace("Descargar ", "").replace("Descarga ", "").replace("Bajar ", "").replace("RIP ", "").replace("Rip", "").replace("RiP", "").replace("RiP", "").replace("XviD", "").replace("AC3 5.1", "").replace("AC3", "").replace("1080p ", "").replace("720p ", "").replace("DVD-Screener ", "").replace("TS-Screener ", "").replace("Screener ", "").replace("BdRemux ", "").replace("BR ", "").replace("4KULTRA", "").replace("FULLBluRay", "").replace("FullBluRay", "").replace("BluRay", "").replace("Bonus Disc", "").replace("de Cine ", "").replace("TeleCine ", "").replace("latino", "").replace("Latino", "").replace("argentina", "").replace("Argentina", "").strip() + title = title.replace("Descargar torrent ", "").replace("Descarga Gratis ", "").replace("Descargar Estreno ", "").replace("Descargar Estrenos ", "").replace("Pelicula en latino ", "").replace("Descargar Pelicula ", "").replace("Descargar Peliculas ", "").replace("Descargar peliculas ", "").replace("Descargar Todas ", "").replace("Descargar Otras ", "").replace("Descargar ", "").replace("Descarga ", "").replace("Bajar ", "").replace("HDRIP ", "").replace("HDRiP ", "").replace("HDRip ", "").replace("RIP ", "").replace("Rip", "").replace("RiP", "").replace("XviD", "").replace("AC3 5.1", "").replace("AC3", "").replace("1080p ", "").replace("720p ", "").replace("DVD-Screener ", "").replace("TS-Screener ", "").replace("Screener ", "").replace("BdRemux ", "").replace("BR ", "").replace("4KULTRA", "").replace("FULLBluRay", "").replace("FullBluRay", "").replace("BluRay", "").replace("Bonus Disc", "").replace("de Cine ", "").replace("TeleCine ", "").replace("latino", "").replace("Latino", "").replace("argentina", "").replace("Argentina", "").strip() if title.endswith("torrent gratis"): title = title[:-15] if title.endswith("gratis"): title = title[:-7] @@ -324,16 +324,9 @@ def listado(item): if not "HDR" in item_local.quality: item_local.quality += " HDR" - while title.endswith(' '): - title = title[:-1] - while title.startswith(' '): - title = title[+1:] - while title_alt.endswith(' '): - title_alt = title_alt[:-1] - while title_alt.startswith(' '): - title_alt = title_alt[+1:] - while item_local.quality.endswith(' '): - item_local.quality = item_local.quality[:-1] + title = title.strip() + title_alt = title_alt.strip() + item_local.quality = item_local.quality.strip() if not title: #Usamos solo el title_alt en caso de que no exista el título original title = title_alt @@ -416,9 +409,9 @@ def listado(item): if config.get_setting("unify"): #Si Titulos Inteligentes SÍ seleccionados: title = title.replace("[", "-").replace("]", "-") - title = title.replace("--", "").replace(" []", "").replace("()", "").replace("(/)", "").replace("[/]", "") - title = re.sub(r'\s\[COLOR \w+\]\[\]\[\/COLOR\]', '', title) - title = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', title) + title = title.replace("--", "").replace(" []", "").replace("()", "").replace("(/)", "").replace("[/]", "").strip() + title = re.sub(r'\s\[COLOR \w+\]\[\[?\]?\]\[\/COLOR\]', '', title).strip() + title = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', title).strip() if category == "newest": #Viene de Novedades. Marquemos el título con el nombre del canal title += ' -%s-' % item_local.channel.capitalize() @@ -427,7 +420,7 @@ def listado(item): item_local.title = title - logger.debug("url: " + item_local.url + " / title: " + item_local.title + " / content title: " + item_local.contentTitle + "/" + item_local.contentSerieName + " / calidad: " + item_local.quality + " / year: " + year) + logger.debug("url: " + item_local.url + " / title: " + item_local.title + " / content title: " + item_local.contentTitle + "/" + item_local.contentSerieName + " / calidad: " + item_local.quality + " / year: " + str(item_local.infoLabels['year'])) #logger.debug(item_local) if len(itemlist) == 0: @@ -447,15 +440,10 @@ def listado_busqueda(item): cnt_tot = 40 # Poner el num. máximo de items por página. Dejamos que la web lo controle cnt_title = 0 # Contador de líneas insertadas en Itemlist cnt_pag = 0 # Contador de líneas leídas de Matches - category = "" # Guarda la categoria que viene desde una busqueda global if item.cnt_pag: cnt_pag = item.cnt_pag # Se guarda en la lista de páginas anteriores en Item del item.cnt_pag - - if item.category: - category = item.category - del item.category if item.totalItems: del item.totalItems if item.text_bold: @@ -578,12 +566,14 @@ def listado_busqueda(item): title_lista += [scrapedurl_alt] else: title_lista += [scrapedurl] - if "juego/" in scrapedurl or "xbox" in scrapedurl.lower() or "xbox" in scrapedtitle.lower() or "xbox" in calidad.lower() or "epub" in calidad.lower() or "pdf" in calidad.lower(): # no mostramos lo que no sean videos + if "juego/" in scrapedurl or "xbox" in scrapedurl.lower() or "xbox" in scrapedtitle.lower() or "windows" in scrapedtitle.lower() or "windows" in calidad.lower() or "nintendo" in scrapedtitle.lower() or "xbox" in calidad.lower() or "epub" in calidad.lower() or "pdf" in calidad.lower() or "pcdvd" in calidad.lower() or "crack" in calidad.lower(): # no mostramos lo que no sean videos continue cnt_title += 1 # Sería una línea real más para Itemlist #Creamos una copia de Item para cada contenido item_local = item.clone() + if item_local.category: + del item_local.category if item_local.tipo: del item_local.tipo if item_local.totalItems: @@ -594,6 +584,10 @@ def listado_busqueda(item): del item_local.pattern if item_local.title_lista: del item_local.title_lista + item_local.adult = True + del item_local.adult + item_local.folder = True + del item_local.folder item_local.title = '' item_local.context = "['buscar_trailer']" @@ -620,7 +614,7 @@ def listado_busqueda(item): #Determinamos y marcamos idiomas distintos del castellano item_local.language = [] - if "[vos" in title.lower() or "v.o.s" in title.lower() or "vo" in title.lower() or ".com/pelicula/" in scrapedurl or ".com/series-vo" in scrapedurl or "-vo/" in scrapedurl or "vos" in calidad.lower() or "vose" in calidad.lower() or "v.o.s" in calidad.lower(): + if "[vos" in title.lower() or "v.o.s" in title.lower() or "vo" in title.lower() or ".com/pelicula/" in scrapedurl or ".com/series-vo" in scrapedurl or "-vo/" in scrapedurl or "vos" in calidad.lower() or "vose" in calidad.lower() or "v.o.s" in calidad.lower() or "sub" in calidad.lower() or ".com/peliculas-vo" in item.url: item_local.language += ["VOS"] title = title.replace(" [Subs. integrados]", "").replace(" [subs. Integrados]", "").replace(" [VOSE", "").replace(" [VOS", "").replace(" (V.O.S.E)", "").replace(" VO", "").replace("Subtitulos", "") if "latino" in title.lower() or "argentina" in title.lower() or "-latino/" in scrapedurl or "latino" in calidad.lower() or "argentina" in calidad.lower(): @@ -654,8 +648,8 @@ def listado_busqueda(item): if "audio" in title.lower(): #Reservamos info de audio para después de TMDB title_subs += ['[%s]' % scrapertools.find_single_match(title, r'(\[[a|A]udio.*?\])')] title = re.sub(r'\[[a|A]udio.*?\]', '', title) - if "[dual" in title.lower() or "multileng" in title.lower() or "multileng" in item_local.quality.lower(): - item_local.language += ["DUAL"] + if "[dual" in title.lower() or "multileng" in title.lower() or "multileng" in item_local.quality.lower() or (("espa" in title.lower() or "spani" in title.lower()) and "VOS" in item_local.language): + item_local.language[0:0] = ["DUAL"] title = re.sub(r'\[[D|d]ual.*?\]', '', title) title = re.sub(r'\[[M|m]ultileng.*?\]', '', title) item_local.quality = re.sub(r'\[[M|m]ultileng.*?\]', '', item_local.quality) @@ -691,7 +685,7 @@ def listado_busqueda(item): title = title.replace("Ver online ", "").replace("Descarga Serie HD ", "").replace("Descargar Serie HD ", "").replace("Descarga Serie ", "").replace("Descargar Serie ", "").replace("Ver en linea ", "").replace("Ver en linea", "").replace("HD ", "").replace("(Proper)", "").replace("RatDVD", "").replace("DVDRiP", "").replace("DVDRIP", "").replace("DVDR", "").replace("DVD9", "").replace("DVD", "").replace("DVB", "").replace("- ES ", "").replace("ES ", "").replace("COMPLETA", "").replace("(", "-").replace(")", "-").replace(".", " ").strip() - title = title.replace("Descargar torrent ", "").replace("Descarga Gratis ", "").replace("Descargar Estreno ", "").replace("Descargar Estrenos ", "").replace("Pelicula en latino ", "").replace("Descargar Pelicula ", "").replace("Descargar Peliculas ", "").replace("Descargar peliculas ", "").replace("Descargar Todas ", "").replace("Descargar Otras ", "").replace("Descargar ", "").replace("Descarga ", "").replace("Bajar ", "").replace("RIP ", "").replace("Rip", "").replace("RiP", "").replace("RiP", "").replace("XviD", "").replace("AC3 5.1", "").replace("AC3", "").replace("1080p ", "").replace("720p ", "").replace("DVD-Screener ", "").replace("TS-Screener ", "").replace("Screener ", "").replace("BdRemux ", "").replace("BR ", "").replace("4KULTRA", "").replace("FULLBluRay", "").replace("FullBluRay", "").replace("BluRay", "").replace("Bonus Disc", "").replace("de Cine ", "").replace("TeleCine ", "").replace("latino", "").replace("Latino", "").replace("argentina", "").replace("Argentina", "").strip() + title = title.replace("Descargar torrent ", "").replace("Descarga Gratis ", "").replace("Descargar Estreno ", "").replace("Descargar Estrenos ", "").replace("Pelicula en latino ", "").replace("Descargar Pelicula ", "").replace("Descargar Peliculas ", "").replace("Descargar peliculas ", "").replace("Descargar Todas ", "").replace("Descargar Otras ", "").replace("Descargar ", "").replace("Descarga ", "").replace("Bajar ", "").replace("HDRIP ", "").replace("HDRiP ", "").replace("HDRip ", "").replace("RIP ", "").replace("Rip", "").replace("RiP", "").replace("XviD", "").replace("AC3 5.1", "").replace("AC3", "").replace("1080p ", "").replace("720p ", "").replace("DVD-Screener ", "").replace("TS-Screener ", "").replace("Screener ", "").replace("BdRemux ", "").replace("BR ", "").replace("4KULTRA", "").replace("FULLBluRay", "").replace("FullBluRay", "").replace("BluRay", "").replace("Bonus Disc", "").replace("de Cine ", "").replace("TeleCine ", "").replace("latino", "").replace("Latino", "").replace("argentina", "").replace("Argentina", "").strip() if "pelisyseries.com" in host and item_local.contentType == "tvshow": titulo = '' @@ -715,19 +709,18 @@ def listado_busqueda(item): if title.endswith(" -"): title = title[:-2] if "en espa" in title: title = title[:-11] #title = re.sub(r'^\s', '', title) - title = title.replace("a?o", 'año').replace("a?O", 'año').replace("A?o", 'Año').replace("A?O", 'Año') - while title.startswith(' '): - title = title[+1:] - while title.endswith(' '): - title = title[:-1] + title = title.replace("a?o", 'año').replace("a?O", 'año').replace("A?o", 'Año').replace("A?O", 'Año').strip() #Preparamos calidad item_local.quality = item_local.quality.replace("[ ", "").replace(" ]", "") #Preparamos calidad para Series item_local.quality = re.sub(r'\[\d{4}\]', '', item_local.quality) #Quitar año, si lo tiene item_local.quality = re.sub(r'\[Cap.*?\]', '', item_local.quality) #Quitar episodios, si lo tiene item_local.quality = re.sub(r'\[Docu.*?\]', '', item_local.quality) #Quitar tipo contenidos, si lo tiene - if "[es-" in item_local.quality.lower() or (("cast" in item_local.quality.lower() or "spani" in item_local.quality.lower()) and ("eng" in item_local.quality.lower() or "ing" in item_local.quality.lower())): #Mirar si es DUAL - item_local.language += ["DUAL"] #Salvar DUAL en idioma + #Mirar si es DUAL + if "VOS" in item_local.language and "DUAL" not in item_local.language and ("[sp" in item_local.quality.lower() or "espa" in item_local.quality.lower() or "cast" in item_local.quality.lower() or "spani" in item_local.quality.lower()): + item_local.language[0:0] = ["DUAL"] + if ("[es-" in item_local.quality.lower() or (("cast" in item_local.quality.lower() or "espa" in item_local.quality.lower() or "spani" in item_local.quality.lower()) and ("eng" in item_local.quality.lower() or "ing" in item_local.quality.lower()))) and "DUAL" not in item_local.language: #Mirar si es DUAL + item_local.language[0:0] = ["DUAL"] #Salvar DUAL en idioma item_local.quality = re.sub(r'\[[es|ES]-\w+]', '', item_local.quality) #borrar DUAL item_local.quality = re.sub(r'[\s|-][c|C]aste.+', '', item_local.quality) #Borrar después de Castellano item_local.quality = re.sub(r'[\s|-][e|E]spa.+', '', item_local.quality) #Borrar después de Español @@ -735,9 +728,7 @@ def listado_busqueda(item): item_local.quality = re.sub(r'[\s|-][i|I|e|E]ngl.+', '', item_local.quality) #Borrar después de Inglés-English item_local.quality = item_local.quality.replace("[", "").replace("]", " ").replace("ALTA DEFINICION", "HDTV").replace(" Cap", "") #Borrar palabras innecesarias restantes - item_local.quality = item_local.quality.replace("Espaol", "").replace("Español", "").replace("Espa", "").replace("Castellano ", "").replace("Castellano", "").replace("Spanish", "").replace("English", "").replace("Ingles", "").replace("Latino", "").replace("+Subs", "").replace("-Subs", "").replace("Subs", "").replace("VOSE", "").replace("VOS", "") - while item_local.quality.endswith(" "): #Borrar espacios de cola - item_local.quality = item_local.quality[:-1] + item_local.quality = item_local.quality.replace("Espaol", "").replace("Español", "").replace("Espa", "").replace("Castellano ", "").replace("Castellano", "").replace("Spanish", "").replace("English", "").replace("Ingles", "").replace("Latino", "").replace("+Subs", "").replace("-Subs", "").replace("Subs", "").replace("VOSE", "").replace("VOS", "").strip() #Limpieza final del título y guardado en las variables según su tipo de contenido item_local.title = title @@ -816,7 +807,7 @@ def listado_busqueda(item): #Agrega el item local a la lista itemlist itemlist.append(item_local.clone()) - if not category: #Si este campo no existe es que viene de la primera pasada de una búsqueda global + if not item.category: #Si este campo no existe es que viene de la primera pasada de una búsqueda global return itemlist #Retornamos sin pasar por la fase de maquillaje para ahorra tiempo #Pasamos a TMDB la lista completa Itemlist @@ -872,12 +863,12 @@ def listado_busqueda(item): if config.get_setting("unify"): #Si Titulos Inteligentes SÍ seleccionados: title = title.replace("[", "-").replace("]", "-") - title = title.replace("--", "").replace(" []", "").replace("()", "").replace("(/)", "").replace("[/]", "") - title = re.sub(r'\s\[COLOR \w+\]\[\]\[\/COLOR\]', '', title) - title = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', title) + title = title.replace("--", "").replace(" []", "").replace("()", "").replace("(/)", "").replace("[/]", "").strip() + title = re.sub(r'\s\[COLOR \w+\]\[\[?\]?\]\[\/COLOR\]', '', title).strip() + title = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', title).strip() item_local.title = title - logger.debug("url: " + item_local.url + " / title: " + item_local.title + " / content title: " + item_local.contentTitle + "/" + item_local.contentSerieName + " / calidad: " + item_local.quality + "[" + str(item_local.language) + "]" + " / calidad ORG: " + calidad + " / year: " + year + " / tamaño: " + size) + logger.debug("url: " + item_local.url + " / title: " + item_local.title + " / content title: " + item_local.contentTitle + "/" + item_local.contentSerieName + " / calidad: " + item_local.quality + "[" + str(item_local.language) + "]" + " / year: " + str(item_local.infoLabels['year'])) #logger.debug(item_local) @@ -889,7 +880,6 @@ def listado_busqueda(item): return itemlist def findvideos(item): - import xbmc from core import channeltools logger.info() itemlist = [] @@ -997,18 +987,31 @@ def findvideos(item): verificar_enlaces_descargas = -1 #Verificar todos los enlaces Descargar verificar_enlaces_descargas_validos = True #"¿Contar sólo enlaces 'verificados' en Descargar?" excluir_enlaces_descargas = [] #Lista vacía de servidores excluidos en Descargar - + # Saber si estamos en una ventana emergente lanzada desde una viñeta del menú principal, # con la función "play_from_library" unify_status = False - if xbmc.getCondVisibility('Window.IsMedia') == 1: + try: + import xbmc + if xbmc.getCondVisibility('Window.IsMedia') == 1: + unify_status = config.get_setting("unify") + except: unify_status = config.get_setting("unify") + #Salvamos la información de max num. de episodios por temporada para despues de TMDB + if item.infoLabels['temporada_num_episodios']: + num_episodios = item.infoLabels['temporada_num_episodios'] + else: + num_episodios = 1 + # Obtener la información actualizada del Episodio, si no la hay if not item.infoLabels['tmdb_id'] or (not item.infoLabels['episodio_titulo'] and item.contentType == 'episode'): tmdb.set_infoLabels(item, True) elif (not item.infoLabels['tvdb_id'] and item.contentType == 'episode') or item.contentChannel == "videolibrary": tmdb.set_infoLabels(item, True) + #Restauramos la información de max num. de episodios por temporada despues de TMDB + if item.infoLabels['temporada_num_episodios'] and num_episodios > item.infoLabels['temporada_num_episodios']: + item.infoLabels['temporada_num_episodios'] = num_episodios # Descarga la página data = re.sub(r"\n|\r|\t|\s{2}|()", "", httptools.downloadpage(item.url).data) @@ -1028,6 +1031,8 @@ def findvideos(item): item.infoLabels['episodio_titulo'] = re.sub(r'\s?\[.*?\]', '', item.infoLabels['episodio_titulo']) if item.infoLabels['episodio_titulo'] == item.contentSerieName: item.infoLabels['episodio_titulo'] = '' + if item.infoLabels['aired'] and item.contentType == "episode": + item.infoLabels['year'] = scrapertools.find_single_match(str(item.infoLabels['aired']), r'\/(\d{4})') #Generamos una copia de Item para trabajar sobre ella item_local = item.clone() @@ -1057,10 +1062,10 @@ def findvideos(item): else: title = item_local.title title_gen = title - - title_gen = re.sub(r'\s\[COLOR \w+\]\[\]\[\/COLOR\]', '', title_gen) #Quitamos etiquetas vacías - title_gen = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', title_gen) #Quitamos colores vacíos - title_gen = title_gen.replace(" []", "") #Quitamos etiquetas vacías + + title_gen = re.sub(r'\s\[COLOR \w+\]\[\[?\]?\]\[\/COLOR\]', '', title_gen).strip() #Quitamos etiquetas vacías + title_gen = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', title_gen).strip() #Quitamos colores vacíos + title_gen = title_gen.replace(" []", "").strip() #Quitamos etiquetas vacías if not unify_status: #Si Titulos Inteligentes NO seleccionados: title_gen = '**- [COLOR gold]Enlaces Ver: [/COLOR]%s[COLOR gold] -**[/COLOR]' % (title_gen) @@ -1074,9 +1079,9 @@ def findvideos(item): #Ahora pintamos el link del Torrent, si lo hay if item_local.url: # Hay Torrent ? - item_local.title = '[COLOR yellow][?][/COLOR] [COLOR yellow][Torrent][/COLOR] [COLOR limegreen][%s][/COLOR] [COLOR red][%s][/COLOR]' % (item_local.quality, str(item_local.language)) #Preparamos título de Torrent - item_local.title = re.sub(r'\s\[COLOR \w+\]\[\]\[\/COLOR\]', '', item_local.title) #Quitamos etiquetas vacías - item_local.title = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', item_local.title) #Quitamos colores vacíos + item_local.title = '[COLOR yellow][?][/COLOR] [COLOR yellow][Torrent][/COLOR] [COLOR limegreen][%s][/COLOR] [COLOR red]%s[/COLOR]' % (item_local.quality, str(item_local.language)) #Preparamos título de Torrent + item_local.title = re.sub(r'\s\[COLOR \w+\]\[\[?\]?\]\[\/COLOR\]', '', item_local.title).strip() #Quitamos etiquetas vacías + item_local.title = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', item_local.title).strip() #Quitamos colores vacíos item_local.alive = "??" #Calidad del link sin verificar item_local.action = "play" #Visualizar vídeo @@ -1156,9 +1161,9 @@ def findvideos(item): item_local.action = "play" item_local.server = servidor item_local.url = enlace - item_local.title = item_local.title.replace("[]", "") - item_local.title = re.sub(r'\s\[COLOR \w+\]\[\]\[\/COLOR\]', '', item_local.title) - item_local.title = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', item_local.title) + item_local.title = item_local.title.replace("[]", "").strip() + item_local.title = re.sub(r'\s\[COLOR \w+\]\[\[?\]?\]\[\/COLOR\]', '', item_local.title).strip() + item_local.title = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', item_local.title).strip() itemlist.append(item_local.clone()) except: pass @@ -1249,9 +1254,9 @@ def findvideos(item): item_local.action = "play" item_local.server = servidor item_local.url = enlace - item_local.title = parte_title.replace("[]", "") - item_local.title = re.sub(r'\[COLOR \w+\]\[\]\[\/COLOR\]', '', item_local.title) - item_local.title = re.sub(r'\[COLOR \w+\]-\[\/COLOR\]', '', item_local.title) + item_local.title = parte_title.replace("[]", "").strip() + item_local.title = re.sub(r'\s\[COLOR \w+\]\[\[?\]?\]\[\/COLOR\]', '', item_local.title).strip() + item_local.title = re.sub(r'\[COLOR \w+\]-\[\/COLOR\]', '', item_local.title).strip() itemlist.append(item_local.clone()) except: pass @@ -1426,10 +1431,10 @@ def episodios(item): item_local.title = '%s [%s] [%s] [COLOR limegreen][%s][/COLOR] [COLOR red]%s[/COLOR]' % (item_local.title, item_local.infoLabels['year'], rating, item_local.quality, str(item_local.language)) #Quitamos campos vacíos - item_local.infoLabels['episodio_titulo'] = item_local.infoLabels['episodio_titulo'].replace(" []", "") - item_local.title = item_local.title.replace(" []", "") - item_local.title = re.sub(r'\s\[COLOR \w+\]\[\]\[\/COLOR\]', '', item_local.title) - item_local.title = re.sub(r'\s\[COLOR \w+\]-\[\/COLOR\]', '', item_local.title) + item_local.infoLabels['episodio_titulo'] = item_local.infoLabels['episodio_titulo'].replace(" []", "").strip() + item_local.title = item_local.title.replace(" []", "").strip() + item_local.title = re.sub(r'\s\[COLOR \w+\]\[\[?\]?\]\[\/COLOR\]', '', item_local.title).strip() + item_local.title = re.sub(r'\s\[COLOR \w+\]-\[\/COLOR\]', '', item_local.title).strip() if num_episodios < item_local.contentEpisodeNumber: num_episodios = item_local.contentEpisodeNumber if num_episodios and not item_local.infoLabels['temporada_num_episodios']: diff --git a/plugin.video.alfa/channels/tvsinpagar.py b/plugin.video.alfa/channels/tvsinpagar.py index e2833d72..4af3fc06 100644 --- a/plugin.video.alfa/channels/tvsinpagar.py +++ b/plugin.video.alfa/channels/tvsinpagar.py @@ -236,7 +236,7 @@ def listado(item): #Determinamos y marcamos idiomas distintos del castellano item_local.language = [] - if "[vos" in title.lower() or "v.o.s" in title.lower() or "vo" in title.lower() or ".com/pelicula/" in scrapedurl or ".com/series-vo" in scrapedurl or "-vo/" in scrapedurl or "vos" in calidad.lower() or "vose" in calidad.lower() or "v.o.s" in calidad.lower() or ".com/peliculas-vo" in item.url: + if "[vos" in title.lower() or "v.o.s" in title.lower() or "vo" in title.lower() or ".com/pelicula/" in scrapedurl or ".com/series-vo" in scrapedurl or "-vo/" in scrapedurl or "vos" in calidad.lower() or "vose" in calidad.lower() or "v.o.s" in calidad.lower() or "sub" in calidad.lower() or ".com/peliculas-vo" in item.url: item_local.language += ["VOS"] title = title.replace(" [Subs. integrados]", "").replace(" [subs. Integrados]", "").replace(" [VOSE", "").replace(" [VOS", "").replace(" (V.O.S.E)", "").replace(" VO", "").replace("Subtitulos", "") if "latino" in title.lower() or "argentina" in title.lower() or "-latino/" in scrapedurl or "latino" in calidad.lower() or "argentina" in calidad.lower(): @@ -272,8 +272,8 @@ def listado(item): if "audio" in title.lower(): #Reservamos info de audio para después de TMDB title_subs += ['[%s]' % scrapertools.find_single_match(title, r'(\[[a|A]udio.*?\])')] title = re.sub(r'\[[a|A]udio.*?\]', '', title) - if "[dual" in title.lower() or "multileng" in title.lower() or "multileng" in item_local.quality.lower(): - item_local.language += ["DUAL"] + if "[dual" in title.lower() or "multileng" in title.lower() or "multileng" in item_local.quality.lower() or (("espa" in title.lower() or "spani" in title.lower()) and "VOS" in item_local.language): + item_local.language[0:0] = ["DUAL"] title = re.sub(r'\[[D|d]ual.*?\]', '', title) title = re.sub(r'\[[M|m]ultileng.*?\]', '', title) item_local.quality = re.sub(r'\[[M|m]ultileng.*?\]', '', item_local.quality) @@ -309,7 +309,7 @@ def listado(item): title = title.replace("Ver online ", "").replace("Descarga Serie HD ", "").replace("Descargar Serie HD ", "").replace("Descarga Serie ", "").replace("Descargar Serie ", "").replace("Ver en linea ", "").replace("Ver en linea", "").replace("HD ", "").replace("(Proper)", "").replace("RatDVD", "").replace("DVDRiP", "").replace("DVDRIP", "").replace("DVDR", "").replace("DVD9", "").replace("DVD", "").replace("DVB", "").replace("- ES ", "").replace("ES ", "").replace("COMPLETA", "").replace("(", "-").replace(")", "-").replace(".", " ").strip() - title = title.replace("Descargar torrent ", "").replace("Descarga Gratis ", "").replace("Descargar Estreno ", "").replace("Descargar Estrenos ", "").replace("Pelicula en latino ", "").replace("Descargar Pelicula ", "").replace("Descargar Peliculas ", "").replace("Descargar peliculas ", "").replace("Descargar Todas ", "").replace("Descargar Otras ", "").replace("Descargar ", "").replace("Descarga ", "").replace("Bajar ", "").replace("RIP ", "").replace("Rip", "").replace("RiP", "").replace("RiP", "").replace("XviD", "").replace("AC3 5.1", "").replace("AC3", "").replace("1080p ", "").replace("720p ", "").replace("DVD-Screener ", "").replace("TS-Screener ", "").replace("Screener ", "").replace("BdRemux ", "").replace("BR ", "").replace("4KULTRA", "").replace("FULLBluRay", "").replace("FullBluRay", "").replace("BluRay", "").replace("Bonus Disc", "").replace("de Cine ", "").replace("TeleCine ", "").replace("latino", "").replace("Latino", "").replace("argentina", "").replace("Argentina", "").strip() + title = title.replace("Descargar torrent ", "").replace("Descarga Gratis ", "").replace("Descargar Estreno ", "").replace("Descargar Estrenos ", "").replace("Pelicula en latino ", "").replace("Descargar Pelicula ", "").replace("Descargar Peliculas ", "").replace("Descargar peliculas ", "").replace("Descargar Todas ", "").replace("Descargar Otras ", "").replace("Descargar ", "").replace("Descarga ", "").replace("Bajar ", "").replace("HDRIP ", "").replace("HDRiP ", "").replace("HDRip ", "").replace("RIP ", "").replace("Rip", "").replace("RiP", "").replace("XviD", "").replace("AC3 5.1", "").replace("AC3", "").replace("1080p ", "").replace("720p ", "").replace("DVD-Screener ", "").replace("TS-Screener ", "").replace("Screener ", "").replace("BdRemux ", "").replace("BR ", "").replace("4KULTRA", "").replace("FULLBluRay", "").replace("FullBluRay", "").replace("BluRay", "").replace("Bonus Disc", "").replace("de Cine ", "").replace("TeleCine ", "").replace("latino", "").replace("Latino", "").replace("argentina", "").replace("Argentina", "").strip() if title.endswith("torrent gratis"): title = title[:-15] if title.endswith("gratis"): title = title[:-7] @@ -324,16 +324,9 @@ def listado(item): if not "HDR" in item_local.quality: item_local.quality += " HDR" - while title.endswith(' '): - title = title[:-1] - while title.startswith(' '): - title = title[+1:] - while title_alt.endswith(' '): - title_alt = title_alt[:-1] - while title_alt.startswith(' '): - title_alt = title_alt[+1:] - while item_local.quality.endswith(' '): - item_local.quality = item_local.quality[:-1] + title = title.strip() + title_alt = title_alt.strip() + item_local.quality = item_local.quality.strip() if not title: #Usamos solo el title_alt en caso de que no exista el título original title = title_alt @@ -416,9 +409,9 @@ def listado(item): if config.get_setting("unify"): #Si Titulos Inteligentes SÍ seleccionados: title = title.replace("[", "-").replace("]", "-") - title = title.replace("--", "").replace(" []", "").replace("()", "").replace("(/)", "").replace("[/]", "") - title = re.sub(r'\s\[COLOR \w+\]\[\]\[\/COLOR\]', '', title) - title = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', title) + title = title.replace("--", "").replace(" []", "").replace("()", "").replace("(/)", "").replace("[/]", "").strip() + title = re.sub(r'\s\[COLOR \w+\]\[\[?\]?\]\[\/COLOR\]', '', title).strip() + title = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', title).strip() if category == "newest": #Viene de Novedades. Marquemos el título con el nombre del canal title += ' -%s-' % item_local.channel.capitalize() @@ -427,7 +420,7 @@ def listado(item): item_local.title = title - logger.debug("url: " + item_local.url + " / title: " + item_local.title + " / content title: " + item_local.contentTitle + "/" + item_local.contentSerieName + " / calidad: " + item_local.quality + " / year: " + year) + logger.debug("url: " + item_local.url + " / title: " + item_local.title + " / content title: " + item_local.contentTitle + "/" + item_local.contentSerieName + " / calidad: " + item_local.quality + " / year: " + str(item_local.infoLabels['year'])) #logger.debug(item_local) if len(itemlist) == 0: @@ -447,15 +440,10 @@ def listado_busqueda(item): cnt_tot = 40 # Poner el num. máximo de items por página. Dejamos que la web lo controle cnt_title = 0 # Contador de líneas insertadas en Itemlist cnt_pag = 0 # Contador de líneas leídas de Matches - category = "" # Guarda la categoria que viene desde una busqueda global if item.cnt_pag: cnt_pag = item.cnt_pag # Se guarda en la lista de páginas anteriores en Item del item.cnt_pag - - if item.category: - category = item.category - del item.category if item.totalItems: del item.totalItems if item.text_bold: @@ -578,12 +566,14 @@ def listado_busqueda(item): title_lista += [scrapedurl_alt] else: title_lista += [scrapedurl] - if "juego/" in scrapedurl or "xbox" in scrapedurl.lower() or "xbox" in scrapedtitle.lower() or "xbox" in calidad.lower() or "epub" in calidad.lower() or "pdf" in calidad.lower(): # no mostramos lo que no sean videos + if "juego/" in scrapedurl or "xbox" in scrapedurl.lower() or "xbox" in scrapedtitle.lower() or "windows" in scrapedtitle.lower() or "windows" in calidad.lower() or "nintendo" in scrapedtitle.lower() or "xbox" in calidad.lower() or "epub" in calidad.lower() or "pdf" in calidad.lower() or "pcdvd" in calidad.lower() or "crack" in calidad.lower(): # no mostramos lo que no sean videos continue cnt_title += 1 # Sería una línea real más para Itemlist #Creamos una copia de Item para cada contenido item_local = item.clone() + if item_local.category: + del item_local.category if item_local.tipo: del item_local.tipo if item_local.totalItems: @@ -594,6 +584,10 @@ def listado_busqueda(item): del item_local.pattern if item_local.title_lista: del item_local.title_lista + item_local.adult = True + del item_local.adult + item_local.folder = True + del item_local.folder item_local.title = '' item_local.context = "['buscar_trailer']" @@ -620,7 +614,7 @@ def listado_busqueda(item): #Determinamos y marcamos idiomas distintos del castellano item_local.language = [] - if "[vos" in title.lower() or "v.o.s" in title.lower() or "vo" in title.lower() or ".com/pelicula/" in scrapedurl or ".com/series-vo" in scrapedurl or "-vo/" in scrapedurl or "vos" in calidad.lower() or "vose" in calidad.lower() or "v.o.s" in calidad.lower(): + if "[vos" in title.lower() or "v.o.s" in title.lower() or "vo" in title.lower() or ".com/pelicula/" in scrapedurl or ".com/series-vo" in scrapedurl or "-vo/" in scrapedurl or "vos" in calidad.lower() or "vose" in calidad.lower() or "v.o.s" in calidad.lower() or "sub" in calidad.lower() or ".com/peliculas-vo" in item.url: item_local.language += ["VOS"] title = title.replace(" [Subs. integrados]", "").replace(" [subs. Integrados]", "").replace(" [VOSE", "").replace(" [VOS", "").replace(" (V.O.S.E)", "").replace(" VO", "").replace("Subtitulos", "") if "latino" in title.lower() or "argentina" in title.lower() or "-latino/" in scrapedurl or "latino" in calidad.lower() or "argentina" in calidad.lower(): @@ -654,8 +648,8 @@ def listado_busqueda(item): if "audio" in title.lower(): #Reservamos info de audio para después de TMDB title_subs += ['[%s]' % scrapertools.find_single_match(title, r'(\[[a|A]udio.*?\])')] title = re.sub(r'\[[a|A]udio.*?\]', '', title) - if "[dual" in title.lower() or "multileng" in title.lower() or "multileng" in item_local.quality.lower(): - item_local.language += ["DUAL"] + if "[dual" in title.lower() or "multileng" in title.lower() or "multileng" in item_local.quality.lower() or (("espa" in title.lower() or "spani" in title.lower()) and "VOS" in item_local.language): + item_local.language[0:0] = ["DUAL"] title = re.sub(r'\[[D|d]ual.*?\]', '', title) title = re.sub(r'\[[M|m]ultileng.*?\]', '', title) item_local.quality = re.sub(r'\[[M|m]ultileng.*?\]', '', item_local.quality) @@ -691,7 +685,7 @@ def listado_busqueda(item): title = title.replace("Ver online ", "").replace("Descarga Serie HD ", "").replace("Descargar Serie HD ", "").replace("Descarga Serie ", "").replace("Descargar Serie ", "").replace("Ver en linea ", "").replace("Ver en linea", "").replace("HD ", "").replace("(Proper)", "").replace("RatDVD", "").replace("DVDRiP", "").replace("DVDRIP", "").replace("DVDR", "").replace("DVD9", "").replace("DVD", "").replace("DVB", "").replace("- ES ", "").replace("ES ", "").replace("COMPLETA", "").replace("(", "-").replace(")", "-").replace(".", " ").strip() - title = title.replace("Descargar torrent ", "").replace("Descarga Gratis ", "").replace("Descargar Estreno ", "").replace("Descargar Estrenos ", "").replace("Pelicula en latino ", "").replace("Descargar Pelicula ", "").replace("Descargar Peliculas ", "").replace("Descargar peliculas ", "").replace("Descargar Todas ", "").replace("Descargar Otras ", "").replace("Descargar ", "").replace("Descarga ", "").replace("Bajar ", "").replace("RIP ", "").replace("Rip", "").replace("RiP", "").replace("RiP", "").replace("XviD", "").replace("AC3 5.1", "").replace("AC3", "").replace("1080p ", "").replace("720p ", "").replace("DVD-Screener ", "").replace("TS-Screener ", "").replace("Screener ", "").replace("BdRemux ", "").replace("BR ", "").replace("4KULTRA", "").replace("FULLBluRay", "").replace("FullBluRay", "").replace("BluRay", "").replace("Bonus Disc", "").replace("de Cine ", "").replace("TeleCine ", "").replace("latino", "").replace("Latino", "").replace("argentina", "").replace("Argentina", "").strip() + title = title.replace("Descargar torrent ", "").replace("Descarga Gratis ", "").replace("Descargar Estreno ", "").replace("Descargar Estrenos ", "").replace("Pelicula en latino ", "").replace("Descargar Pelicula ", "").replace("Descargar Peliculas ", "").replace("Descargar peliculas ", "").replace("Descargar Todas ", "").replace("Descargar Otras ", "").replace("Descargar ", "").replace("Descarga ", "").replace("Bajar ", "").replace("HDRIP ", "").replace("HDRiP ", "").replace("HDRip ", "").replace("RIP ", "").replace("Rip", "").replace("RiP", "").replace("XviD", "").replace("AC3 5.1", "").replace("AC3", "").replace("1080p ", "").replace("720p ", "").replace("DVD-Screener ", "").replace("TS-Screener ", "").replace("Screener ", "").replace("BdRemux ", "").replace("BR ", "").replace("4KULTRA", "").replace("FULLBluRay", "").replace("FullBluRay", "").replace("BluRay", "").replace("Bonus Disc", "").replace("de Cine ", "").replace("TeleCine ", "").replace("latino", "").replace("Latino", "").replace("argentina", "").replace("Argentina", "").strip() if "pelisyseries.com" in host and item_local.contentType == "tvshow": titulo = '' @@ -715,19 +709,18 @@ def listado_busqueda(item): if title.endswith(" -"): title = title[:-2] if "en espa" in title: title = title[:-11] #title = re.sub(r'^\s', '', title) - title = title.replace("a?o", 'año').replace("a?O", 'año').replace("A?o", 'Año').replace("A?O", 'Año') - while title.startswith(' '): - title = title[+1:] - while title.endswith(' '): - title = title[:-1] + title = title.replace("a?o", 'año').replace("a?O", 'año').replace("A?o", 'Año').replace("A?O", 'Año').strip() #Preparamos calidad item_local.quality = item_local.quality.replace("[ ", "").replace(" ]", "") #Preparamos calidad para Series item_local.quality = re.sub(r'\[\d{4}\]', '', item_local.quality) #Quitar año, si lo tiene item_local.quality = re.sub(r'\[Cap.*?\]', '', item_local.quality) #Quitar episodios, si lo tiene item_local.quality = re.sub(r'\[Docu.*?\]', '', item_local.quality) #Quitar tipo contenidos, si lo tiene - if "[es-" in item_local.quality.lower() or (("cast" in item_local.quality.lower() or "spani" in item_local.quality.lower()) and ("eng" in item_local.quality.lower() or "ing" in item_local.quality.lower())): #Mirar si es DUAL - item_local.language += ["DUAL"] #Salvar DUAL en idioma + #Mirar si es DUAL + if "VOS" in item_local.language and "DUAL" not in item_local.language and ("[sp" in item_local.quality.lower() or "espa" in item_local.quality.lower() or "cast" in item_local.quality.lower() or "spani" in item_local.quality.lower()): + item_local.language[0:0] = ["DUAL"] + if ("[es-" in item_local.quality.lower() or (("cast" in item_local.quality.lower() or "espa" in item_local.quality.lower() or "spani" in item_local.quality.lower()) and ("eng" in item_local.quality.lower() or "ing" in item_local.quality.lower()))) and "DUAL" not in item_local.language: #Mirar si es DUAL + item_local.language[0:0] = ["DUAL"] #Salvar DUAL en idioma item_local.quality = re.sub(r'\[[es|ES]-\w+]', '', item_local.quality) #borrar DUAL item_local.quality = re.sub(r'[\s|-][c|C]aste.+', '', item_local.quality) #Borrar después de Castellano item_local.quality = re.sub(r'[\s|-][e|E]spa.+', '', item_local.quality) #Borrar después de Español @@ -735,9 +728,7 @@ def listado_busqueda(item): item_local.quality = re.sub(r'[\s|-][i|I|e|E]ngl.+', '', item_local.quality) #Borrar después de Inglés-English item_local.quality = item_local.quality.replace("[", "").replace("]", " ").replace("ALTA DEFINICION", "HDTV").replace(" Cap", "") #Borrar palabras innecesarias restantes - item_local.quality = item_local.quality.replace("Espaol", "").replace("Español", "").replace("Espa", "").replace("Castellano ", "").replace("Castellano", "").replace("Spanish", "").replace("English", "").replace("Ingles", "").replace("Latino", "").replace("+Subs", "").replace("-Subs", "").replace("Subs", "").replace("VOSE", "").replace("VOS", "") - while item_local.quality.endswith(" "): #Borrar espacios de cola - item_local.quality = item_local.quality[:-1] + item_local.quality = item_local.quality.replace("Espaol", "").replace("Español", "").replace("Espa", "").replace("Castellano ", "").replace("Castellano", "").replace("Spanish", "").replace("English", "").replace("Ingles", "").replace("Latino", "").replace("+Subs", "").replace("-Subs", "").replace("Subs", "").replace("VOSE", "").replace("VOS", "").strip() #Limpieza final del título y guardado en las variables según su tipo de contenido item_local.title = title @@ -816,7 +807,7 @@ def listado_busqueda(item): #Agrega el item local a la lista itemlist itemlist.append(item_local.clone()) - if not category: #Si este campo no existe es que viene de la primera pasada de una búsqueda global + if not item.category: #Si este campo no existe es que viene de la primera pasada de una búsqueda global return itemlist #Retornamos sin pasar por la fase de maquillaje para ahorra tiempo #Pasamos a TMDB la lista completa Itemlist @@ -872,12 +863,12 @@ def listado_busqueda(item): if config.get_setting("unify"): #Si Titulos Inteligentes SÍ seleccionados: title = title.replace("[", "-").replace("]", "-") - title = title.replace("--", "").replace(" []", "").replace("()", "").replace("(/)", "").replace("[/]", "") - title = re.sub(r'\s\[COLOR \w+\]\[\]\[\/COLOR\]', '', title) - title = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', title) + title = title.replace("--", "").replace(" []", "").replace("()", "").replace("(/)", "").replace("[/]", "").strip() + title = re.sub(r'\s\[COLOR \w+\]\[\[?\]?\]\[\/COLOR\]', '', title).strip() + title = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', title).strip() item_local.title = title - logger.debug("url: " + item_local.url + " / title: " + item_local.title + " / content title: " + item_local.contentTitle + "/" + item_local.contentSerieName + " / calidad: " + item_local.quality + "[" + str(item_local.language) + "]" + " / calidad ORG: " + calidad + " / year: " + year + " / tamaño: " + size) + logger.debug("url: " + item_local.url + " / title: " + item_local.title + " / content title: " + item_local.contentTitle + "/" + item_local.contentSerieName + " / calidad: " + item_local.quality + "[" + str(item_local.language) + "]" + " / year: " + str(item_local.infoLabels['year'])) #logger.debug(item_local) @@ -889,7 +880,6 @@ def listado_busqueda(item): return itemlist def findvideos(item): - import xbmc from core import channeltools logger.info() itemlist = [] @@ -997,18 +987,31 @@ def findvideos(item): verificar_enlaces_descargas = -1 #Verificar todos los enlaces Descargar verificar_enlaces_descargas_validos = True #"¿Contar sólo enlaces 'verificados' en Descargar?" excluir_enlaces_descargas = [] #Lista vacía de servidores excluidos en Descargar - + # Saber si estamos en una ventana emergente lanzada desde una viñeta del menú principal, # con la función "play_from_library" unify_status = False - if xbmc.getCondVisibility('Window.IsMedia') == 1: + try: + import xbmc + if xbmc.getCondVisibility('Window.IsMedia') == 1: + unify_status = config.get_setting("unify") + except: unify_status = config.get_setting("unify") + #Salvamos la información de max num. de episodios por temporada para despues de TMDB + if item.infoLabels['temporada_num_episodios']: + num_episodios = item.infoLabels['temporada_num_episodios'] + else: + num_episodios = 1 + # Obtener la información actualizada del Episodio, si no la hay if not item.infoLabels['tmdb_id'] or (not item.infoLabels['episodio_titulo'] and item.contentType == 'episode'): tmdb.set_infoLabels(item, True) elif (not item.infoLabels['tvdb_id'] and item.contentType == 'episode') or item.contentChannel == "videolibrary": tmdb.set_infoLabels(item, True) + #Restauramos la información de max num. de episodios por temporada despues de TMDB + if item.infoLabels['temporada_num_episodios'] and num_episodios > item.infoLabels['temporada_num_episodios']: + item.infoLabels['temporada_num_episodios'] = num_episodios # Descarga la página data = re.sub(r"\n|\r|\t|\s{2}|()", "", httptools.downloadpage(item.url).data) @@ -1028,6 +1031,8 @@ def findvideos(item): item.infoLabels['episodio_titulo'] = re.sub(r'\s?\[.*?\]', '', item.infoLabels['episodio_titulo']) if item.infoLabels['episodio_titulo'] == item.contentSerieName: item.infoLabels['episodio_titulo'] = '' + if item.infoLabels['aired'] and item.contentType == "episode": + item.infoLabels['year'] = scrapertools.find_single_match(str(item.infoLabels['aired']), r'\/(\d{4})') #Generamos una copia de Item para trabajar sobre ella item_local = item.clone() @@ -1057,10 +1062,10 @@ def findvideos(item): else: title = item_local.title title_gen = title - - title_gen = re.sub(r'\s\[COLOR \w+\]\[\]\[\/COLOR\]', '', title_gen) #Quitamos etiquetas vacías - title_gen = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', title_gen) #Quitamos colores vacíos - title_gen = title_gen.replace(" []", "") #Quitamos etiquetas vacías + + title_gen = re.sub(r'\s\[COLOR \w+\]\[\[?\]?\]\[\/COLOR\]', '', title_gen).strip() #Quitamos etiquetas vacías + title_gen = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', title_gen).strip() #Quitamos colores vacíos + title_gen = title_gen.replace(" []", "").strip() #Quitamos etiquetas vacías if not unify_status: #Si Titulos Inteligentes NO seleccionados: title_gen = '**- [COLOR gold]Enlaces Ver: [/COLOR]%s[COLOR gold] -**[/COLOR]' % (title_gen) @@ -1074,9 +1079,9 @@ def findvideos(item): #Ahora pintamos el link del Torrent, si lo hay if item_local.url: # Hay Torrent ? - item_local.title = '[COLOR yellow][?][/COLOR] [COLOR yellow][Torrent][/COLOR] [COLOR limegreen][%s][/COLOR] [COLOR red][%s][/COLOR]' % (item_local.quality, str(item_local.language)) #Preparamos título de Torrent - item_local.title = re.sub(r'\s\[COLOR \w+\]\[\]\[\/COLOR\]', '', item_local.title) #Quitamos etiquetas vacías - item_local.title = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', item_local.title) #Quitamos colores vacíos + item_local.title = '[COLOR yellow][?][/COLOR] [COLOR yellow][Torrent][/COLOR] [COLOR limegreen][%s][/COLOR] [COLOR red]%s[/COLOR]' % (item_local.quality, str(item_local.language)) #Preparamos título de Torrent + item_local.title = re.sub(r'\s\[COLOR \w+\]\[\[?\]?\]\[\/COLOR\]', '', item_local.title).strip() #Quitamos etiquetas vacías + item_local.title = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', item_local.title).strip() #Quitamos colores vacíos item_local.alive = "??" #Calidad del link sin verificar item_local.action = "play" #Visualizar vídeo @@ -1156,9 +1161,9 @@ def findvideos(item): item_local.action = "play" item_local.server = servidor item_local.url = enlace - item_local.title = item_local.title.replace("[]", "") - item_local.title = re.sub(r'\s\[COLOR \w+\]\[\]\[\/COLOR\]', '', item_local.title) - item_local.title = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', item_local.title) + item_local.title = item_local.title.replace("[]", "").strip() + item_local.title = re.sub(r'\s\[COLOR \w+\]\[\[?\]?\]\[\/COLOR\]', '', item_local.title).strip() + item_local.title = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', item_local.title).strip() itemlist.append(item_local.clone()) except: pass @@ -1249,9 +1254,9 @@ def findvideos(item): item_local.action = "play" item_local.server = servidor item_local.url = enlace - item_local.title = parte_title.replace("[]", "") - item_local.title = re.sub(r'\[COLOR \w+\]\[\]\[\/COLOR\]', '', item_local.title) - item_local.title = re.sub(r'\[COLOR \w+\]-\[\/COLOR\]', '', item_local.title) + item_local.title = parte_title.replace("[]", "").strip() + item_local.title = re.sub(r'\s\[COLOR \w+\]\[\[?\]?\]\[\/COLOR\]', '', item_local.title).strip() + item_local.title = re.sub(r'\[COLOR \w+\]-\[\/COLOR\]', '', item_local.title).strip() itemlist.append(item_local.clone()) except: pass @@ -1426,10 +1431,10 @@ def episodios(item): item_local.title = '%s [%s] [%s] [COLOR limegreen][%s][/COLOR] [COLOR red]%s[/COLOR]' % (item_local.title, item_local.infoLabels['year'], rating, item_local.quality, str(item_local.language)) #Quitamos campos vacíos - item_local.infoLabels['episodio_titulo'] = item_local.infoLabels['episodio_titulo'].replace(" []", "") - item_local.title = item_local.title.replace(" []", "") - item_local.title = re.sub(r'\s\[COLOR \w+\]\[\]\[\/COLOR\]', '', item_local.title) - item_local.title = re.sub(r'\s\[COLOR \w+\]-\[\/COLOR\]', '', item_local.title) + item_local.infoLabels['episodio_titulo'] = item_local.infoLabels['episodio_titulo'].replace(" []", "").strip() + item_local.title = item_local.title.replace(" []", "").strip() + item_local.title = re.sub(r'\s\[COLOR \w+\]\[\[?\]?\]\[\/COLOR\]', '', item_local.title).strip() + item_local.title = re.sub(r'\s\[COLOR \w+\]-\[\/COLOR\]', '', item_local.title).strip() if num_episodios < item_local.contentEpisodeNumber: num_episodios = item_local.contentEpisodeNumber if num_episodios and not item_local.infoLabels['temporada_num_episodios']: From 5dca91c1a530877d34f39e5afd6a50150db5562f Mon Sep 17 00:00:00 2001 From: Kingbox <37674310+lopezvg@users.noreply.github.com> Date: Wed, 23 May 2018 21:15:17 +0200 Subject: [PATCH 22/24] =?UTF-8?q?EliteTorrent:=20redise=C3=B1o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reparación y rediseño --- plugin.video.alfa/channels/elitetorrent.json | 8 +- plugin.video.alfa/channels/elitetorrent.py | 613 ++++++++++++++++-- .../media/channels/thumb/elitetorrent.png | Bin 0 -> 20518 bytes 3 files changed, 548 insertions(+), 73 deletions(-) create mode 100644 plugin.video.alfa/resources/media/channels/thumb/elitetorrent.png diff --git a/plugin.video.alfa/channels/elitetorrent.json b/plugin.video.alfa/channels/elitetorrent.json index a0044960..72705725 100644 --- a/plugin.video.alfa/channels/elitetorrent.json +++ b/plugin.video.alfa/channels/elitetorrent.json @@ -3,7 +3,7 @@ "name": "Elite Torrent", "active": true, "adult": false, - "language": ["cast"], + "language": ["*"], "thumbnail": "elitetorrent.png", "banner": "elitetorrent.png", "categories": [ @@ -15,10 +15,10 @@ ], "settings":[ { - "id": "include_in_newest_torrent", + "id": "include_in_global_search", "type": "bool", - "label": "Incluir en Novedades - Torrent", - "default": true, + "label": "Incluir en busqueda global", + "default": false, "enabled": true, "visible": true } diff --git a/plugin.video.alfa/channels/elitetorrent.py b/plugin.video.alfa/channels/elitetorrent.py index 66181660..42e69560 100644 --- a/plugin.video.alfa/channels/elitetorrent.py +++ b/plugin.video.alfa/channels/elitetorrent.py @@ -1,111 +1,586 @@ # -*- coding: utf-8 -*- import re +import sys +import urllib import urlparse +from channelselector import get_thumb +from core import httptools from core import scrapertools +from core import servertools from core.item import Item -from platformcode import logger +from platformcode import config, logger +from core import tmdb -BASE_URL = 'http://www.elitetorrent.wesconference.net' +host = 'http://www.elitetorrent.biz' def mainlist(item): logger.info() - itemlist = [] - itemlist.append(Item(channel=item.channel, title="Docus y TV", action="peliculas", - url="http://www.elitetorrent.wesconference.net/categoria/6/docus-y-tv/modo:mini", - viewmode="movie_with_plot")) - itemlist.append(Item(channel=item.channel, title="Estrenos", action="peliculas", - url="http://www.elitetorrent.wesconference.net/categoria/1/estrenos/modo:mini", viewmode="movie_with_plot")) - itemlist.append(Item(channel=item.channel, title="Películas", action="peliculas", - url="http://www.elitetorrent.wesconference.net/categoria/2/peliculas/modo:mini", viewmode="movie_with_plot")) - itemlist.append(Item(channel=item.channel, title="Peliculas HDRip", action="peliculas", - url="http://www.elitetorrent.wesconference.net/categoria/13/peliculas-hdrip/modo:mini", - viewmode="movie_with_plot")) - itemlist.append(Item(channel=item.channel, title="Peliculas MicroHD", action="peliculas", - url="http://www.elitetorrent.wesconference.net/categoria/17/peliculas-microhd/modo:mini", - viewmode="movie_with_plot")) - itemlist.append(Item(channel=item.channel, title="Peliculas VOSE", action="peliculas", - url="http://www.elitetorrent.wesconference.net/categoria/14/peliculas-vose/modo:mini", - viewmode="movie_with_plot")) - itemlist.append(Item(channel=item.channel, title="Series", action="peliculas", - url="http://www.elitetorrent.wesconference.net/categoria/4/series/modo:mini", viewmode="movie_with_plot")) - itemlist.append(Item(channel=item.channel, title="Series VOSE", action="peliculas", - url="http://www.elitetorrent.wesconference.net/categoria/16/series-vose/modo:mini", - viewmode="movie_with_plot")) + + thumb_pelis = get_thumb("channels_movie.png") + thumb_pelis_hd = get_thumb("channels_movie_hd.png") + thumb_series = get_thumb("channels_tvshow.png") + thumb_series_hd = get_thumb("channels_tvshow_hd.png") + thumb_buscar = get_thumb("search.png") + + itemlist.append(Item(channel=item.channel, action="submenu", title="Películas", url=host, extra="peliculas", thumbnail=thumb_pelis)) + + itemlist.append(Item(channel=item.channel, action="submenu", title="Series", url=host, extra="series", thumbnail=thumb_series)) + + itemlist.append(Item(channel=item.channel, action="search", title="Buscar", url=host, thumbnail=thumb_buscar)) return itemlist + + +def submenu(item): + logger.info() + itemlist = [] + + data = re.sub(r"\n|\r|\t|\s{2}|()", "", httptools.downloadpage(item.url).data) + + patron = '
  • - IMG: Mandela (microHD - 720p) -
    - Mandela (microHD - 720p) - Peliculas microHD - Hace 2 sem - Título: Mandela: Del mito al hombre
    - ''' - patron = '' - patron += ']+>' - patron += '.*?(.*?)' + patron = '
    .*?<\/nav><\/div><\/div>' + data = scrapertools.find_single_match(data, patron) + + patron = '
  • .*?', '', scrapedplot) - logger.debug("title=[" + title + "], url=[" + url + "], thumbnail=[" + thumbnail + "]") - itemlist.append(Item(channel=item.channel, action="play", title=title, url=url, thumbnail=thumbnail, plot=plot, - folder=False)) + for scrapedurl, scrapedtitle, scrapedthumbnail, scrapedcategory, scrapedcalidad, scrapedsize, scrapedsizet in matches: + item_local = item.clone() #Creamos copia de Item para trabajar + + title = re.sub('\r\n', '', scrapedtitle).decode('utf8').strip() + title = title.replace(" torrent", "").replace(" Torrent", "").replace("Series y ", "") + item_local.url = urlparse.urljoin(host, scrapedurl) + item_local.thumbnail = urlparse.urljoin(host, scrapedthumbnail) + + if "---" in scrapedcalidad: #Scrapeamos y limpiamos calidades + scrapedcalidad = '' + if "microhd" in title.lower(): + item_local.quality = "microHD" + if not "/series-vose/" in item.url and not item_local.quality: + item_local.quality = scrapedcalidad + if scrapertools.find_single_match(item_local.quality, r'\d+\.\d+'): + item_local.quality = '' + if not item_local.quality and ("DVDRip" in title or "HDRip" in title or "BR-LINE" in title or "HDTS-SCREENER" in title or "BDRip" in title or "BR-Screener" in title or "DVDScreener" in title or "TS-Screener" in title): + item_local.quality = scrapertools.find_single_match(title, r'\((.*?)\)') + item_local.quality = item_local.quality.replace("Latino", "") + if not scrapedsizet: + scrapedsize = '' + else: + item_local.quality += ' [%s %s]' % (scrapedsize.replace(".", ","), scrapedsizet) + + item_local.language = [] #Verificamos el idioma por si encontramos algo + if "latino" in scrapedcategory.lower() or "latino" in item.url or "latino" in title.lower(): + item_local.language += ["LAT"] + if "ingles" in scrapedcategory.lower() or "ingles" in item.url or "vose" in scrapedurl or "vose" in item.url: + if "VOSE" in scrapedcategory.lower() or "sub" in title.lower() or "vose" in scrapedurl or "vose" in item.url: + item_local.language += ["VOS"] + else: + item_local.language += ["VO"] + if "dual" in scrapedcategory.lower() or "dual" in title.lower(): + item_local.language[0:0] = ["DUAL"] + + #Limpiamos el título de la basuna innecesaria + title = title.replace("Dual", "").replace("dual", "").replace("Subtitulada", "").replace("subtitulada", "").replace("Subt", "").replace("subt", "").replace("Sub", "").replace("sub", "").replace("(Proper)", "").replace("(proper)", "").replace("Proper", "").replace("proper", "").replace("#", "").replace("(Latino)", "").replace("Latino", "") + title = title.replace("- HDRip", "").replace("(HDRip)", "").replace("- Hdrip", "").replace("(microHD)", "").replace("(DVDRip)", "").replace("(HDRip)", "").replace("(BR-LINE)", "").replace("(HDTS-SCREENER)", "").replace("(BDRip)", "").replace("(BR-Screener)", "").replace("(DVDScreener)", "").replace("TS-Screener", "").replace(" TS", "").replace(" Ts", "") + title = re.sub(r'\??\s?\d*?\&.*', '', title).title().strip() + + if item_local.extra == "peliculas": #preparamos Item para películas + if "/serie" in scrapedurl or "/serie" in item.url: + continue + item_local.contentType = "movie" + item_local.contentTitle = title.strip() + else: #preparamos Item para series + if not "/serie" in scrapedurl and not "/serie" in item.url: + continue + item_local.contentType = "episode" + epi_mult = scrapertools.find_single_match(item_local.url, r'cap.*?-\d+-(al-\d+)') + item_local.contentSeason = scrapertools.find_single_match(item_local.url, r'temp.*?-(\d+)') + item_local.contentEpisodeNumber = scrapertools.find_single_match(item_local.url, r'cap.*?-(\d+)') + if not item_local.contentSeason: + item_local.contentSeason = scrapertools.find_single_match(item_local.url, r'-(\d+)[x|X]\d+') + if not item_local.contentEpisodeNumber: + item_local.contentEpisodeNumber = scrapertools.find_single_match(item_local.url, r'-\d+[x|X](\d+)') + if item_local.contentSeason < 1: + item_local.contentSeason = 1 + if item_local.contentEpisodeNumber < 1: + item_local.contentEpisodeNumber = 1 + item_local.contentSerieName = title.strip() + if epi_mult: + title = '%s, %s' % (epi_mult.replace("-", " "), title) + + item_local.action = "findvideos" + item_local.title = title.strip() + item_local.infoLabels['year'] = "-" + + itemlist.append(item_local.clone()) #Pintar pantalla + + #Pasamos a TMDB la lista completa Itemlist + tmdb.set_infoLabels(itemlist, True) + + # Pasada para maquillaje de los títulos obtenidos desde TMDB + for item_local in itemlist: + title = item_local.title + # Si TMDB no ha encontrado el vídeo limpiamos el año + if item_local.infoLabels['year'] == "-": + item_local.infoLabels['year'] = '' + item_local.infoLabels['aired'] = '' + + # Preparamos el título para series, con los núm. de temporadas, si las hay + if item_local.contentType == "season" or item_local.contentType == "tvshow": + item_local.contentTitle= '' + if item_local.contentType == "episode": + if scrapertools.find_single_match(title, r'(al\s\d+)'): + item_local.infoLabels['episodio_titulo'] = scrapertools.find_single_match(title, r'(al\s\d+)') + if scrapertools.find_single_match(str(item_local.infoLabels['aired']), r'\/(\d{4})'): + item_local.infoLabels['year'] = scrapertools.find_single_match(str(item_local.infoLabels['aired']), r'\/(\d{4})') + + rating = '' + if item_local.infoLabels['rating'] and item_local.infoLabels['rating'] != '0.0': + rating = float(item_local.infoLabels['rating']) + rating = round(rating, 1) + + #Ahora maquillamos un poco los titulos dependiendo de si se han seleccionado títulos inteleigentes o no + if not config.get_setting("unify"): #Si Titulos Inteligentes NO seleccionados: + if item_local.contentType == "episode": + if item_local.infoLabels['episodio_titulo']: + title = '%sx%s %s, %s [COLOR yellow][%s][/COLOR] [%s] [COLOR limegreen][%s][/COLOR] [COLOR red]%s[/COLOR]' % (str(item_local.contentSeason), str(item_local.contentEpisodeNumber).zfill(2), item_local.infoLabels['episodio_titulo'], item_local.contentSerieName, item_local.infoLabels['year'], rating, item_local.quality, str(item_local.language)) + else: + title = '%sx%s %s [COLOR yellow][%s][/COLOR] [%s] [COLOR limegreen][%s][/COLOR] [COLOR red]%s[/COLOR]' % (str(item_local.contentSeason), str(item_local.contentEpisodeNumber).zfill(2), item_local.contentSerieName, item_local.infoLabels['year'], rating, item_local.quality, str(item_local.language)) + item_local.infoLabels['title'] = item_local.contentSerieName + + elif item_local.contentType == "season" or item_local.contentType == "tvshow": + if item_local.extra == "series": + title = '%s - Temporada %s [COLOR yellow][%s][/COLOR] [%s] [COLOR limegreen][%s][/COLOR] [COLOR red]%s[/COLOR]' % (item_local.contentSerieName, item_local.contentSeason, item_local.infoLabels['year'], rating, item_local.quality, str(item_local.language)) + else: + title = '%s [COLOR yellow][%s][/COLOR] [%s] [COLOR limegreen][%s][/COLOR] [COLOR red]%s[/COLOR]' % (item_local.contentSerieName, item_local.infoLabels['year'], rating, item_local.quality, str(item_local.language)) + + elif item_local.contentType == "movie": + title = '%s [COLOR yellow][%s][/COLOR] [%s] [COLOR limegreen][%s][/COLOR] [COLOR red]%s[/COLOR]' % (title, str(item_local.infoLabels['year']), rating, item_local.quality, str(item_local.language)) + + if config.get_setting("unify"): #Si Titulos Inteligentes SÍ seleccionados: + if item_local.contentType == "episode": + if item_local.infoLabels['episodio_titulo']: + item_local.infoLabels['episodio_titulo'] = '%s, %s [%s] [%s]' % (item_local.infoLabels['episodio_titulo'], item_local.contentSerieName, item_local.infoLabels['year'], rating) + else: + item_local.infoLabels['episodio_titulo'] = '%s [%s] [%s]' % (item_local.contentSerieName, item_local.infoLabels['year'], rating) + item_local.infoLabels['title'] = item_local.contentSerieName + + elif item_local.contentType == "season" or item_local.contentType == "tvshow": + if item_local.extra == "series": + title = '%s - Temporada %s [%s] [%s]' % (item_local.contentSerieName, item_local.contentSeason, item_local.infoLabels['year'], rating) + else: + title = '%s' % (item_local.contentSerieName) + + item_local.infoLabels['episodio_titulo'] = item_local.infoLabels['episodio_titulo'].replace("--", "").replace("[]", "").replace("()", "").replace("(/)", "").replace("[/]", "").strip() + title = title.replace("--", "").replace("[]", "").replace("()", "").replace("(/)", "").replace("[/]", "").strip() + title = re.sub(r'\s\[COLOR \w+\]\[\[?\]?\]\[\/COLOR\]', '', title).strip() + title = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', title).strip() + + item_local.title = title + + logger.debug("url: " + item_local.url + " / title: " + item_local.title + " / content title: " + item_local.contentTitle + "/" + item_local.contentSerieName + " / calidad: " + item_local.quality + " / year: " + str(item_local.infoLabels['year'])) + # Extrae el paginador - patronvideos = 'Siguiente \»\;' - matches = re.compile(patronvideos, re.DOTALL).findall(data) - scrapertools.printMatches(matches) + patron = '
    .*? 0: + if matches: scrapedurl = urlparse.urljoin(item.url, matches[0]) - itemlist.append( - Item(channel=item.channel, action="peliculas", title="Página siguiente >>", url=scrapedurl, folder=True, - viewmode="movie_with_plot")) + if last_page: + title = '[COLOR gold]Página siguiente >>[/COLOR] %s de %s' % (int(matches[1]) - 1, last_page) + else: + title = '[COLOR gold]Página siguiente >>[/COLOR] %s' % (int(matches[1]) - 1) + + itemlist.append(Item(channel=item.channel, action="listado", title=title, url=scrapedurl, extra=item.extra)) return itemlist - -def play(item): + +def listado_busqueda(item): logger.info() itemlist = [] - data = scrapertools.cache_page(item.url) - if "http://www.bajui.com/redi.php" in data: - data = scrapertools.cache_page(item.url) + # Descarga la página + data = re.sub(r"\n|\r|\t|\s{2}|()", "", httptools.downloadpage(item.url).data) - # Descargar por magnet link - link = scrapertools.get_match(data, - '.*?<\/nav><\/div><\/div>' + data = scrapertools.find_single_match(data, patron) + + patron = '
  • .*?)", "", httptools.downloadpage(item.url).data) + #data = unicode(data, "utf-8", errors="replace") + + #Añadimos el tamaño para todos + size = scrapertools.find_single_match(item.quality, '\s\[(\d+,?\d*?\s\w[b|B]s)\]') + item.quality = re.sub('\s\[\d+,?\d*?\s\w[b|B]s\]', '', item.quality) #Quitamos size de calidad, si lo traía + if size: + item.title = re.sub('\s\[\d+,?\d*?\s\w[b|B]s\]', '', item.title) #Quitamos size de título, si lo traía + item.title = '%s [%s]' % (item.title, size) #Agregamos size al final del título + + #Limpiamos de año y rating de episodios + if item.infoLabels['episodio_titulo']: + item.infoLabels['episodio_titulo'] = re.sub(r'\s?\[.*?\]', '', item.infoLabels['episodio_titulo']) + if item.infoLabels['episodio_titulo'] == item.contentSerieName: + item.infoLabels['episodio_titulo'] = '' + if item.infoLabels['aired'] and item.contentType == "episode": + item.infoLabels['year'] = scrapertools.find_single_match(str(item.infoLabels['aired']), r'\/(\d{4})') + + #Generamos una copia de Item para trabajar sobre ella + item_local = item.clone() + + patron = '
    KOq7D02CSNFRB0l5ON6wz{5g5^qfk~001(8%oj0rkJa<< zaGBT|b2Up?+?Rn&GVx(yMpGs3Ay`7lsZa;K=KL3Ts6s-!;fDOXFteP0(ra2??JBk& zY!FDa7`J&@DD(FPnDg4vwDQ+yg-5xx$X|`ruJQ) zGDjnu1or6|B=&g3IHt|ppT7BS-c@);#1()UM-$@$$* zNc7O2>9kRbL>=S(qWiO2WlVR|TpP(>=22(5O|eA9mJgCUjCXd42ef}sD4v4rF9z?+ zH@j^5Ey8XZmojs@3Tey!5&vPxc;`2{cVrS(+2Yt*>_^92Uf+5xPqy7~PQ(p#=zTT}nW)+0 z%e1>Z>CCzK$#wwJeilrA+Hu(<0$fFjJ^eAQ56 zeWuqn-;M^pDawQR5^KpCJg{BSYmb1rKI&$I1ZmBipzx_ycIzR-=cnfY@^6qIf1|=- zqF$q%V?gqoVU;B6?_5x7AH|qVjM?}3j+i^8$WEsK6okduJ^9{3BaULtJiWLt#U7w6 z1AG z0{Doe^5ig>C|GK0!>BP^{;MudInIG>X-XraKf0iOQbGbg0sNc*h67Z$+BPQ9m}(r- z$G)MnwhtDg+a-RZs}E<>V-?ZOi*MQa^k-F;M`dycEw1C)wypW621NTMa9NSnII*xy zeL{7czx7elWW&FtNNL?>tuWSf2&eRGZ^W`Az_&`x<&aqfE5*&WX@2t}iFbY+ z#)l283PH&~o*o`>)0Hqqn-E@I_DlH~sSa{(E7oqYa+z;f+RS==O#2KCPC!IY{>~xY zVFG-ZgVCSxfkVpW0=z=@MPz3#CNfM%uh^-m!JM|noJc{*mJT8R*=s>=`91zOoonkM z@rAUyul4ZlR;cR;DR0{H)S5h*ghCU~RkQjTnK=q39CI?M>=LFTtG-9R(X|)je*6;G ztEHn+Q)?a9m^*^8PpAVAu412U6+9ggP5g3ldVt1v4V^ssm&fwLJDcdSf9nWl@6h;81Uyb^rJZ={GmuL9cCmyv3B3AeJy^F{P!3ue$4*(F{@~?>TT^BMRgT!L4E$x3O6uqts9Q9SRMlnS?hYuc%d27k<6&&EkDXW__bF{^}S8xoCjXo_I90O=ZO^ zF!0DQ9!4ExqJgJM6kCq#yrfCfD{aPz27K-2VFO`OU2M~pBf%3<&DJ45-sAs^9?=vZ zbr#>lg^F6{SduOi8E=u>W$-_S+R8+r#(66>-5umeg^DH#Ogk13JL96%!&!Y82$c<0 z#4iN^FN}hH$Q;~;Fh!$T6l;^4Kv=mrCLmQ9M-s|w`hC}*sY$Jt=UV=}=_%S_nRVZ?BC(@W84gvnR44192rk@=Qwf&y;v6z+BabC%M?7#Hs2 ze?{64L#eL5D%jim=lHvaaFN3OT*%l07?tBO?XwomOwv0<(ZNRWD(E~>nxmegpR~@i z`Jv5;=^uNy8UGyM7I&e{129Wts$GJOIA+TEg4hcg^~XAXzwMag1`kqcjzeN4^iVDaPVL_9FM8g=8pA4?1* zqRN@M(gD!tE(xzTkC&1*MP9JK>3jxxAssIluw+VIKUeX|&oKgT3s< zZio&&j;s8heMH4b9`hyllAjPj&<&4qL8BPxe;C z>CgUyR<~c(^zki>QQ;F<)hm|uWebM?_wqxq0EPKRTge`(2`~WNn%OnDiUL;j&B3*f z`9L&wBEUMukG3LLv_K(a;t}r`ZNy|c>}0$ba zwY^Uu=aMY9)rG$f9xXmnbf2Q`FSdFlxtOS^8E03Gnnt^5#Y?lSac`g*m)Qk;b;UlGw9FvwQ}; zCc^iMPMTl|u(DNgVRs$;6ViI<`nY&SouI1WDZ9B+2F$giKiHpiJ~i(5I!x~1KU$Wu zX$l7FRdnezqt$}2lL1)YoDzG-6f%=H~}6k)C3 zcgnCo>cvJIrhK5F&(U&*&|vUkLN=ZeiynsIoggK$D8+$VaW4KKfqABiwvLsiJhu|l zDfuy-T9h+1?6T_oF!y#k^>mv?_=wN9Y&lBsj#2ONpV(YZEFR%b07Wc{%AsDt5-SVB z$I0tOJPf*}EwJw!29$#}FtaZ*i?q{zlK(;-^L_G?6bko(=8|USJ5-+C_hnh5><{=o zJ$k%8J#KT7us;T7$zU>91a&e)IG7GTEOu+XUfAws&mZoDK{U4r6N1w4d~{h9tXAS% zf-4_&ExnTg zfs+j1Y)4oavFW9sTci!cN61C=4<66)VwLWeSrlfz=WY~FcmCDWxuH3AX`7^i9(xVD zpJ_|RB*EoopK6&DnV5Fscab~UNCNtEH)g2$m*^v0vDrB~Z2J>8AwOci+bLgi-q5@w zV_+2p)=b7oYT9EyMH_)N^>3QDPvurMPI6%ZunG9gRN@&7qs;eLvZ7=V4^cVfpZO%V zQzw?g^>%nLyNn;xrtY1}t~P1v+@sL_)@yUsdZZrNm|Kge6`czH+Y0sh=?ooRZUiY2 z(U0v`Ix(wNB%gKodut314vtVdr|f)*(#P{pJbf+PTCZ=iWTNz4^F)484@56k^Mvki z7?^dg>!91ftO?hpxdMxLoUOlH&S??Q!9P^xLv^K(zNv(u_8f6Yvazk}xIyc{kOFch z>X7=yo=*Ob^mYgkY&>`k@QVb4WQsaed7CMUiqYqd9gp3S2rn-l+M5y!ExY1twmu8_ z-FExSDfr$}R_ZokV*Yb2yA=7zzrHBQfsXTMNr3?X6QsX6b$>U5gR@4ehsKA8Cc1YT zG5KTwM~&@zaq-4PPk+3c`NQidFH{)T9}4Z+`=>Lw@^#8ro-3-`RcEJcOW%^)MvndBgiZr-?i0L;xGT1-<>ozw%7WwNQ5zb`j7}9e{}7tVo91})Wf>+fSMQ(2 z$}VBf&-j~NpAC}OC&p{v7r#Zpl~yO$U4wgn#3hz8IFTkE-w6a-zDrVCCm|_wJ9#Wznvuv7^?*xe*EE<-GDMTW$AF!&E4gnKfKT=rx>(!G&LWbOilM$ zkqCY-Bsbb``SF_YVw{d*K*g}K|6NDRkgDo?I)i^Y>q`}Iib{W|K^I@;C@d)ThA9*vHDI-3dB9f6TnT1Kj8 z8(kMT)Cb<&kx=IByM@aw&PR^&rF5?M%VI47= zACxK{IPe2SIQa+z7hGbxU_jp+V(Om2Z4L%4i*lBxUa$U&%2cVb{ulAA^6l=DANaON z#Q6`K-u9>__G9D^=Zx;XlT<9~f$I;gPrDPJ!+Y*~5Kh1OA8I(n&vYw8^$(QNa?nIJ z0KCMvKHG(ew{F=_BRD{*djdZJnu}r3JJ_%XsIX8;xsMc2m$-d;)0CzAMGfC2!adfq z8Mk~Mlg_>4ak}E@cs1Vf*-^@1VwEf3g@*`_9i`dZOr*%$3R@TX#61JR>NsI5NX2?= zh(E=Penu*e#h2vxd68hxWDR>x$ndLT0vx>lr9SOOeh&A3-U9zS#f{isLsbIAFT*}_ zf8m%=P!!eL)56{b9ed7qFJTO^gtowmEQzVWLFr;p#!{U4zx*-ItvsQMqmiSC5H)&t zwBs|Eo7U@bG2O`vu%~~0k{ZR#&HRY^a-D#c7QA6Q_|I*81y-~h; z)#aA=$P85mAFB;D01iH_)_P|MT8r0dj`@w;Umv1ibR~@N=pQO1hU~s35oSFjPh;P; z9%tL-u_A=#wf?)*LMT(OKOU8P56V~^!0r>Yg5i>#o;Ng5>m8d8O7Ni$mt{oqXJN`B zM6Ja=f@X5o3sfD6t)3-_DiFoi= z&*9YeNLf7#h|pxe>_*KbE+6F~5U8rj0&z=cx_Zr5k9mX^p%bOQYQ^}*#0}9|AVc&` z7kn=3Rf^@M>*&ZhIngmarau1>>-=EEnWm+TAK!_w^U!k9K&X;5qq4Xc3psty%xeOJ zzk-6o-HLgRkk3>mpTB;c(IC|6VwJbg`D#q;tRHvRjve-j_r4Y2OFFeXZ}fJ>E$)mb47v z<6ZcvufUxHOQ9_sD*^N&UWeDdDQXswt8PU$hhAHMLh@HF^a7y|+dKrs)naK0)3{wO z^x@4fp-@tR@npxwhbLCNXbjldY-#gb87nTSeoU?8Ef1=`aw3yEmJoS9Du6>J;=STP z0(ij&*oUGL8$whpzf~_7=r2!&NmzyBG6sbvc(wBzO{BB;X#!na0p*bPtrI)!33Pwb zhWjch14=P_-C<+&W(Zf+b8Vo#-WyFw0k_N55H#ZDg^B0i3eBka6mfO2?Qt#^UGC<6 zfBDXG#|3k>V2$qN!Wxip5vIBo50L#c~g zkX=eFsPn_g${Z(6*9Iljp!gGFq96>OY*7h)eHkwj&3c#)K_P6`Wy1A7t{-Q4sVI8w zy6L){wP8glroj1Ik&uj(On3o9q*i>_k9*N-y zm!%G{w0z+uLY>UuxeU>@YunG8Qw`lHPTOjbOJRXq_d2aYvsteFD}#iNN-e6KA0``G z^rCtI4JYRW180o)RZEn?p)X#xDE>dw#;;r=UU8vIVq%>ZOa%kq${tXRVZI)7{k+dI zavMTVCk408VvR|dE>FTxTO&EX8m!d%18ro|MGxCf)VdTFd%}M=x1px4vK=#7#;Fj8 z5_v%#T`{CGOTx}*{wQNpjZWnI`ThiJ(amMuFiDcDt1GJxqsK>bCj7#}!gn|{5v@u|0~X=D-HVmFr?*VQPb*eL&ytk8aU}$#GL0+12T5!8;MxI0!L1HuZpm*(^}gs zR@3)7{0ULhrfI19Rnc5#F$e&6?np(w|a*O3#mU0{5`1tr{ zC^*#4DNtI8lE~Yg9gvI+4(|NWhC93Y2^x+E584I*&-SE-X$V{ODmG0H6kfpnA^6mz zTax~(+iw)X$^*x^(J@l}Q+U4dkx}S2-Eu%bs=!48CAt=uSnuLCsI|iX2=7qeOlbE^ z%{;<;V2C&o2Xp^IES1Q437R7>935l}kji6VFWo6~&CM;J3)-9Cy?SzCL>@=vLX zlD_}jKX0(KiOic?8g|iK9c(={im55t*w=5>dTmlaF2)&q2+;3>h_+2IXXF^%;6G)& zd!9&_Zq?#C_c>L}E`Jh|j+)>3J7J|{e z8!d1lw4bQf9+*CvJOuqXjR^;x4@A6lMpG0xZ%hX%rEhid=KxNSF#!>zL zqq1fbs_SB`@thCKNKz3L8*cR4%OA3IX@J7E_G!k_VwhyVY%6BLq znqDq@KJsAN0U4kn6ta)#ekVhPeU{XLlQ^iL@M4uEVUQWe)VLTODZa!e;lg=dSobH- z0|K&(1C_Pvj=*-ig3`IbC<+aq+%eLwlYd?0>h;#`1jrmUM=^KZW+oMIoVvkw2x(6n zw4CHg@&`abeZUdJ=;QUSef_t;BTBwO&;L%{y+lRX=uDGDnr~rNgL*E=&c)AKw)}85 z+Fb<-Vy)}e^V$LK;zhjVqdGtMP?ZNTdEwzLe;@o=N=f@=9(jY=YeCOT3neP0fSPB; z){teh3)*dis_e8yYyRHCG3ahM*ho0@i3yB;CwQbM)#+vCBoG}dXvWbUwsA-n{EzeB zAQGn-)3-P*Z{_Rxt`IdPp(eGZ>hJz5pe^eL&JpoEG(bV4doy782uis5iU>u^QGVEaghlA@if?Web2eaADE!<&qpa{ zZluUO2qA2wFqWO3K)hwTUIJ|t+4y7L9lTvkz6x4KjQc>ZsEool{R~C-)`SIe;OHf~ z5#fQ|OAayB>NO(dPD}X8N+Y{f2mrQODL9B_``nEFoy50UZ*?@@po|f`i8j>{8Nu&Z z5UxzR-(0irdD}<8qLH_=uqd^kLgBv|p^O3gqXZy>AOz;Mgjk|BA*8&G`ue{*-fxxvP2iP*{azWyC=YBf1vq?^gb&=Pgbt%sV*N*i~`(|3P7Du_vz6_xsqhgJVTOV@FbZf#}X zeq2m$yVfk!%m>Bod@y0n6x+}O%E+I!DDCX*9H>{OSlq=NPp4}j)%}_d#}+5eWYFfc zpD2?+6V>y$^Gjr<_6HOxlHZ$pxN5E<&H-6(X4~X2S7I~h-F>|D=+Zy{j+s%0yFEDi z_~gEaol&B~|^Y^IK@apP`=kMz7J{ zS)aySb0k70g5tfd3NiVfzHX1LL150R7UGLl_ZDrMd@+O<2C)0T-{zEnwTQnuBbWZf z<=+NFHNR{Jp}lLVsHh}e9(I1bzZgSG=s_?HSyC)1!jRtlaoIR#W2#=t3QhQNd&7Oh zb?G<1%aH>*w$|GcCg!ifk3wzoumpSk4={{-kdmWJQ9XTfU-to--tiS=Xag$I? z!L^XakJ6gLP+Yw0*SZCyVk)~6-(UX{yVicd37(2g;-%6zZ^F7(Etdm*Z40%vGYaP4 z39+touwPpvXQq0uZP3>g0nS4LNT5XJ{g0Q*xc9dgca}XQChdBYC)<_{ZVg0rm4~2e zGfP12x553T@9rBT7?e`4#Ba0i0FeJRN*Z#9PrGHhD&YO^yPGU+#kMv_@eeh z&f^z+K@>&sJ6rRu@@8>DztAi@xXNMjn9}C}YJ(j6{ForX5-!RU`hn~|0B@}G?4lvO zkndr4A$}zXB*N+&TZZiWa(^Cw`BV3x`)Sp>#@F=e9^ooMmn$|0Wq?AaW*bf9^@``( zqZ6`%`iXl~s@|culOqTfZo7p@OxB8u3hzxPR{cisPQ0zmQ<>J{$bQFpv+n1xOgPxm zTPRTswC&wtgSAAW&n6sP+)TG>VF6lru#L*_gSU^0;)Rtcdo8YQld^SMfU#t4sjUKk z88cDX+R+1%Fg-*4CH$%9M!$VoY3d*?E2lZZwWXOdwUSQC-Q-JB|I4liT$!;P<B%p#4itB7Dsyb&CD~q94n(`TudDc?8-_2bnl}k%?@f7vj@Ztk?_>PTgtAPmIz%p?v?E zt_Q5JJA^51sgaEuFb>t^$7q*bmD*bJPCliMp8;y}W5~__=%66gFMB;)Y}g*n zj}~S?MEG(F%j33 zKQZ^4-j^K^4VDJ&e?U4e@wC4sxx|uWaxjFGu#o^G2ljj!U@1d3NsWi5oPYX#-(gRR z{>m6ZW>~imY$ZegJ{12 z;^H@YVa6f{NicqPu_=&9?+E48VieLkL|8-mzBk*f{kkZ96YnNFzd4KLqCz3Fv3e{`I;2*Nr zbl4}b%Gk3;F-Pq*y=TuUrL{Fr=ogtU4m*LB@kvZU1|>G5Jfh|V2Ib^_&3=pJSI-G! zvghmdu)kv;4Bjg}5o!vq*Zjd$*2{0>7@_-f$SILszaBc%%#rF=arN1Hu~NU&<2oPG z?0i4Y8m6awKHeTQ14cT(w3r@miikRJ#^rjSIKxfY4=I^@BX3vdCopAafA*=C-pCv5 z4(M!;lw@SQQTDS1Ho72#HQX;`{*e3(MjaaHzB2J6yZ%RJS{~s;78AbzZks^;(G!XEAe_hz}xt%(5Rm(+^O%4=Waai^i@K^KDP^UlrJYX)8SXuA_iH_%Iz$#<)59Ep zzv0uGp7%fB-B$KJGL8z;4(@IwQ2F*S$sx%Olb1X7O{7}=!{e)ZPXpyPW*7oSsCOdcXROhJ?zy4IXC35>UjM(Qy^w zosaj~G#-q=VT3rZ`83L}(V0SCcSmw^O!Rx7+Fgz@>w9TojY6rCEOS($#WToKqqHGm zca#dc#kgY%)zGP*i777NimYc%GQ@-NChXTAz{DgI^V~)6ATAUD5rA)^Gg?M2&+@b* zr_nK{hnQ{cO2BQi+(<4Ff_-NSktD~1cm_VrzKwed^*-;Hkm7zxO<<$CBFJ=};xqQX zKU?Voh5pvSTHu)1^toR#pJy)0xqd#aso6f%0yNciQUBEY3IRE`R*kuSi1iw=>RKR$ z?V5>1W&qCT42T_oE%kukb*u;_mq^vNM0lffpQDx2dvU<*26~8v<)nJp(&C{Pl!LVfV zHdJHqa%_m_f3Q%Zlm}ERyMSp;#e?9)e_m+E&6%9F>(bk^z=J<18jYuh4;?TiIaJVU zKj3WHi)jC}yPo3e{xZ3&^2O?gh_k0q60f746lUFKgjePX3%>H2esm|!^TO$d?zI!~ znhMC-z#(Ry01a|75h;ZqSAV=%0r>_br=N&&E~KtJ7-#N7t(*OoMRw4X!>Zwkpj+xNr3gsE^COo@|gPz34afCGVXF1&L<&2VjbH%3-i& z92;Di5oG6xMTS%3Jm*hfyB=%zFCx2W>IIZ%PQYslR9ro*esc$(HLYtWZ3(k3|eS zd0+-$)zxiE)%VV(%k)Ab@1+X%3G$Wl_;NXeQrFlP$&>Ce0hydKYnJ z^sippeF@uJbH4$mleF7#e7yiu(OzXszHuf3lFz(R#6a!qE(QRrEpM8|z$I;EQ2$&~ z6U+=I3AoK@N?hk|x9|g4bH0NMypak}%nMy2oI<#AS#9EBqbyVoBXbx1oTiF|%ap1b z1~kT(+FX-N?zeA+*rXhO$h$RYBH;%2*rZn9v`w7Sj5=AUYoWZF&ubd^HdW5_m6esz z!+b77RCtd|OWCiS5Kj~t`84v0&@j&;ZC)7PlU7^G38-v{@Pj1*`;sOQq-rx3a~LYACY>ZMzjXq2cjq^7;f8KL+#5SVdHq;tI)^u`@DMF9SfV(z^4s(8FjT zRGR0=KsZ*}wKV!@79((N~| zz_W3;P992hGY6TmJ_!>cMZ0?17kbErr7cffqse~_RN7o#P7NF0g|UT6PD;`cz4~S) zEY>NWNQ$KHXD?r%u|ZUj{p1zZDpV+VOS-{*iz?S!uYKzTSmU;b!Ivz2_2XQZw^a}M zx&CZNg9gPh+S>RgVmvH?+IS|0WA4}N=hDc*Y}>Dx#$l=_=c9eL0DQQv&Ab zgUAs_^BO%W7<_0tjtTKO*}-7wOf9BwGv5p)B_%y^8B1oo-o+>0ZN^yJ^{8=>^Y?{- zU8}+^Mc9Fdx)ipA(({v*#}5nR4WbIf_Et!ScDidYkON<XqqdXzDrMYK)QCSZDT{ z5X%i(Ks|&#h<{)dC9#mXBIJ(;U4=1p2ZEl(KanD;5Y5(8+V@JYps%@aljqu9k?BG? zHRTc_)#`x@O{oGdREzxj~@>V&^uPIA~59JlvM)1*;1ZTP)1TR8|@w5-itQuYRX>w=>#z1^8?eCx^LJkLlU_MTC z)8Nnj7`u-G(a^4kt2Q!X;{2x&LeT66nNZ-&xP?&?e%ccfQ@~2Dl4Gx^u8uxyJIqcZ z7I14+(3uLTv8txOJu!#VGN-7iFO0oZQB_q%J*n;$`MGjgLxu7crPAUK2q6r51@BX{O(+#?~=AJ(Ljj+sIQ ze7@DXG$0+d^47o@jN{wd-vFp#AW4(>-p%?C%1@^SnmlZ{UkX9oNyG2I4%LR3m$K_W z7Av)bAQ8t~`@i;w6jlS_S*}S|h}+cfKCSL>gYr*MNT#eUQ)PoFc~T@q5XX?Xz*(&X z!CrLV2eFp_T>e>;_0sz(j@>PO=#Dv^%3iQ-)4SQ_tqD$_q}N4fBP|*N zB^kKIATPdL83zo5XX-A9(Kv*D(J`l5^WA_spl)yDNCVrGI>*Gn^)ZkzX7$*-+a}`_dxq?3VyqHI#n8+exp4S<)Mk2bvc<85NY7 z`D0)Tb(Q~JZhh=SR(4-eUS7`Zq1^vBtf@UGQ?^L4w5GC4W#wPJ# z-Syo{G!qR64!Ja4Wt|?Yx~D<4TXNoM@y+mA++N&z5Qpqitsler`|pqbQp(sBMwgSo zQB)wNp?g>kGb5Q*=5x%v*qNz4xZUU5rY7D*|9?QAM$S`hl7#3tyf$F2ySTWxVPCU_ zUi4{xZYH)`BZe0)%2E_4%*UeF%C`CEPh(!}^u=AdOffUk>TWPO_!x42Vfn;m<%~&O@v6u z5AMnhbUrt|L80I&!px7AueE-T#L!sD zCpuu}%15%QW*S95yU$eIzO)Q{4)ZxS2=Px}Eud{xrCp|7M{;ZoayxAgXFR8K@@qlj z5ic}BfQ=3%O6p zjK5Ti-3BZx#6jIBx3VYa=s%1x)N2M5UjfHFd#>B3W@ zIFI>$io3ughS^J&KyXZw+U>Mu-ufQGuETvlM1R3eN2av};-NF-KL3J4c>(&Gdi+vwoQ&=4XEmi2tNlaiIkibD;-GK(9 z!H6g!@B7Zvn{igsZm0dRq6}||v+p5;zwrG1A!2=9Q(ynRgmYTZnJLT@f#KVR56;A! zFJz1tMjMcnBtG4l3&@gHLEMLf=Xl#_wAkJGc#BACK1ZWE`-P5<0Cb!x?E5i`N4oop zP*J!blJZdl2?UWro56}UR)HuY(GMz*xq8CzRK&}q%$N*_GTyvrjccrtw_mf!+JLXI z?y!5r0aRhsUB~Ty9hT;hn9Ckw?xCvFAfoS!^}o%;>47@zO_r$@Hb@L`{5urQp8^{Z z<#@B}1u91P`AF}|eMdz>75ek7BKn%j^CN^RAu+?3#|DD=)T<3Ygz5HE{Pl+}x9o;F zjE4=jcK!<6KEX8l2kRascuu^0rP(<+UFt%$8rrv^UzH^POQGh211Qww&wP2;b(qNw zK`F`*K0@TtUkHXK#kW2mT4KEokr`7 z^~`|+hFdipS1n6ig&;t}{T#yn4%5@q%RK})E!vRB&8M@wULi9bSv=-bM2h?r^ETHA z^qeoyFl9F?Ebij|kR}S#1}G{j+DDgf*u*pwDGxy|v=!NnXV)}rbTPloO6}N{+m({$ z56CCPZrsag*&HCHtpSPz#g{u;&Z-03dF)PMiZeU|B1hXt;dpjZ_qd^|vfTACJ~f|w z#;sb7a|1eedB@xkclDAv?*gmq<>n{OKmD|%*-DqdG$!u$P&V=JB&(v{mfz|mWi0-`au$M|YI>qPtE69f2Lf|Q3a4Y&J&Ug}~K z^e=a-;Ryt|3{}Wk_eUr;!x94MFwucM4)7xkwz3@{1_t}I0)zLgY`k$N5}_2gy}#SJ z5ionJK!=#2p`p$VfDsUE0<^J{6$o!LAtL8W3ityn(XTd8K-az;VSv)jZ2{c&) z@GLosQt@?3F8PKBJdz>Z*F?t%_(crZTbP;b??=1vB$k)=>O9|0dM2MfqyhrR2)02$ zz%j--0KvsJ z<)`zx=^@I(*2@JlTZ=Wlr6_Tr!_o~6O%{9Jep-#AohY)!wMk~060Y=!Ys-7rp`;ivc5m)^P3)A5XsRraEyumM z%b3yy@RKUe-8Pt&{P?v2g14eu2~Nm)Wi)bUUL=>VzNW*#nvlj;K%>y{`K=2n$NbX=M-fOpm!Sw=N||PpH&xC?*3OK`^^1 zZjR8%SxSkE04-{ch7apH2R)HY-P;8o7DjWLDvc2r*Jz&Wj`k6CzuxNr<;9FHJobf{? zD8SmwS^5m~I4SZ*x24%pGYaX?cfk)cw;5An;+aVzQ(MN!`J6|*U^y>7TY;=Pi9H*( zkyD{y+--dh0QaIj+t=@Rk^Ky6+8SncHSblEpsRK8tfo&migmYm{fRfqmjEj0E0-VU zL4ZLR{VP~$vVb^l$K#%qremYb>pwzgGZpT%Way1mp@=DDrOry?AZQIP9Z7kNKa~`^ zxy-txU3b@S4_kPN$m+Vfx@jdVq|oSTg6|0=UPQ9iQ&N=bzy8K=YHfJdvTp~VMSc(p z^lmzUl?&Hft;U3uR}Vx{r$pWD;VW|1u7jRm)1cY0L|RW}^tf$NpxxP~k{=70!8vSX zbeEw#eT^wnZ0S>9zlLSJ6gQgEb(~Ro$tP{@hm$)KQWkwaJ6gM7oASEgwKOLK^$p}R z&}gSwG0<0Cl*5uZ`FGh&G?p{>>ghTk3$T0M>;*D`&zsk(5h3E+srvOEqx~$1l1#@h zxYbDagD~$?^X?CSPQQ=A?U|&6_knVL(v-4QjEA*(e7p9~KdO^xCy-tqJa@PHVlHz~ zjV^zZ-S*HS`RnMSE8`%$XsX^$iugtmrgRQxCgpH+Q*5A6bU-0@mZM+MZR?!|*kB5(ClUaVAJvW%95pEDg_sZVU-I>I71jX&Xbb=SF95#POC}r(FXvW< z2di_v4>7ibalk3AkFl`(kU!3Kip`jTi?%;xBY>G^|1~~EUT$2YaV0on!rw;(dU(Wo z!Ri}pxyus-Zj(GV2Bl^YiB}?c7COFHe9)dFk0k1qUy@}cmI08+!#p_FB7!HC{r;{( z+UJCaU^WjcSRE5t8!Y;6!*dlnJ0=nK03)bmu)LS2LY!Cr3t^l2Ab=Ndw$(A}slRua zi~z!|a+<$eaOV>L~ ztaRc>fJGxeKPVQmQYD4`wbm4Z9xtwmbJL-NhsIIIvE8ouJP2^o1}YrP(+b7Z{cA9F zH7-A9?%|{?>c2n?7H7eL2K?IZl3EcqfKYSs6N^Otev;Ecr{1b=VDl9+VT+{Y+B`Hy^qH{Apz zbQ2gVCM?$I9AOXIbhCs3T$;3}Sl5IJ%5YQJ&qhwAv+v+BMPeL4?hd*I!oIx>e-+tM zKg<7AbLQ_*uYDZ<&Wv>&I};6NC>^`(Nf}GZ+LSd*8M}@xOGSklTegg*u?rQl)z}?N z42m+NNwN#a7^M=S7&DD$&htM!KRmzRpI<)Lecjjfe!uVc%j!zm2AN1CI%A6kj`krj zbMmwP-Om0<;vFF)kSYWJVSSuqw4QqL1ZUEQFryvhX!PtW>JDElQYsx~FUm3Q!W=oF$dKpmEyp4N6>V)2Rd4A} zUlo3ArpQE(ov84-;!LH#L?=X&#eM|erb~GD@ePZ@aZj{mMLFS=<}Lm(miq`|kez;y z+vDDG#a=H&@4yA&1@U!PdfoHMzz>KNb7df{g&OJ9(JJyGp6Lu7BaGmA!NG=8wgMNl zE_cPa_a-}fczE3ZGgkc>;Oh8s$g@ovOHG+n;B3n@&3==l!>3B{yWOIwuG@$A)b(6E z6CA{dJIPiXoDLD-c-pI#Ov5SefyP2lqiOgrGM#n|ON@^3iD;04U$aQ$Z=C2JF%T@*DbtM}vk zOM}38IFvj(Zcs|SXH|~I<+T`L`;h7?4?W)OJSd7*0}FCXTuIVq=4R9yR^d|px^3S?s@*k*K^v~uSboMS{%N2^3 zx6b}~zxSHOlwu^w-5%baLpzt9#u(@B?~>{wxYQyKg`hmn<&&>oz8>E71Hsw6%i=yT zh5_*WJasoMIj)cLNsM~FVZ>F6xi}Eu(mYDeEne_Xyf8fxsmrUEktoZFIKR2LyP`ME zBne}es1)*d(-fa8bs7`E<^vDl*WO`EKXVgs-7M>bsoqk6*XEBWNaEftzG@0Ii(@TG z16FK~W#2$}7>4oX98lbr(2OccJ6^sL`gTd@hT{T_U%a?$cL#OAq&4gK4b30g={0m= zHu?;nt#+)n@C?e}5XHm3{_c05xv0Od9F8E!tw@LCY_{~j8BMPl1Ta^}ILQ%Yg%$f+f@{_A^LOcrm`l-(2_D%w%G~`DFA@KKo zsb%}NBD%JISe?;1Z#E(|u4u$Zu(gs_j(55EdSoNyrElU>r}M^)kCF7D-B@X6 zT}Co}dz8*=Id9R3{=L;SV49(YcFnhEkZb5eE<@@u25?5=`P(SeIi&I2mn<@8#xW zAMw#YWJW#&be@#Tn8KvYJ(fFC$?NtjSV(N7v@b)ocwrK=>ObH5#d8m{Cnk53o_(j` z*lIYR9-bd8?lE`+^TQLc|Mrcpi<+Os#(Ku(DlcW7c!(n=~yE6SN9IR zs;U&F>t|~FQFGlpuvZtBz>box(R)(^&kbAdSaC(PVz($wQiB(-xV-g)_QV7sX;tKM zujGnw+hu8RLBeYufQSEoW&r$uG*gv@~QpUF?9bje-iiJU$~bfDb?Bl zIEC^0dn%8w8uyyU%AHS$s*8O8q`>0tW&9b1-GVsCpPcRM-MFKBs+B7Ov0~f`4wJ3P z{Y$Qeqoxezp?DIy^xW5yeF6Kmflv=aSY3CyrA6%b>05GrD*->Q*H32_jgNNvJ*5}m z??4=ccQ{T{BysjkBCd_I1OE6cY5HUX))fGb?pa>8;%rV9GN42T7<7H`ewCAJA^uyU zHhX#3Z(4DRjc~p`@6dS4P-9;Kb$c^pS=2}k?2Ri5i1Q$fKKnF0dI#kM9f=HZyKXu% zsW?OQNkta3%Q3FLegB8yD)K5^=yEYr`Yh4b%k8_d+9~7LY-8-c)ps zNHqR-{jGyc?U#~CR`q^fV|f1`mo_sDjvbT=e_b6mAFVBP2C$i7#x-9=8B0fYL9w%u zA&o%hGn2-Hjl`>B4!T8uB{l#0L!CAmlVn)B^kG4HvNS$-le=Z2WSwtc<7pTz-0IHFLtV zx+YIb;Gl3G|7@KLQ{5Df`a@^6aMVmdMQ|Q={*|`oi>(M@M!}+FG$65hqTqX7aYeY# z+e)n8rNfXE%*mf#cLm*}Bukm^|N8k)5I+DyR@llBevcdzt9_B|5f4h|L7JZ-jDGyI z$hENAH(3lYACpP+7nC974WUc~mAZ9Ruty3A{PI?djB^n3swY?jiL{oyoYciBexKrp zywMz>S()NF{wd;nG&3nlR?NDx0-LFGLA-v%wru3lH*;HjOinNm%s?)^l)Xf*Bubm4 zPod^`^sKMxc>0OCVxu}zXnj>?O6QDtQ8Y|G?EwuP*m+Pm{H4rkEm13z1VT<9uCVg9 zCSGb=97W!~t6;hoEB%-%5z3?D9Q`N8ZUR_2NfL`j)vTH##2$2rCl}YfhI!^Thg21; z1a%1Ier4%yK#Eo#jHHxlWNp^uWNjlxyT=%d9R)J(5cOY&(#}S=8%Jh) z?W!Vx5b>%h7@0PGIG0=@Ch3}>wK#@Wv-g>G)u`#iC}!qsTNi>7ZagH-t z7v9;DKxTG1HgAg~&nxzy4Sn=={ynsTdl1W)3??RrL2Oe{KfbmF1A8+#bJLN*c17hW z=)WUEDnjaxR^$JUQ(%rqU3sQztRUF@XARfv)w}Xnq2q#X9d(u{wX|xdkTaKN3YraR2}S literal 0 HcmV?d00001 From 117b8979c3fc26be2348b6cc02ca6302d1b2abf2 Mon Sep 17 00:00:00 2001 From: Alfa <30527549+alfa-addon@users.noreply.github.com> Date: Wed, 23 May 2018 17:02:40 -0500 Subject: [PATCH 23/24] Add files via upload --- plugin.video.alfa/lib/megaserver/client.py | 2 +- plugin.video.alfa/lib/megaserver/cursor.py | 12 ++++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/plugin.video.alfa/lib/megaserver/client.py b/plugin.video.alfa/lib/megaserver/client.py index d81cb450..41adc3e2 100644 --- a/plugin.video.alfa/lib/megaserver/client.py +++ b/plugin.video.alfa/lib/megaserver/client.py @@ -169,7 +169,7 @@ class Client(object): #decryptor = aes.AESModeOfOperationCBC(key, iv='\0' * 16) except: import jscrypto - decryptor = jscrypto.new(key, AES.MODE_CBC, '\0' * 16) + decryptor = jscrypto.new(key, jscrypto.MODE_CBC, '\0' * 16) return decryptor.decrypt(data) def aes_cbc_decrypt_a32(self,data, key): diff --git a/plugin.video.alfa/lib/megaserver/cursor.py b/plugin.video.alfa/lib/megaserver/cursor.py index 39180eb5..97e667a3 100755 --- a/plugin.video.alfa/lib/megaserver/cursor.py +++ b/plugin.video.alfa/lib/megaserver/cursor.py @@ -1,6 +1,4 @@ import urllib2 -from Crypto.Cipher import AES -from Crypto.Util import Counter class Cursor(object): def __init__(self, file): @@ -61,8 +59,14 @@ class Cursor(object): def prepare_decoder(self,offset): initial_value = self.initial_value + int(offset/16) - self.decryptor = AES.new(self._file._client.a32_to_str(self.k), AES.MODE_CTR, counter = Counter.new(128, initial_value = initial_value)) - #self.decryptor = aes.AESModeOfOperationCTR(f=self,key=self._client.a32_to_str(self.k),counter=aes.Counter(initial_value=initial_value)) + try: + from Crypto.Cipher import AES + from Crypto.Util import Counter + self.decryptor = AES.new(self._file._client.a32_to_str(self.k), AES.MODE_CTR, counter = Counter.new(128, initial_value = initial_value)) + except: + from pyaes import aes + self.decryptor = aes.AESModeOfOperationCTR(f=self,key=self._client.a32_to_str(self.k),counter=aes.Counter(initial_value=initial_value)) + rest = offset - int(offset/16)*16 if rest: self.decode(str(0)*rest) \ No newline at end of file From ecef0bd435a3b246932c21e580406beb56299b03 Mon Sep 17 00:00:00 2001 From: Alfa <30527549+alfa-addon@users.noreply.github.com> Date: Wed, 23 May 2018 17:35:08 -0500 Subject: [PATCH 24/24] v2.5.15 --- plugin.video.alfa/addon.xml | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/plugin.video.alfa/addon.xml b/plugin.video.alfa/addon.xml index 7d849065..ec030a61 100755 --- a/plugin.video.alfa/addon.xml +++ b/plugin.video.alfa/addon.xml @@ -1,5 +1,5 @@ - + @@ -18,18 +18,17 @@ resources/media/themes/ss/4.jpg [B]Estos son los cambios para esta versión:[/B] - [COLOR green][B]Canales agregados y arreglos[/B][/COLOR] - » seriespapaya » seriesdanko - » speedvideo » yourupload - » miradetodo » solocastellano - » descargacineclasico » poseidonhd - » estadepelis » pelismedia - » doramasmp4 » descargas2020 - » mejortorrent » mispelisyseries - » torrentlocura » torrentrapid - » tumejortorrent » tvsinpagar + » dailymotion » ver-peliculas + » poseidonhd » cinedetodo + » wikiseries » uptobox + » allpeliculas » gounlimited + » pepecine » descargas2020 + » mejortorrent » mispelisyseries + » torrentlocura » torrentrapid + » tumejortorrent » tvsinpagar + » elitetorrent » netutv ¤ arreglos internos - ¤ Agradecimientos al equipo SOD, @angedam, @alaquepasa por colaborar con ésta versión. + ¤ Agradecimientos a @angedam, @alaquepasa por colaborar con ésta versión. Navega con Kodi por páginas web para ver sus videos de manera fácil.