def info(title):
    logger.info("streamondemand.cinemalibero info")
    try:
        from core.tmdb import Tmdb
        oTmdb = Tmdb(texto_buscado=title, tipo="movie", include_adult="false", idioma_busqueda="it")
        count = 0
        if oTmdb.total_results > 0:
            extrameta = {}
            extrameta["Year"] = oTmdb.result["release_date"][:4]
            extrameta["Genre"] = ", ".join(oTmdb.result["genres"])
            extrameta["Rating"] = float(oTmdb.result["vote_average"])
            fanart = oTmdb.get_backdrop()
            poster = oTmdb.get_poster()
            plot = oTmdb.get_sinopsis()
            return plot, fanart, poster, extrameta
    except:
        pass
Exemplo n.º 2
0
def info(title, type, sinopsis):
    logger.info("pelisalacarta.descargasmix info")
    infolabels = {}
    plot = {}
    try:
        from core.tmdb import Tmdb
        otmdb = Tmdb(texto_buscado=title, tipo=type)
        if otmdb.get_sinopsis() == "": infolabels['plot'] = sinopsis
        else: infolabels['plot'] = otmdb.get_sinopsis()
        infolabels['year'] = otmdb.result["release_date"][:4]
        infolabels['genre'] = otmdb.get_generos()
        infolabels['rating'] = float(otmdb.result["vote_average"])
        fanart = otmdb.get_backdrop()
        plot['infoLabels'] = infolabels
        return plot, fanart
    except:
        pass
Exemplo n.º 3
0
def info(title):
    logger.info("pelisalacarta.verseriesynovelas info")
    infolabels = {}
    plot = {}
    try:
        from core.tmdb import Tmdb
        otmdb = Tmdb(texto_buscado=title, tipo="tv")
        infolabels['plot'] = otmdb.get_sinopsis()
        infolabels['year'] = otmdb.result["release_date"][:4]
        infolabels['genre'] = otmdb.get_generos()
        infolabels['rating'] = float(otmdb.result["vote_average"])
        if otmdb.get_poster() != "": thumbnail = otmdb.get_poster()
        else: thumbnail = ""
        fanart = otmdb.get_backdrop()
        plot['infoLabels'] = infolabels
        return plot, fanart, thumbnail
    except:
        pass
Exemplo n.º 4
0
def show_movie_info(item):
    logger.info()

    itemlist = []

    tmdb_title = re.sub(r'\(.*\)|\[.*\]', '', item.title).strip()
    logger.debug('tmdb_title=' + tmdb_title)

    try:
        oTmdb = Tmdb(texto_buscado=tmdb_title, idioma_busqueda="es")
        item.fanart = oTmdb.get_backdrop()
        item.plot = oTmdb.get_sinopsis()
    except:
        pass

    data = httptools.downloadpage(item.url).data
    logger.debug("data=" + data)

    patron = "<a href='(secciones.php\?sec\=descargas[^']+)'"
    matches = re.compile(patron, re.DOTALL).findall(data)

    for scrapedurl in matches:
        url = urlparse.urljoin(item.url, scrapedurl)
        logger.debug("title=[" + item.title + "], url=[" + url +
                     "], thumbnail=[" + item.thumbnail + "]")

        torrent_data = httptools.downloadpage(url).data
        link = scrapertools.get_match(
            torrent_data,
            "<a href='(/uploads/torrents/peliculas/.*?\.torrent)'>")
        link = urlparse.urljoin(url, link)
        logger.debug("link=" + link)
        itemlist.append(
            Item(channel=item.channel,
                 action="play",
                 server="torrent",
                 title=item.title,
                 url=link,
                 thumbnail=item.thumbnail,
                 plot=item.plot,
                 fanart=item.fanart,
                 folder=False))

    return itemlist
Exemplo n.º 5
0
def info(title):
    logger.info("streamondemand.italiafilmvideohd info")
    try:
        from core.tmdb import Tmdb
        oTmdb = Tmdb(texto_buscado=title,
                     tipo="movie",
                     include_adult="false",
                     idioma_busqueda="it")
        if oTmdb.total_results > 0:
            extrameta = {
                "Year": oTmdb.result["release_date"][:4],
                "Genre": ", ".join(oTmdb.result["genres"]),
                "Rating": float(oTmdb.result["vote_average"])
            }
            fanart = oTmdb.get_backdrop()
            poster = oTmdb.get_poster()
            plot = oTmdb.get_sinopsis()
            return plot, fanart, poster, extrameta
    except:
        pass
Exemplo n.º 6
0
def completar_codigos(item):
    """
    If necessary, check if the tmdb identifier exists and if it does not exist try to find it
    @param item: tipo item
    @type item: Item
    """
    if not item.infoLabels['tmdb_id']:
        listsources = [(item.infoLabels['tvdb_id'], "tvdb_id")]
        if item.infoLabels['imdb_id']:
            listsources.append((item.infoLabels['imdb_id'], "imdb_id"))

        from core.tmdb import Tmdb
        ob = Tmdb()

        for external_id, external_source in listsources:
            ob.search_by_id(id=external_id, source=external_source, tipo='tv')

            item.infoLabels['tmdb_id'] = ob.get_id()
            if item.infoLabels['tmdb_id']:
                url_scraper = "https://www.themoviedb.org/tv/%s" % item.infoLabels['tmdb_id']
                item.infoLabels['url_scraper'].append(url_scraper)
                break
    def get_tmdb_movie_data(self, text):
        # Buscamos la pelicula si no lo esta ya
        if not self.otmdb:
            self.otmdb = Tmdb(texto_buscado=text,
                              idioma_busqueda="es",
                              tipo="movie")

        # Si no hay resultados salimos
        if not self.otmdb.get_id():
            return False

        # Informacion de la pelicula
        infoLabels = self.otmdb.get_infoLabels()
        infoLabels["mediatype"] = "movie"
        infoLabels["language"] = self.get_language(
            infoLabels["original_language"])
        infoLabels["puntuacion"] = str(infoLabels["rating"]) + "/10 (" + str(
            infoLabels["votes"]) + ")"

        self.result = infoLabels

        return True
Exemplo n.º 8
0
def completar_codigos(item):
    """
    Si es necesario comprueba si existe el identificador de tmdb y sino existe trata de buscarlo
    @param item: tipo item
    @type item: Item
    """
    if not item.infoLabels['tmdb_id']:
        listsources = [(item.infoLabels['tvdb_id'], "tvdb_id")]
        if item.infoLabels['imdb_id']:
            listsources.append((item.infoLabels['imdb_id'], "imdb_id"))

        from core.tmdb import Tmdb
        ob = Tmdb()

        for external_id, external_source in listsources:
            ob.search_by_id(id=external_id, source=external_source, tipo='tv')

            item.infoLabels['tmdb_id'] = ob.get_id()
            if item.infoLabels['tmdb_id']:
                url_scraper = "https://www.themoviedb.org/tv/%s" % item.infoLabels['tmdb_id']
                item.infoLabels['url_scraper'].append(url_scraper)
                break
    def get_tmdb_data(self, data_in):
        self.otmdb = None
        #logger.debug(str(data_in))

        if self.listData:
            infoLabels = InfoLabels()

            # Datos comunes a todos los listados
            infoLabels = Tmdb().get_infoLabels(infoLabels=infoLabels,
                                               origen=data_in)
            infoLabels["language"] = self.get_language(
                infoLabels["original_language"])
            infoLabels["puntuacion"] = str(
                data_in["vote_average"]) + "/10 (" + str(
                    data_in["vote_count"]) + ")"

            self.from_tmdb = False
            self.result = infoLabels

        else:
            if isinstance(data_in, Item):
                self.from_tmdb = True
                self.get_item_info(data_in)

                # Modo Pelicula
                if not self.item_serie:
                    encontrado = self.get_tmdb_movie_data(self.item_title)
                    if not encontrado:
                        encontrado = self.get_tmdb_tv_data(self.item_title)

                else:
                    encontrado = self.get_tmdb_tv_data(self.item_serie)
                    if not encontrado:
                        encontrado = self.get_tmdb_movie_data(self.item_serie)

            if isinstance(data_in, dict):
                self.from_tmdb = False
                self.result = InfoLabels(data_in)
