# -*- coding: utf-8 -*- # ------------------------------------------------------------ # Alfa addon - KODI Plugin # Canal para pelismundo # https://github.com/alfa-addon # ------------------------------------------------------------ from core import httptools from core import scrapertools from core import servertools from core import tmdb from core.item import Item from platformcode import config, logger host = "http://www.pelismundo.com" idiomas = {"Castellano":"CAST","Subtitulad":"VOSE","Latino":"LAT"} def mainlist(item): logger.info() itemlist = [] itemlist.append(Item(channel = item.channel, title = "Recientes", action = "peliculas", url = host)) itemlist.append(Item(channel = item.channel, title = "Por audio", action = "filtro", url = host, filtro = "Películas por audio")) itemlist.append(Item(channel = item.channel, title = "Por género", action = "filtro", url = host, filtro = "Películas por género")) itemlist.append(Item(channel = item.channel)) itemlist.append(Item(channel = item.channel, title = "Buscar", action = "search", url = host)) return itemlist def newest(categoria): logger.info() itemlist = [] item = Item() try: if categoria == 'peliculas': item.url = host elif categoria == 'infantiles': item.url = host + '/genero/infantil/' elif categoria == 'terror': item.url = host + '/genero/terror/' elif categoria == 'castellano': item.url = host +'/lenguaje/castellano/' elif categoria == 'latino': item.url = host +'/lenguaje/latino/' itemlist = peliculas(item) itemlist = peliculas(item) if "Pagina" in itemlist[-1].title: itemlist.pop() except: import sys for line in sys.exc_info(): logger.error("{0}".format(line)) return [] return itemlist def search(item, texto): logger.info() item.url += "?s=" texto = texto.replace(" ", "+") item.url = item.url + texto try: return sub_search(item) # Se captura la excepción, para no interrumpir al buscador global si un canal falla except: import sys for line in sys.exc_info(): logger.error("%s" % line) return [] def sub_search(item): logger.info() itemlist = [] data = httptools.downloadpage(item.url).data patron = 'search-results-content infinite.*?' bloque = scrapertools.find_single_match(data, patron) patron = '(?s)href="([^"]+)".*?' patron += 'title="([^"]+)".*?' patron += 'src="([^"]+)".*?' patron += 'Idioma(.*?)Cal' patron += 'idad(.*?<)\/' match = scrapertools.find_multiple_matches(bloque, patron) for scrapedurl, scrapedtitle, scrapedthumbnail, scrapedlanguages, scrapedquality in match: year = scrapertools.find_single_match(scrapedtitle, '[0-9]{4}') scrapedquality = scrapertools.find_single_match(scrapedquality, 'rel="tag">([^<]+)<') st = scrapertools.find_single_match(scrapedtitle, '(?i)Online.*') scrapedtitle = scrapedtitle.replace(st, "") st = scrapertools.find_single_match(scrapedtitle, '\(.*?\)') scrapedtitle = scrapedtitle.replace(st, "") title = scrapedtitle if year: title += "(" + year + ")" if scrapedquality: title += " (" + scrapedquality + ")" idiomas_disponibles = [] idiomas_disponibles1 = "" for lang in idiomas.keys(): if lang in scrapedlanguages: idiomas_disponibles.append(idiomas[lang]) if idiomas_disponibles: idiomas_disponibles1 = "[" + "/".join(idiomas_disponibles) + "]" title += " %s" %idiomas_disponibles1 itemlist.append(Item(channel = item.channel, action = "findvideos", title = title, contentTitle = scrapedtitle, thumbnail = scrapedthumbnail, quality = scrapedquality, language = idiomas_disponibles, infoLabels={"year": year}, url = scrapedurl )) tmdb.set_infoLabels(itemlist) url_pagina = scrapertools.find_single_match(data, 'next" href="([^"]+)') if url_pagina != "": pagina = "Pagina: " + scrapertools.find_single_match(url_pagina, "page/([0-9]+)") itemlist.append(Item(channel = item.channel, action = "peliculas", title = pagina, url = url_pagina)) return itemlist def filtro(item): logger.info() itemlist = [] data = httptools.downloadpage(item.url).data patron = 'class="sbi-header">%s.*?' %item.filtro bloque = scrapertools.find_single_match(data, patron) patron = '(?s)href="([^"]+)".*?' patron += '([^<]+)' matches = scrapertools.find_multiple_matches(bloque, patron) for url, title in matches: if "eroticas" in title and config.get_setting("adult_mode") == 0: continue logger.debug('la url: %s' %url) itemlist.append(item.clone(action = "peliculas", title = title.title(), url = url )) return itemlist def peliculas(item): logger.info() itemlist = [] data = httptools.downloadpage(item.url).data patron = 'movie-list" class="clearfix.*?pagination movie-pagination clearfix' bloque = scrapertools.find_single_match(data, patron) patron = '(?s)href="([^"]+)".*?' patron += 'title="([^"]+)".*?' patron += 'class="mq([^"]+)".*?' patron += 'src="([^"]+)".*?' patron += '_audio(.*?)class.*?' patron += 'label_year">([^<]+)<' match = scrapertools.find_multiple_matches(bloque, patron) for scrapedurl, scrapedtitle, scrapedquality, scrapedthumbnail, scrapedlanguages, year in match: year = scrapertools.find_single_match(year, '[0-9]{4}') st = scrapertools.find_single_match(scrapedtitle, '(?i)Online.*') scrapedtitle = scrapedtitle.replace(st, "").strip() st = scrapertools.find_single_match(scrapedtitle, '\(.*?\)') scrapedtitle = scrapedtitle.replace(st, "") title = scrapedtitle if year: title += " (" + year + ")" if scrapedquality: title += " (" + scrapedquality + ")" idiomas_disponibles = [] for lang in idiomas.keys(): if lang in scrapedlanguages: idiomas_disponibles.append(idiomas[lang]) idiomas_disponibles1 = "" if idiomas_disponibles: idiomas_disponibles1 = "[" + "/".join(idiomas_disponibles) + "]" title += " %s" %idiomas_disponibles1 itemlist.append(Item(channel = item.channel, action = "findvideos", title = title, contentTitle = scrapedtitle, thumbnail = scrapedthumbnail, quality = scrapedquality, language = idiomas_disponibles, infoLabels={"year": year}, url = scrapedurl )) tmdb.set_infoLabels(itemlist) url_pagina = scrapertools.find_single_match(data, 'next" href="([^"]+)') if url_pagina != "": pagina = "Pagina: " + scrapertools.find_single_match(url_pagina, "page/([0-9]+)") itemlist.append(Item(channel = item.channel, action = "peliculas", title = pagina, url = url_pagina)) return itemlist def findvideos(item): logger.info() itemlist = [] data = httptools.downloadpage(item.url).data patron = 'SegundaParte.*?ventana-flotante' bloque = scrapertools.find_single_match(data, patron) patron = 'hand" rel="([^"]+)".*?' patron += 'optxt">([^<]+).*?' matches = scrapertools.find_multiple_matches(bloque, patron) for scrapedurl, scrapedlanguage in matches: if "youtube" in scrapedurl: scrapedurl += "&" title = "Ver en: %s " + "(" + scrapedlanguage + ")" itemlist.append(item.clone(action = "play", title = title, language = scrapedlanguage, quality = item.quality, url = scrapedurl )) tmdb.set_infoLabels(itemlist) itemlist = servertools.get_servers_itemlist(itemlist, lambda i: i.title % i.server.capitalize()) if itemlist: itemlist.append(Item(channel = item.channel)) itemlist.append(item.clone(channel="trailertools", title="Buscar Tráiler", action="buscartrailer", context="", text_color="magenta")) # Opción "Añadir esta película a la biblioteca de KODI" if item.extra != "library": if config.get_videolibrary_support(): itemlist.append(Item(channel=item.channel, title="Añadir a la videoteca", text_color="green", action="add_pelicula_to_library", url=item.url, thumbnail = item.thumbnail, fulltitle = item.contentTitle )) return itemlist def play(item): item.thumbnail = item.contentThumbnail return [item]