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. diff --git a/plugin.video.alfa/channels/allpeliculas.py b/plugin.video.alfa/channels/allpeliculas.py index 4e249b29..875c87db 100644 --- a/plugin.video.alfa/channels/allpeliculas.py +++ b/plugin.video.alfa/channels/allpeliculas.py @@ -148,12 +148,13 @@ def findvideos(item): action = "play", title = calidad, fulltitle = item.title, + thumbnail = item.thumbnail, contentThumbnail = item.thumbnail, url = url, language = IDIOMAS['Latino'] )) - tmdb.set_infoLabels(itemlist, seekTmdb = True) itemlist = servertools.get_servers_itemlist(itemlist) + tmdb.set_infoLabels(itemlist, seekTmdb = True) itemlist.append(Item(channel=item.channel)) if config.get_videolibrary_support(): itemlist.append(Item(channel=item.channel, title="Añadir a la videoteca", text_color="green", diff --git a/plugin.video.alfa/channels/cinedetodo.json b/plugin.video.alfa/channels/cinedetodo.json new file mode 100644 index 00000000..037cbb3b --- /dev/null +++ b/plugin.video.alfa/channels/cinedetodo.json @@ -0,0 +1,75 @@ +{ + "id": "cinedetodo", + "name": "CINEDETODO", + "active": true, + "adult": false, + "language": ["lat"], + "thumbnail": "https://s31.postimg.cc/win1ffxyj/cinedetodo.png", + "banner": "", + "version": 1, + "categories": [ + "movies" + ], + "settings": [ + { + "id": "include_in_global_search", + "type": "bool", + "label": "Incluir en busqueda global", + "default": false, + "enabled": false, + "visible": false + }, + { + "id": "filter_languages", + "type": "list", + "label": "Mostrar enlaces en idioma...", + "default": 0, + "enabled": true, + "visible": true, + "lvalues": [ + "No filtrar", + "LAT" + ] + }, + { + "id": "include_in_newest_peliculas", + "type": "bool", + "label": "Incluir en Novedades - Peliculas", + "default": true, + "enabled": true, + "visible": true + }, + { + "id": "include_in_newest_infantiles", + "type": "bool", + "label": "Incluir en Novedades - Infantiles", + "default": true, + "enabled": true, + "visible": true + }, + { + "id": "include_in_newest_latino", + "type": "bool", + "label": "Incluir en Novedades - latino", + "default": true, + "enabled": true, + "visible": true + }, + { + "id": "include_in_newest_terror", + "type": "bool", + "label": "Incluir en Novedades - Terror", + "default": true, + "enabled": true, + "visible": true + }, + { + "id": "include_in_newest_documentales", + "type": "bool", + "label": "Incluir en Novedades - Documentales", + "default": true, + "enabled": true, + "visible": true + } + ] +} diff --git a/plugin.video.alfa/channels/cinedetodo.py b/plugin.video.alfa/channels/cinedetodo.py new file mode 100644 index 00000000..6ada755c --- /dev/null +++ b/plugin.video.alfa/channels/cinedetodo.py @@ -0,0 +1,207 @@ +# -*- coding: utf-8 -*- +# -*- Channel CinemaHD -*- +# -*- Created for Alfa-addon -*- +# -*- By the Alfa Develop Group -*- + +import re +import urllib +from channelselector import get_thumb +from core import httptools +from core import scrapertools +from core import servertools +from core import tmdb +from core.item import Item +from platformcode import config, logger +from channels import autoplay +from channels import filtertools + + +host = 'http://www.cinedetodo.com/' + +IDIOMAS = {'Latino': 'LAT'} +list_language = IDIOMAS.values() +list_quality = [] +list_servers = ['fastplay', 'rapidvideo', 'streamplay', 'flashx', 'streamito', 'streamango', 'vidoza'] + + +def mainlist(item): + logger.info() + + autoplay.init(item.channel, list_servers, list_quality) + + itemlist = list() + itemlist.append(item.clone(title="Ultimas", action="list_all", url=host, thumbnail=get_thumb('last', auto=True))) + itemlist.append(item.clone(title="Generos", action="section", section='genre', + thumbnail=get_thumb('genres', auto=True))) + # itemlist.append(item.clone(title="Por Calidad", action="section", section='quality', + # thumbnail=get_thumb('quality', auto=True))) + itemlist.append(item.clone(title="Alfabetico", action="section", section='alpha', + thumbnail=get_thumb('alphabet', auto=True))) + itemlist.append(item.clone(title="Buscar", action="search", url=host+'?s=', + thumbnail=get_thumb('search', auto=True))) + + autoplay.show_option(item.channel, itemlist) + + return itemlist + + +def get_source(url): + logger.info() + data = httptools.downloadpage(url).data + data = re.sub(r'"|\n|\r|\t| |
|\s{2,}', "", data) + return data + + +def list_all(item): + logger.info() + itemlist = [] + + data = get_source(item.url) + if item.section == 'alpha': + patron = '\d+.*?(.*?).*?' + patron += '(\d{4})' + else: + patron = '
.*?.*?'') + if url_next_page: + itemlist.append(item.clone(title="Siguiente >>", url=url_next_page, action='list_all')) + return itemlist + +def section(item): + logger.info() + itemlist = [] + + data = get_source(host) + + action = 'list_all' + if item.section == 'quality': + patron = 'menu-item-object-category.*?menu-item-\d+>(.*?)<\/a>' + elif item.section == 'genre': + patron = '(.*?)' + elif item.section == 'year': + patron = 'custom menu-item-15\d+>(\d{4})<\/a><\/li>' + elif item.section == 'alpha': + patron = '
  • (.*?)' + action = 'list_all' + matches = re.compile(patron, re.DOTALL).findall(data) + + for data_one, data_two in matches: + + url = data_one + title = data_two + if title != 'Ver más': + new_item = Item(channel=item.channel, title= title, url=url, action=action, section=item.section) + itemlist.append(new_item) + + return itemlist + + +def findvideos(item): + logger.info() + + itemlist = [] + data = get_source(item.url) + data = scrapertools.decodeHtmlentities(data) + + patron = 'id=(Opt\d+)>.*?src=(.*?) frameborder.*?' + 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 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/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 = '
    .*?<\/div>' #Menú principal + data1 = scrapertools.get_match(data, patron) + 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 = '
    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/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..77ecaa34 --- 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,68 @@ 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, - # 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, - 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", - 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_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...", text_color=color2, - # 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="local_search", title=" Buscar...", + url=urlparse.urljoin(CHANNEL_HOST, "buscar/?sitesearch=pelispedia.tv&q="), extra="movies", + fanart=fanart_host, thumbnail=get_thumb('search', auto=True))) - 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="Series", fanart=fanart_host, folder=False, + thumbnail=thumbnail_host, text_bold=True)) + + itemlist.append( + 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", + 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="local_search", title=" Buscar...", + url=urlparse.urljoin(CHANNEL_HOST, "series/buscar/?sitesearch=pelispedia.tv&q="), extra="serie", + fanart=fanart_host, thumbnail=get_thumb('search', auto=True))) + + + # ~ 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 +130,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 +167,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,23 +204,40 @@ 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 -def search(item, texto): - # Funcion de busqueda desactivada - logger.info("texto=%s" % texto) +def local_search(item): + logger.info() + text = "" + # ~ if config.get_setting("save_last_search", item.channel): + # ~ text = config.get_setting("last_search", item.channel) - item.url = item.url + "%" + texto.replace(' ', '+') + "%" + from platformcode import platformtools + texto = platformtools.dialog_input(default=text, heading="Buscar en Pelispedia") + if texto is None: + return + + # ~ if config.get_setting("save_last_search", item.channel): + # ~ config.set_setting("last_search", texto, item.channel) + + return search(item, texto) + + +def search(item, texto): + logger.info() + if '/buscar/?' not in item.url: + item.url = CHANNEL_HOST if item.extra == 'movies' else CHANNEL_HOST + 'series/' + item.url += 'buscar/?sitesearch=pelispedia.tv&q=' + item.url += texto.replace(" ", "+") try: return listado(item) - # Se captura la excepción, para no interrumpir al buscador global si un canal falla except: import sys @@ -257,7 +281,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 +295,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': @@ -288,7 +313,7 @@ def listado(item): tmdb.set_infoLabels(itemlist, __modo_grafico__) # numero de registros que se muestran por página, se fija a 28 por cada paginación - if len(matches) >= 28: + if len(matches) >= 28 and '/buscar/?' not in item.url: file_php = "666more" tipo_serie = "" @@ -325,7 +350,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 +360,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 +378,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 +407,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 +416,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 +431,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 +453,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 +465,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 = '