Exemplo n.º 10
0
    def get_tmdb_movie_data(self, text):
        # Buscamos la pelicula si no lo esta ya
        if not self.otmdb:
            self.otmdb = Tmdb(texto_buscado=text, idioma_busqueda="es", tipo="movie")

        # Si no hay resultados salimos
        if not self.otmdb.get_id():
            return False

        # Informacion de la pelicula
        self.result["type"] = "movie"
        self.result["tmdb_id"] = self.otmdb.get_id()
        self.result["title"] = self.otmdb.result["title"]
        self.result["original_title"] = self.otmdb.result["original_title"]
        self.result["date"] = self.get_date(self.otmdb.result["release_date"])
        self.result["language"] = self.get_language(self.otmdb.result["original_language"])
        self.result["rating"] = self.otmdb.result["vote_average"] + "/10 (" + self.otmdb.result["vote_count"] + ")"
        self.result["genres"] = ", ".join(self.otmdb.result["genres"])
        self.result["thumbnail"] = self.otmdb.get_poster()
        self.result["fanart"] = self.otmdb.get_backdrop()
        self.result["overview"] = self.otmdb.result["overview"]

        return True
Exemplo n.º 11
0
def episodios(item):
    #import web_pdb; web_pdb.set_trace()
    logger.info()
    itemlist = []

    # Descarga la página
    data = httptools.downloadpage(item.url).data

    total_capis = scrapertools.get_match(
        data, "<input type='hidden' name='total_capis' value='(\d+)'>")
    tabla = scrapertools.get_match(
        data, "<input type='hidden' name='tabla' value='([^']+)'>")
    titulo = scrapertools.get_match(
        data, "<input type='hidden' name='titulo' value='([^']+)'>")

    item.thumbnail = scrapertools.find_single_match(
        data, "src='http://www\.mejortorrent\.com(/uploads/imagenes/" + tabla +
        "/[a-zA-Z0-9_ ]+.jpg)'")
    item.thumbnail = host + urllib.quote(item.thumbnail)

    # <form name='episodios' action='secciones.php?sec=descargas&ap=contar_varios' method='post'>
    data = scrapertools.get_match(
        data,
        "<form name='episodios' action='secciones.php\?sec=descargas\&ap=contar_varios' method='post'>(.*?)</form>"
    )
    if item.extra == "series":
        patron = "<td bgcolor[^>]+><a[^>]+>([^>]+)</a></td>[^<]+"
    else:
        patron = "<td bgcolor[^>]+>([^>]+)</td>[^<]+"

    patron += "<td[^<]+<div[^>]+>Fecha: ([^<]+)</div></td>[^<]+"
    patron += "<td[^<]+"
    patron += "<input type='checkbox' name='([^']+)' value='([^']+)'"

    matches = re.compile(patron, re.DOTALL).findall(data)

    tmdb_title = re.sub(
        r'(\s*-\s*)?\d+.*?\s*Temporada|(\s*-\s*)?\s*Miniserie\.?|\(.*\)|\[.*\]',
        '', item.title).strip()
    logger.debug('tmdb_title=' + tmdb_title)

    if item.extra == "series":
        oTmdb = Tmdb(texto_buscado=tmdb_title.strip(),
                     tipo='tv',
                     idioma_busqueda="es")
    else:
        oTmdb = Tmdb(texto_buscado=tmdb_title.strip(), idioma_busqueda="es")

    for scrapedtitle, fecha, name, value in matches:
        scrapedtitle = scrapedtitle.strip()
        if scrapedtitle.endswith('.'):
            scrapedtitle = scrapedtitle[:-1]
        #import web_pdb; web_pdb.set_trace()
        title = scrapedtitle + " (" + fecha + ")"
        patron = "<a href='(.*?)'>"

        url = "https://mejortorrent.website" + scrapertools.find_single_match(
            data, patron)
        # "episodios%5B1%5D=11744&total_capis=5&tabla=series&titulo=Sea+Patrol+-+2%AA+Temporada"
        post = urllib.urlencode({
            name: value,
            "total_capis": total_capis,
            "tabla": tabla,
            "titulo": titulo
        })
        logger.debug("post=" + post)

        if item.extra == "series":
            epi = scrapedtitle.split("x")

            # Sólo comprobar Tmdb si el formato es temporadaXcapitulo
            if len(epi) > 1:
                temporada = re.sub("\D", "", epi[0])
                capitulo = re.search("\d+", epi[1])
                if capitulo:
                    capitulo = capitulo.group()
                else:
                    capitulo = 1

                epi_data = oTmdb.get_episodio(temporada, capitulo)
                logger.debug("epi_data=" + str(epi_data))

                if epi_data:
                    item.thumbnail = epi_data["temporada_poster"]
                    item.fanart = epi_data["episodio_imagen"]
                    item.plot = epi_data["episodio_sinopsis"]
                    epi_title = epi_data["episodio_titulo"]
                    if epi_title != "":
                        title = scrapedtitle + " " + epi_title + " (" + fecha + ")"
        else:
            try:
                item.fanart = oTmdb.get_backdrop()
            except:
                pass

            item.plot = oTmdb.get_sinopsis()

        logger.debug("title=[" + title + "], url=[" + url + "], item=[" +
                     str(item) + "]")

        itemlist.append(
            Item(channel=item.channel,
                 action="play",
                 title=title,
                 url=url,
                 thumbnail=item.thumbnail,
                 plot=item.plot,
                 fanart=item.fanart,
                 extra=post,
                 folder=False,
                 id=value))

    return itemlist
