Página 1 de 2

Importación a biblioteca marcando vistos + otros temas

Publicado: 10 Dic 2015, 11:43
por Xavi
Muy buenas a todos. Tengo un par de inquietudes que me gustaría compartir, y que soy consciente que probablemente ya se habrán planteado en algún otro momento. He buscado información sobre el tema en el foro pero lo que he encontrado no es exactamente lo que busco. Mis disculpas si ya ha salido en otras ocasiones y no he sabido encontrarlo. Y por favor, si digo alguna barbaridad en las siguientes líneas corregidme.

Hace poco descubrí la capacidad de Pelisalacarta, y de Kodi en general, de añadir fuentes de medios remotos a la librería con los ficheros .strm. Es agradable a estas alturas después de tiempo de utilizar Kodi y Pelisalacarta descubrir nuevas posibilidades (que realmente siempre han estado ahí). Eso me hace apreciar aún mas el trabajo que habéis llevado a cabo con el addon. ¡Enhorabuena!

El uso de la biblioteca es algo que nunca me había planteado. Tengo mis archivos locales en el disco, organizados en carpetas, y para medios online usaba en su día series.ly. Su sistema de tracking de Pendientes/Vistos etc ya me parecía bien. Luego, como muchos, pasé a usar pordede como fuente de medios online principal. Durante la transición series.ly->pordede intenté informarme sobre cómo exportar esa información de seguimiento para poder importarla en otro lado más centralizado (por ejemplo trakt.tv), pero eso no parecía posible. Con lo que vuelta a empezar, borrón y cuenta nueva, volver a marcar todas las series y peliculas pendientes/vistas etc, esta vez "casándome" con pordede.

Al descubrir el tema de la bilbioteca me di cuenta del potencial que puede tener su uso. Con el addon de trakt.tv integrado en la bilbioteca se puede llegar a esa "perfección" de tener sincronizado en todo momento todo lo visto/pendiente/favorito de forma automática y lo más importante para mí, sin casarse con ninguna web/canal en concreto (sólo un servicio centralizado destinado a esas funciones). Además, otra ventaja que le veo es poder tener los medios locales y online accesibles indistintamente desde el mismo sitio, con la ventaja de la integración con scrapers de información para todos ellos. Una pasada, vamos. Sé que estoy descubriendo la sopa de ajo con esto, pero es nuevo para mí :D

Mis dudas e inquietudes se pueden agrupar en dos bloques principalmente:

1 - Al importar una serie/pelicula a la biblioteca desde pelisalcarta, marcar automáticamente en la bilbioteca los episodios vistos de esa serie. También estaria bien tener una opción en los canales que tienen seguimiento de Visto/No Visto/Siguiendo etc de añadir todos los contenidos marcados a la biblioteca (tipo importación inicial).

Sobre este tema, y por lo que he visto en el código (enhorabuena por la migración a GitHub :D), lo único que hace pelisalacarta es crear los ficheros .strm en la carpeta /library del addon, linkando al propio addon indicando todos los parámetros para acceder "en vivo" a la lista de enlaces del contenido. Entiendo que en ese mismo momento de generar los ficheros .strm se podría mirar (de la misma manera que se mira para poner el "[visto]") si el contenido está visto o no, y marcarlo así en la biblioteca. No conozco la API de Kodi en esa área, pero debería poderse hacer. Quizás tendría sentido hacer un script de importación inicial que se patee para el canal todos los contenidos seguidos y los añada a la biblioteca marcando de la manera que mejor cuadre. Sería genial poder hacer esto para pordede y para series.ly (ayer comprobé que el canal sigue funcionando y sigue podiendo consultar contenidos con seguimiento).