Exemplo n.º 12
0
def search_trailers(item):
    logger.info()

    from core.tmdb import Tmdb
    import xbmcgui, xbmc

    tipo = 'movie' if item.contentType == 'movie' else 'tv'
    nombre = item.contentTitle if item.contentType == 'movie' else item.contentSerieName
    if item.infoLabels['tmdb_id']:
        tmdb_search = Tmdb(id_Tmdb=item.infoLabels['tmdb_id'],
                           tipo=tipo,
                           idioma_busqueda='es')
    else:
        anyo = item.infoLabels['year'] if item.infoLabels['year'] else '-'
        tmdb_search = Tmdb(texto_buscado=nombre,
                           tipo=tipo,
                           year=anyo,
                           idioma_busqueda='es')

    opciones = []
    resultados = tmdb_search.get_videos()
    for res in resultados:
        # ~ logger.debug(res)
        it = xbmcgui.ListItem(res['name'],
                              '[%sp] (%s)' % (res['size'], res['language']))
        if item.thumbnail: it.setArt({'thumb': item.thumbnail})
        opciones.append(it)

    if len(resultados) == 0:
        platformtools.dialog_ok(nombre,
                                'No se encuentra ningún tráiler en TMDB')
    else:
        while not xbmc.Monitor().abortRequested():  # (while True)
            ret = xbmcgui.Dialog().select('Tráilers para %s' % nombre,
                                          opciones,
                                          useDetails=True)
            if ret == -1: break

            platformtools.dialog_notification(resultados[ret]['name'],
                                              'Cargando tráiler ...',
                                              time=3000,
                                              sound=False)
            from core import servertools
            if 'youtube' in resultados[ret]['url']:
                video_urls, puedes, motivo = servertools.resolve_video_urls_for_playing(
                    'youtube', resultados[ret]['url'])
            else:
                video_urls = []  #TODO si no es youtube ...
                logger.debug(resultados[ret])
            if len(video_urls) > 0:
                # ~ logger.debug(video_urls)
                xbmc.Player().play(
                    video_urls[-1][1])  # el último es el de más calidad
                xbmc.sleep(1000)
                while not xbmc.Monitor().abortRequested() and xbmc.Player(
                ).isPlaying():
                    xbmc.sleep(1000)
            else:
                platformtools.dialog_notification(
                    resultados[ret]['name'],
                    'No se puede reproducir el tráiler',
                    time=3000,
                    sound=False)

            if len(resultados) == 1:
                break  # si sólo hay un vídeo no volver al diálogo de tráilers
Exemplo n.º 13
0
def find_and_set_infoLabels(item):
    """
    función que se llama para buscar y setear los infolabels
    :param item:
    :return:
    """

    global scraper_global
    logger.debug("item:\n" + item.tostring('\n'))

    params = {}

    if item.contentType == "movie":
        tipo_contenido = "pelicula"
        title = item.contentTitle
        # get scraper pelis
        scraper = Tmdb()
        # para tmdb
        tipo_busqueda = "movie"

    else:
        tipo_contenido = "serie"
        title = item.contentSerieName
        # get scraper series
        scraper = Tmdb()
        # para tmdb
        tipo_busqueda = "tv"

    # esto ya está en el scraper tmdb
    # title = re.sub('\[\\\?(B|I|COLOR)\s?[^\]]*\]', '', title)

    # Si el titulo incluye el (año) se lo quitamos
    year = scrapertools.find_single_match(title, "^.+?\s*(\(\d{4}\))$")
    if year:
        title = title.replace(year, "").strip()
        item.infoLabels['year'] = year[1:-1]

    scraper_result = None
    results = []
    while not scraper_result:
        # para tmdb
        if isinstance(scraper, Tmdb):
            logger.debug("scraper es Tmbdb")
            params["texto_buscado"] = title
            params["tipo"] = tipo_busqueda
            params["year"] = item.infoLabels['year']

        if not results:
            if not item.infoLabels.get("tmdb_id"):
                if not item.infoLabels.get("imdb_id"):
                    scraper_global = scraper(**params)
                else:
                    logger.info("tiene imdb")
                    # para tmdb
                    if isinstance(scraper, Tmdb):
                        params["external_id"] = item.infoLabels.get("imdb_id")
                        params["external_source"] = "imdb_id"

                    scraper_global = scraper(**params)

            elif not scraper_global or scraper_global.result.get(
                    "id") != item.infoLabels['tmdb_id']:
                # para tmdb
                if isinstance(scraper, Tmdb):
                    params["id_Tmdb"] = item.infoLabels['tmdb_id']
                    params["idioma_busqueda"] = "es"

                scraper_global = scraper(**params)

            results = scraper_global.get_list_resultados()

        if len(results) > 1:
            scraper_result = platformtools.show_video_info(
                results,
                item=item,
                scraper=scraper,
                caption="[%s]: Selecciona la %s correcta" %
                (title, tipo_contenido))

        elif len(results) > 0:
            scraper_result = results[0]

        if scraper_result is None:
            index = -1
            if tipo_contenido == "serie":
                # Si no lo encuentra la serie por si solo, presentamos una lista de opciones
                opciones = ["Introducir otro nombre", "Buscar en TheTvDB.com"]
                index = platformtools.dialog_select(
                    "%s no encontrada" % tipo_contenido.capitalize(), opciones)

            elif platformtools.dialog_yesno(
                    "Película no encontrada",
                    "No se ha encontrado la película:", title,
                    '¿Desea introducir otro nombre?'):
                index = 0

            if index < 0:
                logger.debug(
                    "he pulsado 'cancelar' en la ventana '%s no encontrada'" %
                    tipo_contenido.capitalize())
                break

            if index == 0:  # "Introducir otro nombre"
                # Pregunta el titulo
                it = platformtools.dialog_input(
                    title,
                    "Introduzca el nombre de la %s a buscar" % tipo_contenido)
                if it is not None:
                    title = it
                    item.infoLabels['year'] = ""
                    # reseteamos los resultados
                    results = []
                else:
                    logger.debug(
                        "he pulsado 'cancelar' en la ventana 'introduzca el nombre correcto'"
                    )
                    break

            if index == 1:  # "Buscar en TheTvDB.com"
                results = tvdb_series_by_title(title)

    if isinstance(item.infoLabels, InfoLabels):
        infoLabels = item.infoLabels
    else:
        infoLabels = InfoLabels()

    if scraper_result:
        if 'id' in scraper_result:
            # resultados obtenidos de tmdb
            infoLabels['tmdb_id'] = scraper_result['id']
            infoLabels[
                'url_scraper'] = "https://www.themoviedb.org/tv/%s" % infoLabels[
                    'tmdb_id']
            item.infoLabels = infoLabels
            tmdb.set_infoLabels_item(item)

        elif 'tvdb_id' in scraper_result:
            # resultados obtenidos de tvdb
            infoLabels.update(scraper_result)
            item.infoLabels = infoLabels

        # logger.debug("item:\n" + item.tostring('\n'))
        return True
    else:
        item.infoLabels = infoLabels
        return False
Exemplo n.º 14
0
def getEpisodios(item):
    # Devuelve todos los capitulos de una serie
    logger.info("[peliserie.py] getEpisodios")
    itemlist = []
    list_fanart = ''

    # Buscamos el fanart en TMDB
    year = item.show.split('|')[1]
    item.show = item.show.split('|')[0]
    try:
        from core.tmdb import Tmdb
        oTmdb = Tmdb(texto_buscado=item.show, year=year, tipo="tv")
        item.fanart = oTmdb.get_backdrop()
    except:
        pass

    try:
        data = re.sub(r"\n|\r|\t|\s{2}|(<!--.*?-->)", "",
                      scrapertools.cache_page(item.url))
        sinopsis = scrapertools.entityunescape(
            scrapertools.get_match(data, '<p class="sinopsis">(.*?)</p>'))

        patron = '<div class="nav-pills(.*?)</div></div></div>'
        data = scrapertools.get_match(data, patron)
        patron = '<a href="([^"]+).*?'  #url
        patron += '<strong>(\d+[x|X]\d+).*?</strong>.*?'  #capitulo
        patron += '<img(.*?)</div>'  # info:idiomas
        matches = re.compile(patron, re.DOTALL).findall(data)

        for url, capitulo, idiomas in matches:
            #logger.info("[peliserie.py] getEpisodios idiomas: " +idiomas)
            #idiomas = scrapertools.get_match(info,'src="(.*?)</div>')
            lang = []
            if 'flag_0.png' in idiomas: lang.append('Es')
            if 'flag_1.png' in idiomas: lang.append('Lat')
            if 'flag_2.png' in idiomas: lang.append('VO')
            if 'flag_3.png' in idiomas: lang.append('VOSE')
            if len(lang) > 0:
                idiomas = ' [' + "/".join(lang) + ']'
            else:
                idiomas = ''

            url = __url_base__ + url
            show = item.show
            title = show + ' ' + capitulo + idiomas
            action = "findvideos"

            try:
                # añadimos sinopsis e imagenes para cada capitulo
                temporada = capitulo.split('x')[0]
                episodio = oTmdb.get_episodio(temporada=capitulo.split('x')[0],
                                              capitulo=capitulo.split('x')[1])
                if episodio["episodio_sinopsis"] != "":
                    sinopsis = episodio["episodio_sinopsis"]
                if episodio["episodio_imagen"] != "":
                    item.thumbnail = episodio["episodio_imagen"]
                if episodio["episodio_titulo"] != "":
                    title = title + ": " + episodio["episodio_titulo"]
            except:
                pass

            itemlist.append(
                Item(channel=__channel__,
                     action=action,
                     title=title,
                     viewmode="movie_with_plot",
                     url=url,
                     show=show,
                     fanart=item.fanart,
                     thumbnail=item.thumbnail,
                     extra='series',
                     plot=sinopsis))

        if config.get_library_support(
        ) and len(itemlist) > 0 and item.extra.startswith("serie"):
            itemlist.append(
                Item(channel=__channel__,
                     title="Añadir esta serie a la biblioteca",
                     url=item.url,
                     action="add_serie_to_library",
                     extra='episodios###series',
                     show=item.show))
    except:
        pass

    return itemlist
Exemplo n.º 15
0
def findvideos(item):
    logger.info("[peliserie.py] findvideos extra: " + item.extra)
    itemlist = []

    if item.extra == 'peliculas':
        # Solo mostramos enlaces para ver online
        patron = 'id="contribution-view">(.*?)</ul>'
        # Si quisiseramos mostrarlos todos: patron= 'id="contribution-view">(.*?)class="list-end"'

        # Buscamos el fanart en TMDB
        year = item.show.split('|')[1]
        item.show = item.show.split('|')[0]
        try:
            from core.tmdb import Tmdb
            oTmdb = Tmdb(texto_buscado=item.show, year=year)
            item.fanart = oTmdb.get_backdrop()
        except:
            pass

    else:  # 'series' y 'play_from_library'
        # Solo mostramos enlaces para ver online
        patron = 'id="view-list">(.*?)</ul>'
        # Si quisiseramos mostrarlos todos: patron= 'id="id="view-list">(.*?)class="list-end"'

    # Descarga la página
    data = re.sub(r"\n|\r|\t|\s{2}|(<!--.*?-->)", "",
                  scrapertools.cache_page(item.url))
    if item.plot == '':
        item.plot = scrapertools.entityunescape(
            scrapertools.get_match(data, '<p class="sinopsis">(.*?)</p>'))
        print item.plot
    data = scrapertools.get_match(data, patron)
    patron = '<li data-id="(.*?)</li>'
    matches = re.compile(patron, re.DOTALL).findall(data)
    '''
    <li data-id="53885">
        <div class="column"><strong>Allmyvideos</strong></div>
        <div class="column" style="width:15%">
            <img src="/images/flags/lang/flag_0.png"/>
        </div> 
        <div class="column">BrScreener/Line</div>
        <div class="column">bibiamorant</div>
        <div class="column" style="width:25%">
            <div class="btn s">
                <a href="/external?action=movie&id=53885" class="" target="_blank">Ver online</a>
            </div> 
            <div class="actions">
                <i id="report-contribution" data-id="53885" class="iconx16 icon3"></i> 
            </div>
        </div>
    </li>
    '''

    for i in matches:
        servidor = scrapertools.get_match(
            i, '<div class="column"><strong>([^<]+)</strong>')

        mostrar_server = True
        if config.get_setting("hidepremium") == "true":
            mostrar_server = servertools.is_server_enabled(servidor)

        if mostrar_server:
            idioma = scrapertools.get_match(i, '<img src="(.*?)"/>')
            if 'flag_0.png' in idioma:
                idioma = 'Es'
            elif 'flag_1.png' in idioma:
                idioma = 'Lat'
            elif 'flag_2.png' in idioma:
                idioma = 'VO'
            elif 'flag_3.png' in idioma:
                idioma = 'VOSE'
            calidad = scrapertools.get_match(
                i, '<div class="column">([^<]+)</div>')
            url = __url_base__ + scrapertools.get_match(i, '<a href="([^"]+)"')

            title = 'Ver en ' + servidor + ' [' + calidad + '] (' + idioma + ')'
            itemlist.append(
                Item(channel=__channel__,
                     action="play",
                     viewmode="movie_with_plot",
                     server=servidor,
                     title=title,
                     plot=item.plot,
                     thumbnail=item.thumbnail,
                     fanart=item.fanart,
                     fulltitle=item.title,
                     url=url,
                     extra=item.extra,
                     folder=False))
            #itemlist.append( Item(channel=__channel__, action="play", server=servidor, title=title , plot=item.plot, thumbnail=item.thumbnail, fanart= item.fanart, fulltitle = item.title, url=url , extra=item.extra, folder=False) )

    return itemlist
Exemplo n.º 16
0
def get_only_episodio(item):
    logger.info("[pepecine.py] get_only_episodio")
    itemlist = []
    plot = {}

    data = re.sub(r"\n|\r|\t|\s{2}|(<!--.*?-->)", "",
                  scrapertools.cache_page(item.url))
    patron = 'vars.title =(.*?)};'
    try:
        data_dict = jsontools.load_json(
            scrapertools.get_match(data, patron) + '}')
    except:
        return itemlist  # Devolvemos lista vacia

    try:
        from core.tmdb import Tmdb
        oTmdb = Tmdb(id_Tmdb=data_dict['tmdb_id'], tipo="tv")
    except:
        pass

    infoLabels = item.infoLabels
    cast = []
    rol = []
    for actor in data_dict["actor"]:
        cast.append(actor['name'])
        rol.append(actor['pivot']['char_name'])

    writers_list = []
    for writer in data_dict["writer"]:
        writers_list.append(writer['name'])

    director_list = []
    for director in data_dict["director"]:
        director_list.append(director['name'])

    infoLabels['cast'] = cast
    infoLabels['castandrole'] = zip(cast, rol)
    infoLabels['writer'] = ", ".join(writers_list)
    infoLabels['director'] = ", ".join(director_list)
    infoLabels['season'], infoLabels['episode'] = item.extra.split('x')
    try:
        # añadimos sinopsis e imagenes del capitulo
        datos_tmdb = oTmdb.get_episodio(temporada=infoLabels['season'],
                                        capitulo=infoLabels['episode'])
        if datos_tmdb["episodio_sinopsis"] != "":
            infoLabels['plot'] = datos_tmdb["episodio_sinopsis"]
        if datos_tmdb["episodio_imagen"] != "":
            item.thumbnail = datos_tmdb["episodio_imagen"]
        #if datos_tmdb["episodio_titulo"] !="": title = title + " [COLOR 0xFFFFE6CC]" + datos_tmdb["episodio_titulo"].replace('\t','') + "[/COLOR]"
    except:
        pass

    def cap(l):
        try:
            temporada_link = int(l["season"])
            capitulo_link = int(l['episode'])
        except:
            return False
        return True if temporada_link == int(
            infoLabels['season']) and capitulo_link == int(
                infoLabels['episode']) else False

    item.url = str(filter(cap,
                          data_dict["link"]))  #filtramos enlaces por capitulo

    item.infoLabels = infoLabels
    item.extra = str(data_dict['tmdb_id'])

    return findvideos(item)
Exemplo n.º 17
0
def episodios(item):
    logger.info("pelisalacarta.mejortorrent episodios")
    itemlist = []

    # Descarga la página
    data = scrapertools.cachePage(item.url)

    total_capis = scrapertools.get_match(
        data, "<input type='hidden' name='total_capis' value='(\d+)'>")
    tabla = scrapertools.get_match(
        data, "<input type='hidden' name='tabla' value='([^']+)'>")
    titulo = scrapertools.get_match(
        data, "<input type='hidden' name='titulo' value='([^']+)'>")

    item.thumbnail = scrapertools.find_single_match(
        data, "src='http://www\.mejortorrent\.com(/uploads/imagenes/" + tabla +
        "/[a-zA-Z0-9_ ]+.jpg)'")
    item.thumbnail = 'http://www.mejortorrent.com' + urllib.quote(
        item.thumbnail)

    #<form name='episodios' action='secciones.php?sec=descargas&ap=contar_varios' method='post'>
    data = scrapertools.get_match(
        data,
        "<form name='episodios' action='secciones.php\?sec=descargas\&ap=contar_varios' method='post'>(.*?)</form>"
    )
    '''
        <td bgcolor='#C8DAC8' style='border-bottom:1px solid black;'><a href='/serie-episodio-descargar-torrent-18741-Juego-de-tronos-4x01.html'>4x01 - Episodio en V.O. Sub Esp.</a></td>
        <td width='120' bgcolor='#C8DAC8' align='right' style='border-right:1px solid black; border-bottom:1px solid black;'><div style='color:#666666; font-size:9px; margin-right:5px;'>Fecha: 2014-04-07</div></td>
        <td width='60' bgcolor='#F1F1F1' align='center' style='border-bottom:1px solid black;'>
        <input type='checkbox' name='episodios[1]' value='18741'>
        '''

    if item.extra == "series":
        patron = "<td bgcolor[^>]+><a[^>]+>([^>]+)</a></td>[^<]+"
    else:
        patron = "<td bgcolor[^>]+>([^>]+)</td>[^<]+"

    patron += "<td[^<]+<div[^>]+>Fecha: ([^<]+)</div></td>[^<]+"
    patron += "<td[^<]+"
    patron += "<input type='checkbox' name='([^']+)' value='([^']+)'"

    matches = re.compile(patron, re.DOTALL).findall(data)
    scrapertools.printMatches(matches)

    tmdb_title = re.sub(
        r'(\s*-\s*)?\d+.*?\s*Temporada|(\s*-\s*)?\s*Miniserie\.?|\(.*\)|\[.*\]',
        '', item.title).strip()
    logger.debug('pelisalacarta.mejortorrent episodios tmdb_title=' +
                 tmdb_title)

    if item.extra == "series":
        oTmdb = Tmdb(texto_buscado=tmdb_title.strip(),
                     tipo='tv',
                     idioma_busqueda="es")
    else:
        oTmdb = Tmdb(texto_buscado=tmdb_title.strip(), idioma_busqueda="es")

    for scrapedtitle, fecha, name, value in matches:
        scrapedtitle = scrapedtitle.strip()
        if scrapedtitle.endswith('.'):
            scrapedtitle = scrapedtitle[:-1]

        title = scrapedtitle + " (" + fecha + ")"

        url = "http://www.mejortorrent.com/secciones.php?sec=descargas&ap=contar_varios"
        #"episodios%5B1%5D=11744&total_capis=5&tabla=series&titulo=Sea+Patrol+-+2%AA+Temporada"
        post = urllib.urlencode({
            name: value,
            "total_capis": total_capis,
            "tabla": tabla,
            "titulo": titulo
        })
        logger.debug("post=" + post)

        if item.extra == "series":
            epi = scrapedtitle.split("x")

            # Sólo comprobar Tmdb si el formato es temporadaXcapitulo
            if len(epi) > 1:
                temporada = re.sub("\D", "", epi[0])
                capitulo = re.search("\d+", epi[1])
                if capitulo:
                    capitulo = capitulo.group()
                else:
                    capitulo = 1

                epi_data = oTmdb.get_episodio(temporada, capitulo)
                logger.debug("epi_data=" + str(epi_data))

                if epi_data:
                    item.thumbnail = epi_data["temporada_poster"]
                    item.fanart = epi_data["episodio_imagen"]
                    item.plot = epi_data["episodio_sinopsis"]
                    epi_title = epi_data["episodio_titulo"]
                    if epi_title != "":
                        title = scrapedtitle + " " + epi_title + " (" + fecha + ")"
        else:
            try:
                item.fanart = oTmdb.get_backdrop()
            except:
                pass

            item.plot = oTmdb.get_sinopsis()

        logger.debug("title=[" + title + "], url=[" + url + "], item=[" +
                     str(item) + "]")

        itemlist.append(
            Item(channel=item.channel,
                 action="play",
                 title=title,
                 url=url,
                 thumbnail=item.thumbnail,
                 plot=item.plot,
                 fanart=item.fanart,
                 extra=post,
                 folder=False))

    return itemlist
    def get_tmdb_tv_data(self, text, season=0, episode=0):
        # Pasamos la temporada y episodeo a int()
        season = int(season)
        episode = int(episode)

        # Buscamos la serie si no esta cargada
        if not self.otmdb:
            self.otmdb = Tmdb(texto_buscado=text,
                              idioma_busqueda="it",
                              tipo="tv")

        _id = self.otmdb.get_id()

        # Si no hay resultados salimos
        if not _id:
            return False

        # informacion generica de la serie
        self.result["type"] = "tv"
        self.result["tmdb_id"] = self.otmdb.get_id()
        self.result["title"] = self.otmdb.result.get("name", "N/A")
        self.result["rating"] = self.otmdb.result[
            "vote_average"] + "/10 (" + self.otmdb.result["vote_count"] + ")"
        self.result["genres"] = ", ".join(self.otmdb.result["genres"])
        self.result["language"] = self.get_language(
            self.otmdb.result["original_language"])
        self.result["thumbnail"] = self.otmdb.get_poster()
        self.result["fanart"] = self.otmdb.get_backdrop()
        self.result["overview"] = self.otmdb.result.get("overview", "N/A")

        # Si tenemos informacion de temporada y episodio
        if season and episode:
            if "seasons" not in self.result or self.result["seasons"] == "":
                self.otmdb = Tmdb(id_Tmdb=id, idioma_busqueda="it", tipo="tv")
                self.result["seasons"] = str(
                    self.otmdb.result.get("number_of_seasons", 0))

            if season > self.result["seasons"]:
                season = self.result["season_count"]

            if episode > self.otmdb.result.get("seasons")[season -
                                                          1]["episode_count"]:
                episode = self.otmdb.result.get(
                    "seasons")[season]["episode_count"]

            # Solicitamos información del episodio concreto
            episode_info = self.otmdb.get_episodio(season, episode)

            # informacion de la temporada
            self.result["season"] = str(season)
            if episode_info.get("temporada_poster"):
                self.result["thumbnail"] = episode_info.get("temporada_poster")
            if self.otmdb.result.get("overview"):
                self.result["overview"] = self.otmdb.result.get("overview")

            # informacion del episodio
            self.result["episode"] = str(episode)
            self.result["episodes"] = str(
                episode_info.get('temporada_num_episodios', 0))
            self.result["episode_title"] = episode_info.get(
                "episodio_titulo", "N/A")
            self.result["date"] = self.get_date(
                self.otmdb.temporada[season]["episodes"][episode -
                                                         1].get("air_date"))
            if episode_info.get("episodio_imagen"):
                self.result["fanart"] = episode_info.get("episodio_imagen")
            if episode_info.get("episodio_sinopsis"):
                self.result["overview"] = episode_info.get("episodio_sinopsis")

        return True