2 - Mi otra inquietud, que quizás ya no tiene que ver tanto con el propio addon sino más bien con Kodi, tiene que ver con poder añadir a la biblioteca diferentes fuentes de medios online para el mismo contenido. Por ejemplo, añadir a la biblioteca la misma series desde dos canales diferentes y que al acceder a un capítulo desde libreria salieran los enlaces de los dos canales. Hice una prueba con una serie en concreto. Quizás por particularidades de los canales, creó en la libreria dos directorios para la serie (uno con iniciales en mayusculas y el otro minusculas). Dentro de los directorios había en uno 1x1.strm y en el otro 1x01.strm. Pero al abrir luego la serie en la biblioteca lo que aparecía era dos veces el episodio, cada uno con los enlaces de su canal. Sería increíble poder añadir las series desde diferentes canales y disponer de los enlaces de todos los canales en la misma entrada de la biblioteca.

Quizás este tema no se pudiera abordar sin una reforma demasiado bestia del addon (ya que en el .strm ya estamos dependiendo de uno de los canales). Imagino que habría que hacerlo con un canal "genérico" que hiciera algo parecido a la función del buscador global del addon. Algo parecido a lo que hace Genesis imagino, que ofrece los contenidos separados de las fuentes y luego busca en todas las fuentes (desde mi desconocimiento casi total de este addon). Por cierto, puestos a pedir también seria muy grande poder integrar en la misma entrada de la biblioteca los .strm que Genesis y otros addons pudieran generar. Así, tener en la biblioteca una sola entrada para el contenido, enlazando a todos los enlaces de todos los addons que los hayan añadido en la biblioteca. No sé si para poder hacer esto estaríamos hablando de otro addon. Parece que un .strm sólo puede tener una única URL (si es el caso posiblemente ese addon ya exista :P)

Bueno, aunque lo parezca esto no es una carta a los reyes :D Más que nada busco información sobre el tema porque me interesa personalmente, y estaría dispuesto en la medida de mis limitadas (por el momento) posibilidades con Python a desarrollar el tema del bloque 1, si lo véis posible y no se está haciendo/está hecho ya.

Gracias pelisalacarta!

PD: Por la información que he ido viendo en el foro, Kodi no parece capaz de marcar como vistos los .strm automáticamente. En la primera duda estaríamos hablando de marcar vistos los que sabemos que ya están vistos porque lo dice el canal. No me importaría marcar manualmente nuevos episodios como vistos mientras Kodi arregla el famoso bug/feature request.

EDITADO para añadir link a este post donde dan a entender que marcar un .strm como visto en la biblioteca seria mas bien responsabilidad del addon en el caso de .strms que contienen plugin://*

Re: Importación a biblioteca marcando vistos + otros temas

Publicado: 10 Dic 2015, 16:26
por robalo
Hola Xavi

La teoría para marcar como visto puede ser fácil pero al igual que cuando añades una serie desde pelisalacarta a la biblioteca ocurre que, o bien encuentra el título y la añade a la biblioteca o no encuentra coincidencia y no añade nada y tendrías que añadirla manualmente. Esto es un problema que a ver quien es el guapo que lo arregla :). También tenemos el dilema de cuando se marca como visto, en qué x% de la reproducción.

Sobre el tema de "misma serie diferentes canales", creo que es algo que se lo debe apañar cada uno como buenamente pueda, cada cual querrá que se muestre de una u otra forma.

Mi personalización pasa por "series-strm/serie/canal/*.strm". La las series se añaden, se actualizan y buscan los arts respetando el sistema de almacenamiento.

A la hora de ver los contenidos lo hago desde "Vídeos->Archivos->series-strm". Allí me encuentro con todas las series con sus arts y plots. Cuando accedo a la serie me muestra las carpetas de los canales. Entro y sólo veo los episodios de ese canal.

Esa es mi forma y con la que estoy contento.

Está claro que si entras desde "Series" verás los episodios repetidos por tantos canales como tengas en la serie e incluso algunos que se borraron a las bravas y se ha quedao en BD :)

Re: Importación a biblioteca marcando vistos + otros temas