Exemplo n.º 19
0
def get_episodios(item):
    logger.info("[pepecine.py] get_episodios")
    itemlist = []
    plot = {}

    try:
        from core.tmdb import Tmdb
        oTmdb = Tmdb(id_Tmdb=item.extra, tipo="tv")
    except:
        pass

    infoLabels = item.infoLabels

    lista_links = ast.literal_eval(item.url)
    # Agrupar enlaces por episodios  temXcap
    temXcap_dict = {}
    for link in lista_links:
        title_id = link['title_id']
        try:
            season = str(int(link['season']))
            episode = str(int(link['episode'])).zfill(2)
        except:
            continue
        id = season + "x" + episode
        if temXcap_dict.has_key(id):
            l = temXcap_dict[id]
            l.append(link)
            temXcap_dict[id] = l
        else:
            temXcap_dict[id] = [link]

    # Ordenar lista de enlaces por temporada y capitulo
    temXcap_list = temXcap_dict.items()
    temXcap_list.sort(
        key=lambda x: (int(x[0].split("x")[0]), int(x[0].split("x")[1])))
    for episodio in temXcap_list:
        title = infoLabels['titleraw'] + ' (' + episodio[0] + ')'
        infoLabels['season'], infoLabels['episode'] = episodio[0].split('x')
        try:
            # añadimos sinopsis e imagenes para cada capitulo
            datos_tmdb = oTmdb.get_episodio(temporada=infoLabels['season'],
                                            capitulo=infoLabels['episode'])
            if datos_tmdb["episodio_sinopsis"] != "":
                infoLabels['plot'] = datos_tmdb["episodio_sinopsis"]
            if datos_tmdb["episodio_imagen"] != "":
                item.thumbnail = datos_tmdb["episodio_imagen"]
            if datos_tmdb["episodio_titulo"] != "":
                title = title + " " + datos_tmdb["episodio_titulo"].replace(
                    '\t', '')
        except:
            pass

        itemlist.append(
            Item(channel=item.channel,
                 action="findvideos",
                 title=title,
                 url=str(episodio[1]),
                 extra=item.extra,
                 show=infoLabels['tvshowtitle'],
                 fanart=item.fanart,
                 infoLabels=infoLabels,
                 thumbnail=item.thumbnail,
                 viewmode="movie_with_plot",
                 text_color="0xFFFFCE9C"))

    if config.get_library_support() and itemlist:
        url = urlparse.urljoin(__url_base__, "series-online/" + str(title_id))
        #url= urlparse.urljoin(__url_base__,"series-online/" + (str(infoLabels['title_id']) +"-"+ infoLabels['titleraw']))
        itemlist.append(
            Item(channel=item.channel,
                 title="Añadir esta serie a la biblioteca",
                 url=url,
                 text_color="0xFFe5ffcc",
                 action="add_serie_to_library",
                 extra='episodios###serie_add',
                 show=infoLabels['tvshowtitle'],
                 thumbnail='https://d5.usercdn.com/dl/i/02360/a99fzwbqdaen.png'
                 ))

    return itemlist
Exemplo n.º 20
0
    def get_tmdb_tv_data(self, text):
        # Buscamos la serie si no esta cargada
        if not self.otmdb:
            self.otmdb = Tmdb(texto_buscado=text,
                              idioma_busqueda="es",
                              tipo="tv")

        # Si no hay resultados salimos
        if not self.otmdb.get_id():
            return False

        # informacion generica de la serie
        infoLabels = self.otmdb.get_infoLabels()
        infoLabels["mediatype"] = "tvshow"
        infoLabels["language"] = self.get_language(
            infoLabels["original_language"])
        infoLabels["puntuacion"] = str(infoLabels["rating"]) + "/10 (" + str(
            infoLabels["votes"]) + ")"

        self.result = infoLabels

        # Si tenemos informacion de temporada
        if self.item_temporada:
            if not self.result["seasons"]:
                self.otmdb = Tmdb(id_Tmdb=infoLabels['tmdb_id'],
                                  idioma_busqueda="es",
                                  tipo="tv")
                #logger.debug(str(self.otmdb.get_infoLabels()))

                self.result["seasons"] = str(
                    self.otmdb.result.get("number_of_seasons", 0))

            if self.item_temporada > self.result["seasons"]:
                self.item_temporada = self.result["season_count"]

            if self.item_episodio > self.otmdb.result.get("seasons")[
                    self.item_temporada - 1]["episode_count"]:
                self.item_episodio = self.otmdb.result.get("seasons")[
                    self.item_temporada]["episode_count"]

            # Solicitamos información del episodio concreto
            episode_info = self.otmdb.get_episodio(self.item_temporada,
                                                   self.item_episodio)

            # informacion de la temporada
            self.result["season"] = str(self.item_temporada)
            self.result["temporada_nombre"] = episode_info.get(
                "temporada_nombre", "N/A")
            self.result["episodes"] = str(
                episode_info.get('temporada_num_episodios', "N/A"))
            if episode_info.get("temporada_poster"):
                self.result["thumbnail"] = episode_info.get("temporada_poster")
            if episode_info.get("temporada_sinopsis"):
                self.result["plot"] = episode_info.get("temporada_sinopsis")

            # Si tenemos numero de episodio:
            if self.item_episodio:
                # informacion del episodio
                self.result["episode"] = str(self.item_episodio)
                self.result["episode_title"] = episode_info.get(
                    "episodio_titulo", "N/A")
                self.result["date"] = self.get_date(self.otmdb.temporada[
                    self.item_temporada]["episodes"][self.item_episodio -
                                                     1].get("air_date"))
                if episode_info.get("episodio_imagen"):
                    self.result["fanart"] = episode_info.get("episodio_imagen")
                if episode_info.get("episodio_sinopsis"):
                    self.result["plot"] = episode_info.get("episodio_sinopsis")

        return True
Exemplo n.º 21
0
def completo(item):
    logger.info("[newpct1.py] completo")
    itemlist = []
    categoryID=""
    
    # Guarda el valor por si son etiquetas para que lo vea 'listadofichas'
    item_extra = item.extra
    item_show= item.show
    item_title= item.title
       
    # Lee las entradas
    if item_extra.startswith("serie"):
        ultimo_action="get_episodios"
        
        if item.extra !="serie_add":
            '''
            # Afinar mas la busqueda 
            if item_extra=="serie-hd":
                categoryID=buscar_en_subcategoria(item.show,'1469')
            elif item_extra=="serie-vo":
                categoryID=buscar_en_subcategoria(item.show,'775')
            elif item_extra=="serie-tv":
                categoryID=buscar_en_subcategoria(item.show,'767')
            if categoryID !="":
                item.url=item.url.replace("categoryID=","categoryID="+categoryID)
                
            #Fanart
            oTvdb= TvDb()
            serieID=oTvdb.get_serieId_by_title(item.show)
            fanart = oTvdb.get_graphics_by_serieId(serieID)
            if len(fanart)>0:
                item.fanart = fanart[0]'''
            try:
                from core.tmdb import Tmdb
                oTmdb= Tmdb(texto_buscado=item.show,tipo="tv",idioma_busqueda="es")
                item.fanart=oTmdb.get_backdrop()
                item.plot=oTmdb.get_sinopsis()
                print item.plot
            except:
                pass
        else:
            item_title= item.show
        
        items_programas = get_episodios(item)        
    else:
        ultimo_action="listado"
        items_programas = listado(item)
        
    if len(items_programas) ==0:
            return itemlist # devolver lista vacia
            
    salir = False
    while not salir:

        # Saca la URL de la siguiente página    
        ultimo_item = items_programas[ len(items_programas)-1 ]
       
        # Páginas intermedias
        if ultimo_item.action==ultimo_action:
            # Quita el elemento de "Página siguiente" 
            ultimo_item = items_programas.pop()

            # Añade las entradas de la página a la lista completa
            itemlist.extend( items_programas )
    
            # Carga la siguiente página
            ultimo_item.extra = item_extra
            ultimo_item.show = item_show
            ultimo_item.title = item_title
            logger.info("[newpct1.py] completo url=" + ultimo_item.url)
            if item_extra.startswith("serie"):
                items_programas = get_episodios(ultimo_item)
            else:
                items_programas = listado(ultimo_item)
                
        # Última página
        else:
            # Añade a la lista completa y sale
            itemlist.extend( items_programas )
            salir = True          
      
    if (config.get_library_support() and len(itemlist)>0 and item.extra.startswith("serie")) :
        itemlist.append( Item(channel=item.channel, title="Añadir esta serie a la biblioteca", url=item.url, action="add_serie_to_library", extra="completo###serie_add" , show= item.show))
    logger.info("[newpct1.py] completo items="+ str(len(itemlist)))
    return itemlist
Exemplo n.º 22
0
def episodios(item):
    logger.info("pelisalacarta.channels.verseriesynovelas episodios")
    itemlist = []

    data = anti_cloudflare(item.url)
    data = data.replace("\n", "").replace("\t", "")
    if item.show == "":
        try:
            from core.tmdb import Tmdb
            otmdb = Tmdb(texto_buscado=item.fulltitle, tipo="tv")
        except:
            pass
    plot = scrapertools.find_single_match(data, '<p><p>(.*?)</p>')
    if len(plot) > 0: plot = scrapertools.htmlclean(plot)
    patron = '<td data-th="Temporada"(.*?)</div>'
    bloque = scrapertools.find_multiple_matches(data, patron)
    for match in bloque:
        patron = '.*?href="([^"]+)".*?title="([^"]+)"'
        matches = scrapertools.find_multiple_matches(match, patron)
        for scrapedurl, scrapedtitle in matches:
            if item.show == "":
                try:
                    sinopsis, fanart, thumbnail = infoepi(
                        otmdb,
                        scrapedtitle.rsplit(' ', 1)[1], plot)
                    if thumbnail == "": thumbnail = item.thumbnail
                except:
                    thumbnail = item.thumbnail
                    fanart = item.fanart
                    sinopsis = plot
                    pass
            else:
                thumbnail = item.thumbnail
                fanart = item.fanart
                sinopsis = plot
            scrapedtitle = scrapertools.decodeHtmlentities(scrapedtitle) + " "
            scrapedtitle = scrapedtitle.replace('Temporada', '')
            if "ES.png" in match:
                scrapedtitle += "[COLOR sandybrown][CAST][/COLOR]"
            if "SUB.png" in match:
                scrapedtitle += "[COLOR green][VOSE][/COLOR]"
            if "LA.png" in match: scrapedtitle += "[COLOR red][LAT][/COLOR]"
            if "EN.png" in match: scrapedtitle += "[COLOR blue][V.O][/COLOR]"
            if (DEBUG):
                logger.info("title=[" + scrapedtitle + "], url=[" +
                            scrapedurl + "]")
            if item.show != "":
                scrapedtitle = scrapedurl + "%" + scrapedtitle
                scrapedurl = item.url
            itemlist.append(
                Item(channel=__channel__,
                     action='findvideos',
                     title=scrapedtitle,
                     url=scrapedurl,
                     thumbnail=thumbnail,
                     fanart=fanart,
                     fulltitle=item.fulltitle,
                     plot=str(sinopsis),
                     show=item.show,
                     folder=True))

    if len(itemlist) > 0 and item.show == "":
        if config.get_library_support():
            itemlist.append(
                Item(
                    channel=__channel__,
                    title=
                    "[COLOR green]Añadir esta temporada a la biblioteca[/COLOR]",
                    url=item.url,
                    action="add_serie_to_library",
                    extra="episodios",
                    fulltitle=item.fulltitle,
                    show=item.fulltitle))

    return itemlist
Exemplo n.º 23
0
def findvideostv(item):
    logger.info("pelisalacarta.channels.allpeliculas findvideostv")
    itemlist = []
    season = item.title.split(" ")[1]
    thumbnail = item.thumbnail
    #Rellena diccionarios idioma y calidad
    idiomas_videos, calidad_videos = dict_videos()

    data = scrapertools.cachePage(item.url)
    data = data.replace("\n", "").replace("\t", "")
    data = scrapertools.decodeHtmlentities(data)
    try:
        from core.tmdb import Tmdb
        otmdb = Tmdb(texto_buscado=item.fulltitle, tipo="tv")
    except:
        pass
    #Enlaces Online
    patron = '<span class="movie-online-list" id_movies_types="([^"]+)".*?episode="([^"]+)" season="' + season + '" id_lang="([^"]+)".*?online-link="([^"]+)"'
    matches = scrapertools.find_multiple_matches(data, patron)
    for quality, episode, language, url in matches:
        enlaces = servertools.findvideos(data=url)
        if len(enlaces) > 0:
            idioma = IDIOMAS.get(idiomas_videos.get(language))
            titulo = "[COLOR sandybrown][B]Episodio " + episode + "[/B][/COLOR] "
            titulo += "Enlace encontrado en [COLOR green][B]" + enlaces[0][
                0] + "[/B][/COLOR] [COLOR magenta][" + idioma + "][/COLOR] [" + calidad_videos.get(
                    quality) + "]"
            servidor = enlaces[0][2]
            try:
                item.plot, thumbnail = infoepi(otmdb, season, episode)
            except:
                pass
            itemlist.append(
                Item(channel=__channel__,
                     action="play",
                     server=servidor,
                     title=titulo,
                     url=enlaces[0][1],
                     fulltitle=item.fulltitle,
                     thumbnail=thumbnail,
                     fanart=item.fanart,
                     plot=str(item.plot),
                     extra=episode,
                     folder=False))

    #Enlace Descarga
    patron = '<span class="movie-downloadlink-list" id_movies_types="([^"]+)".*?episode="([^"]+)" season="' + season + '" id_lang="([^"]+)".*?online-link="([^"]+)"'
    matches = scrapertools.find_multiple_matches(data, patron)
    for quality, episode, language, url in matches:
        mostrar_server = True
        enlaces = servertools.findvideos(data=url)
        if len(enlaces) > 0:
            servidor = enlaces[0][2]
            if config.get_setting("hidepremium") == "true":
                mostrar_server = servertools.is_server_enabled(servidor)
            if mostrar_server:
                idioma = IDIOMAS.get(idiomas_videos.get(language))
                titulo = "[COLOR sandybrown][B]Episodio " + episode + "[/B][/COLOR] "
                titulo += "Enlace encontrado en [COLOR green][B]" + enlaces[0][
                    0] + "[/B][/COLOR] [" + idioma + "] [" + calidad_videos.get(
                        quality) + "]"
                try:
                    item.plot, thumbnail = infoepi(otmdb, season, episode)
                except:
                    pass
                itemlist.append(
                    Item(channel=__channel__,
                         action="play",
                         server=servidor,
                         title=titulo,
                         url=enlaces[0][1],
                         fulltitle=item.fulltitle,
                         thumbnail=thumbnail,
                         fanart=item.fanart,
                         plot=str(item.plot),
                         extra=episode,
                         folder=False))

    itemlist.sort(key=lambda item: (int(item.extra), item.title))
    return itemlist