Publicado: 10 Dic 2015, 18:36
por SeiTaN
Se ve que le has dado vueltas porque lo explicas extensamente.
Xavi escribió: Mis dudas e inquietudes se pueden agrupar en dos bloques principalmente:

1 - Al importar una serie/pelicula a la biblioteca desde pelisalcarta, marcar automáticamente en la bilbioteca los episodios vistos de esa serie. También estaria bien tener una opción en los canales que tienen seguimiento de Visto/No Visto/Siguiendo etc de añadir todos los contenidos marcados a la biblioteca (tipo importación inicial).

Sobre este tema, y por lo que he visto en el código (enhorabuena por la migración a GitHub :D), lo único que hace pelisalacarta es crear los ficheros .strm en la carpeta /library del addon, linkando al propio addon indicando todos los parámetros para acceder "en vivo" a la lista de enlaces del contenido. Entiendo que en ese mismo momento de generar los ficheros .strm se podría mirar (de la misma manera que se mira para poner el "[visto]") si el contenido está visto o no, y marcarlo así en la biblioteca. No conozco la API de Kodi en esa área, pero debería poderse hacer. Quizás tendría sentido hacer un script de importación inicial que se patee para el canal todos los contenidos seguidos y los añada a la biblioteca marcando de la manera que mejor cuadre. Sería genial poder hacer esto para pordede y para series.ly (ayer comprobé que el canal sigue funcionando y sigue podiendo consultar contenidos con seguimiento).
Si mantienes trakt.tv al dia, tan solo tienes que...:
1 - añadir la serie a la biblioteca.
2 - en Series - archivos, buscar la serie añadida y utilizar el scraper de series para que obtenga la información.
3 - configurar el addon de trakt.tv para que te marque como vistos los episodios automaticamente, y ejecutarlo.

Asi se te marcarian los episodios que ya tienes vistos.
Xavi escribió: 2 - Mi otra inquietud, que quizás ya no tiene que ver tanto con el propio addon sino más bien con Kodi, tiene que ver con poder añadir a la biblioteca diferentes fuentes de medios online para el mismo contenido. Por ejemplo, añadir a la biblioteca la misma series desde dos canales diferentes y que al acceder a un capítulo desde libreria salieran los enlaces de los dos canales. Hice una prueba con una serie en concreto. Quizás por particularidades de los canales, creó en la libreria dos directorios para la serie (uno con iniciales en mayusculas y el otro minusculas). Dentro de los directorios había en uno 1x1.strm y en el otro 1x01.strm. Pero al abrir luego la serie en la biblioteca lo que aparecía era dos veces el episodio, cada uno con los enlaces de su canal. Sería increíble poder añadir las series desde diferentes canales y disponer de los enlaces de todos los canales en la misma entrada de la biblioteca.

Quizás este tema no se pudiera abordar sin una reforma demasiado bestia del addon (ya que en el .strm ya estamos dependiendo de uno de los canales). Imagino que habría que hacerlo con un canal "genérico" que hiciera algo parecido a la función del buscador global del addon. Algo parecido a lo que hace Genesis imagino, que ofrece los contenidos separados de las fuentes y luego busca en todas las fuentes (desde mi desconocimiento casi total de este addon). Por cierto, puestos a pedir también seria muy grande poder integrar en la misma entrada de la biblioteca los .strm que Genesis y otros addons pudieran generar. Así, tener en la biblioteca una sola entrada para el contenido, enlazando a todos los enlaces de todos los addons que los hayan añadido en la biblioteca. No sé si para poder hacer esto estaríamos hablando de otro addon. Parece que un .strm sólo puede tener una única URL (si es el caso posiblemente ese addon ya exista :P)

Bueno, aunque lo parezca esto no es una carta a los reyes :D Más que nada busco información sobre el tema porque me interesa personalmente, y estaría dispuesto en la medida de mis limitadas (por el momento) posibilidades con Python a desarrollar el tema del bloque 1, si lo véis posible y no se está haciendo/está hecho ya.