Exemplo n.º 24
0
def findvideos(item):
    logger.info("pelisalacarta.channels.seriecanal findvideos")
    itemlist = []
    data = scrapertools.cachePage(item.url)
    data = scrapertools.decodeHtmlentities(data)

    infoLabels = {}
    plot = {}
    infoLabels['season'] = item.extra
    infoLabels['plot'] = item.plot
    infoLabels['tvshowtitle'] = item.fulltitle
    seriethumbnail = item.thumbnail

    try:
        from core.tmdb import Tmdb
        oTmdb = Tmdb(texto_buscado=item.fulltitle, tipo="tv")
    except:
        pass

    #Busca en la seccion descarga/torrent
    data_download = scrapertools.get_match(
        data, '<th>Enlaces de Descarga mediante P2P o DD</th>(.*?)</table>')
    patron = '<p class="item_name">.*?<a href="([^"]+)".*?">([^"]+)</a>'
    patron += '[^=]+.*?<a.*?">(.*?)</a>'
    matches = re.compile(patron, re.DOTALL).findall(data_download)
    scrapertools.printMatches(matches)
    for scrapedurl, scrapedepi, scrapedname in matches:
        if scrapedname != "Episodio " + scrapedepi:
            scrapedtitle = " - Episodio " + scrapedepi + " - " + scrapedname
        else:
            scrapedtitle = " - " + scrapedname
        scrapedtitle = scrapertools.htmlclean(scrapedtitle)
        #Info episodio
        infoLabels['episode'] = scrapedepi
        try:
            thumbnail_epi = ""
            episodio = oTmdb.get_episodio(infoLabels['season'],
                                          infoLabels['episode'])
            if episodio["episodio_sinopsis"] != "":
                infoLabels['plot'] = episodio["episodio_sinopsis"]
            else:
                if oTmdb.get_sinopsis() != "":
                    infoLabels['plot'] = oTmdb.get_sinopsis()
            infoLabels['genre'] = ", ".join(oTmdb.result["genres"])
            item.fanart = oTmdb.get_backdrop()
            if episodio["episodio_imagen"] != "":
                thumbnail_epi = episodio["episodio_imagen"]
        except:
            pass

        plot['infoLabels'] = infoLabels
        if (DEBUG):
            logger.info("title=[" + scrapedtitle + "], url=[" + scrapedurl +
                        "]")
        if scrapedurl.find("magnet") != -1:
            if thumbnail_epi == "": thumbnail_epi = seriethumbnail
            itemlist.append(
                Item(channel=__channel__,
                     action="play",
                     title="[Torrent]" + scrapedtitle,
                     url=scrapedurl,
                     thumbnail=thumbnail_epi,
                     plot=str(plot),
                     fanart=item.fanart,
                     extra="torrent"))

    #Busca en la seccion online
    data_online = scrapertools.get_match(
        data, '<th>Enlaces de Visionado Online</th>(.*?)</table>')
    patron = '<a href="([^"]+)\\n.*?src="([^"]+)".*?'
    patron += 'title="Enlace de Visionado Online">([^"]+)</a>'
    matches = re.compile(patron, re.DOTALL).findall(data_online)
    scrapertools.printMatches(matches)

    for scrapedurl, scrapedthumb, scrapedtitle in matches:
        #Deshecha enlaces de trailers
        scrapedtitle = scrapertools.htmlclean(scrapedtitle)
        if (scrapedthumb != "images/series/youtube.png") & (scrapedtitle !=
                                                            "Trailer"):
            server = scrapertools.find_single_match(scrapedthumb,
                                                    'images/series/(.*?).png')
            scrapedepi = scrapertools.find_single_match(
                scrapedtitle, 'Episodio (.*?) -')
            title = "[" + server.capitalize() + "]" + " " + scrapedtitle
            #Info episodio
            infoLabels['episode'] = scrapedepi
            try:
                thumbnail_epi = ""
                episodio = oTmdb.get_episodio(infoLabels['season'],
                                              infoLabels['episode'])
                if episodio["episodio_sinopsis"] != "":
                    infoLabels['plot'] = episodio["episodio_sinopsis"]
                else:
                    if oTmdb.get_sinopsis() != "":
                        infoLabels['plot'] = oTmdb.get_sinopsis()
                infoLabels['genre'] = ", ".join(oTmdb.result["genres"])
                item.fanart = oTmdb.get_backdrop()
                if episodio["episodio_imagen"] != "":
                    thumbnail_epi = episodio["episodio_imagen"]
            except:
                pass

            plot['infoLabels'] = infoLabels
            if thumbnail_epi == "": thumbnail_epi = seriethumbnail
            itemlist.append(
                Item(channel=__channel__,
                     action="play",
                     extra=server,
                     title=title,
                     url=scrapedurl,
                     thumbnail=thumbnail_epi,
                     fanart=item.fanart,
                     plot=str(plot)))

    data_temp = scrapertools.get_match(
        data, '<div class="panel panel-success">(.*?)</table>')
    data_temp = re.sub(r"\n|\r|\t|\s{2}|&nbsp;", "", data_temp)
    data_notemp = scrapertools.find_single_match(
        data_temp, '<td colspan="7"(.*?)</table>')
    #Comprueba si hay otras temporadas
    if len(data_notemp) == 0:
        patron = '<tr><td><p class="item_name"><a href="([^"]+)".*?'
        patron += '<p class="text-success"><strong>([^"]+)</strong>'
        matches = re.compile(patron, re.DOTALL).findall(data_temp)
        scrapertools.printMatches(matches)
        for scrapedurl, scrapedtitle in matches:
            url = urlparse.urljoin(URL_BASE, scrapedurl)
            scrapedtitle = scrapedtitle.capitalize()
            itemlist.append(
                Item(channel=__channel__,
                     action="findvideos",
                     title=scrapedtitle,
                     fulltitle=item.fulltitle,
                     url=url,
                     thumbnail=seriethumbnail,
                     extra=scrapedtitle.strip("Temporada "),
                     fanart=item.fanart,
                     plot=item.plot,
                     folder=True))

    return itemlist