Gracias pelisalacarta!

PD: Por la información que he ido viendo en el foro, Kodi no parece capaz de marcar como vistos los .strm automáticamente. En la primera duda estaríamos hablando de marcar vistos los que sabemos que ya están vistos porque lo dice el canal. No me importaría marcar manualmente nuevos episodios como vistos mientras Kodi arregla el famoso bug/feature request.

EDITADO para añadir link a este post donde dan a entender que marcar un .strm como visto en la biblioteca seria mas bien responsabilidad del addon en el caso de .strms que contienen plugin://*
La segunda parte según mis limitados conocimientos se podría hacer, un .strm basicamente es una url, habría que modificar el launcher.py y crear un "canal" que apartir de los parametros que contiene la url, devuelva la info.

Ahora mismo el strm contiene un action "play_from_library" que el launcher posteriormente llama al metodo "findvideos" del canal, tu tendrías que:
1 - modificar launcher.py y añadir un action propio.
2 - crear un canal que llame al findvideos por cada "sub-canal" del que quieras episodios, y mostrar el resultado en un itemlist.

Ya luego tendrías que modificar más cosas, como la forma en que se guardan los strm al "añadir a la biblioteca" y el tema de "buscar episodios nuevos", que lo hace a través del series.xml.

Yo estaba como tú hace poco, sin saber de python y descubriendo este maravilloso addon.

Suerte y ánimo ;)

Re: Importación a biblioteca marcando vistos + otros temas

Publicado: 10 Dic 2015, 20:58
por robalo
Si quereís tocar algo más para adaptar un fin concreto y no buscar soluciones con lo que ya tenemos, entonces os propongo que enredéis con .pls conjuntamente con los .strm y se pueden evitar mejor.

Podéis hacer una prueba tonta para ver los efectos que provoca los .pls en kodi.

crear un archivo .pls en la carpeta SERIES con 2 entradas, una con la línea del contenido de .strm y la otra con la ruta del .strm
Pongamos serie "A traves del tiempo" episodio 2x01

Código: Seleccionar todo

[playlist]

Title1= 1. A traves del tiempo - 2x01
File1=plugin://plugin.video.pelisalacarta/?channel=hdfull&action=play_from_library&category=Series&title=2x01+-+El+expreso+de+la+luna+de+miel+%28+%5BCOLOR+teal%5D%5BB%5DESP+%5B%2FB%5D%5B%2FCOLOR%5D%29&url=http%3A%2F%2Fhdfull.tv%2Fserie%2Fquantum-leap%2Ftemporada-2%2Fepisodio-01%23%23%234703%3B3&thumbnail=&plot=&server=directo&Serie=A traves del tiempo&subtitle=&extra=
Length1=-1

Title2=2. A traves del tiempo - 2x01
File2=./A traves del tiempo/2x01.strm
Length2=-1

Entráis por "Vídeos->Archivos->NombreCarpetaSTRM" y buscáis y seleccionais el .pls e intentaís reproducir las dos entradas, primero la uno; parecerá que funciona pero no, no arranca el vídeo. después la dos; funcionará y reproducirá el vídeo, avanzamos un poco el vídeo y nos fijamos en los minutos:segundos de visionado y en la duración, visto los datos lo paráis. Y cuando regresa a la lista de las dos entradas dices o haces :o Qué coño a pasao :lol: el que ponía "1. A traves del tiempo - 2x01" a pasao a llamase igual que el segundo "2. A traves del tiempo - 2x01" y además le ha puesto la duración y la flechita de que nos falta vídeo por ver. Ahora pulsamos en la que antes era la "1. A tra..." que parecía que funcionaba pero no arrancaba el vídeo; ahora te pregunta si "Reanudar desde..." o "Comenzar desde el principio", seleccionáis cualquiera de las dos y reprodirá el vídeo desde dónde se paró o desde el principio dependiendo de lo elegido. Si lo dejás correr hasta el final os cambiará la flechita por el símbolo de visto :D

Si se meten las entradas por separado no pasará nada de todo eso :)

Estas cosas son las que más divierten y las que han hecho que me aficione a los ceros y unos :lol: :lol: :lol:

Re: Importación a biblioteca marcando vistos + otros temas

Publicado: 11 Dic 2015, 16:00
por Xavi
Gracias por vuestros comentarios.

Me he montado un Eclipse+PyDev tirando de github con el codigo del addon. Vaya curro hay en esto, me va a hacer falta un tiempo y unas cuantas sopas para digerirlo :D

Lo que comenta SeiTaN desde luego lo vería posible p.ej. metiendo en los strm los canales con separadores en algun extra del item o algo. Eso si, lo jodido y creo que es por donde iba robalo, sería tener uniformidad en series.xml para los nombres de las series, si es que se scrapean de la web del canal ya que más que probablemente cada uno mete lo que le sale del rábano. Aunque de algun modo logra Kodi unificarlo luego, debe hacer algun scraping para identificar titulo único/correcto/identificador. Luego al actualizar biblioteca ir generando los strm en memoria al ir pasando por los canales y escribirlos a disco una vez hayamos pasado por todos.

Me encanta verle las entrañas a un pedacito de software que uso a diario. Intentaré ir familiarizándome.

Re: Importación a biblioteca marcando vistos + otros temas

Publicado: 11 Dic 2015, 18:57
por super_berny
OFFTOPIC

@Xavi bienvenido a la lucha :lol:
Lo q vas a intentar no va a ser facil, si quieres un consejo empieza por algo mas sencillo mientras entiendes el funcionamiento de los diferentes modulos de pelisalacarta. Tal vez la reparacion de un canal o la creacion desde cero de un canal sencillo te ayude.

No olvides pasarte por la seccion de desarrolladores y preguntar todo lo q no entiendas.

Re: Importación a biblioteca marcando vistos + otros temas

Publicado: 12 Dic 2015, 08:53
por robalo
Kodi, si tienes configurado tvdb para las series, intenta conseguir los datos con la api de tvdb con el título de la serie o con una id de imdb que consigue con la ayuda de san google.

Esto es porqué puede ser toda una odisea conseguir los datos usando el título con la api de tvdb, aún así hay veces que no encuentra nada pero a falta de pan... :)

Todo esto se intuye viendo el xml en Kodi/addons/metadata.tvdb.com/tvdb.xml

Un ejemplo:
En la actualidad una búsqueda para la serie "12 Monos" falla con la api de tvdb
http://thetvdb.com/api/GetSeries.php?se ... anguage=es

Como falla se extrae el id de imdb
http://www.google.es/m?q=12+Monos+%22tv ... w.imdb.com
patron = "imdb....?/title/tt([0-9]*)" | "imdb....?/Title\?([0-9]*)"
ret = "3148266"
imdbid = "tt" + ret

Y ahora los datos si están en la bd de tvdb, claro está
http://thetvdb.com/api/GetSeriesByRemot ... anguage=es

Con los datos del último enlace ya podemos buscar la serie por la id de dvdb en bd de kodi y con ella localizar la temporada x + episodio x y marcalo como visto.

Para marcarlo como visto se puede hacer de dos formas; sql o jsonrpc

Re: Importación a biblioteca marcando vistos + otros temas

Publicado: 13 Dic 2015, 00:17
por robalo
Os dejo algo que lo que es funcionar funciona, no como a mi me gustaría y supongo que algunos tampoco se quedaría contento con esto.

El tema va en el xbmctools.py dentro del "if strmfile: #Si es un fichero strm no hace falta el play".

Lo que hace es esperar un poco sin que el vídeo pierda velocidad de arranque para poder comprobar si se esta viendo el vídeo y automáticamente despueste marca el vídeo como visto. No es lo mejor del mundo pero ya tenemos con que discutir :)

He mezclado un poco de todo para, scraper, sql y jsonrpc para crear motivación preguntandonos como sería si... :lol: A ver si sacamos algo en claro de todo esto

Ánimo valientes :lol:

Código: Seleccionar todo

    # Lanza el reproductor
    if strmfile: #Si es un fichero strm no hace falta el play
        logger.info("b6")
        import sys
        xbmcplugin.setResolvedUrl(int(sys.argv[ 1 ]),True,xlistitem)
        #if subtitle!="" and (opciones[seleccion].startswith("Ver") or opciones[seleccion].startswith("Watch")):
        #    logger.info("[xbmctools.py] Con subtitulos")
        #    setSubtitles()

        import time
        wait_video_break = 20
        wait_video = time.time()

        if (time.time() - wait_video) < 5:
            xbmc.sleep( (5 - int(time.time() - wait_video)) * 1000 )

        while not xbmc.Player().isPlaying():
            xbmc.sleep(10000)
            if (time.time() - wait_video) > wait_video_break: break

        if xbmc.Player().isPlaying():

            title = scrapertools.get_match(sys.argv[2],"Serie=([^&]+)&").replace("'","\\'")
            season = str(int(scrapertools.get_match(sys.argv[2],"title=.*?(\d+)[Xx]\d+.*?&")))
            episode = str(int(scrapertools.get_match(sys.argv[2],"title=.*?\d+[Xx](\d+).*?&")))

            imdbid = scrapertools.get_match(
                scrapertools.cache_page(
                    'http://www.google.es/search?q=' + title.replace(' ','+') + '+"tv+series"+site:www.imdb.com'
                ),
                "imdb..../title/tt([0-9]+)*"
            )
            tvdbid = scrapertools.get_match(
                scrapertools.cache_page(
                    'http://thetvdb.com/api/GetSeriesByRemoteID.php?imdbid=tt' + imdbid + '&language=es'
                ),
                "<seriesid>([^<]+)</seriesid>"
            )

            import os
            v_db = {'kodi-dharma':'37','kodi-eden':'60','kodi-frodo':'75','kodi-gotham':'78','kodi-helix':'90','kodi-isengard':'93'}
            _bd = xbmc.translatePath( os.path.join( "special://userdata/Database","MyVideos" + v_db[config.PLATFORM_NAME] + ".db" ) )

            import sqlite3
            conn = sqlite3.connect(_bd)
            c = conn.cursor()
            sql = """
                select idEpisode
                  from episode
                 where idShow in (
                       select idShow
                         from tvshow
                        where c12 = '%s'
                       )
                       and c12 = '%s'
                       and c13 = '%s'
            """ % (tvdbid,season,episode)

            c.execute(sql)
            episodeid = c.fetchone()

            c.close()

            setwatched = '{"jsonrpc": "2.0", "method": "VideoLibrary.SetEpisodeDetails", "params": {"episodeid" : %s, "playcount" : 1}, "id": 1}' % episodeid
Espero haber hecho bien el copy/paste :)

Re: Importación a biblioteca marcando vistos + otros temas

Publicado: 13 Dic 2015, 09:40
por robalo
Pues sí, me falta una línea.

Borré todas las líneas con "print" y me la llevé por delante :)

La línea que falta iría al final de copy/paste

Código: Seleccionar todo

            xbmc.executeJSONRPC(setwatched)

Re: Importación a biblioteca marcando vistos + otros temas

Publicado: 13 Dic 2015, 09:48
por robalo
Pues hay más, lo siento

Código: Seleccionar todo

        if (time.time() - wait_video) < 5:
            xbmc.sleep( (5 - int(time.time() - wait_video)) * 1000 )
ésto hay que moverlo debajo del "while" por si sale demasiado pronto :) ai.. que que pedazo de crack soy en el tema del copy/paste!! :lol: :lol: :lol: :lol: