Página 1 de 6

Biblioteca multi-web

Publicado: 27 Sep 2016, 10:19
por Lortropic
Hola, me comentaron que ya se estaba trabajando en ello, pero quisiera dejar mi visión por si puede ayudar.

En la actualidad una serie se guarda con el formato:
SERIES/nombre [web]

Lo cual provoca que múltiples web dupliquen enlaces en la biblioteca de Kodi. Además, es muy engorroso cambiar una serie de web (por si desaparece, etc).

La versión anterior era bastante más simple de cambiar de web, ya que tenía solo la carpeta:
SERIES/nombre

Por lo que Kodi no se liaba. En el antiguo series.xml cambiaba la URL de la serie a otro lugar y listo. Eso es más o menos fácil de editar en local, solo tengo que quitarle el nombre de la web a la carpeta que se genera y ya tenemos una versión que replica esto (pero es mono-web, aunque de fácil intercambio).

Ahora bien, lo suyo sería poder tener un sistema multi-web. Es más, estoy convencido que hace unas pocas versiones (tal vez la primera 4.0?) había una ventana que tenía una estructura de árbol que mostraba "Serie" y las webs en las que tenías esa serie.

Mi idea es que la carpeta en el disco sea la misma:
SERIES/nombre (por lo que Kodi no se liará)

Pero cuando le des a un episodio, en vez de hacer un simple "findVideos" de un server, se gestione de alguna forma el tener N webs para un server. Posibilidades:
1) Que salga un primer menú que te diga las webs que tienes añadida la serie (si hay más de 1, si solo hay 1 se va directo al siguiente paso), selecciones una y entonces te muestre los enlaces de esa web (el output actual)
2) Que se genenere el mismo output de ahora pero mezclando todos los outputs e los N servers editando el nombre del enlace para saber de donde proviene:
[web1] link1
[web1] link2
[web1] link3
[web2] link1
[web3] link1
[web3] link2

Son los 2 que se me ocurren, aunque mi preferido es el 1.

Con el menú de 1 se podrían generar algunos problemas de webs que no tengan el mismo contenido. Si "web1" tiene el episodio 1 y "web2" tiene el 1 y 2, en v1 sería pasable que en el menú se mostraran los 2 sitios y al darle a web1 dijera que no hay enlaces. Auque bueno, supongo que en el scrape se podría ir marcando en cada json que se genera ahora en que servidor ha encontrado el episodio: el primero crea el archivo JSON, el segundo se añade como servidor válido.

Los strm/json siempre se generan a todo lo que puedan: al hacer la pasada por web1 se genera el 1x01.strm/json y después al hacer el web2 se genera el 1x01.strm/json y 1x02.strm/json. Supongo que el .strm sería el mismo lo genere quien lo genere y apuntará a algo interno de "pelisalacarta" que será el library launcher (por poner un nombre) y este sería el que leería el .json del episodio para saber donde puede encontrarlo. Imagino que no sería mucho más complicado que cambiar los .json que hay ahora y cambiar la info de la web donde lo puede encontrar por un array de webs.

Re: Biblioteca multi-web

Publicado: 27 Sep 2016, 18:36
por super_berny
Q tal te llevas con github? https://github.com/superberny70/pelisal ... wnl_divadr

Te paso algunas capturas:

Imagen
Serie The Flash Temporada 1 Episodio 2 desde la biblioteca de Kodi. Fijate q aunq hay 2 canales añadidos, en el listado de capitulos (en sombra) no se repiten las entradas.

Imagen
Lo mismo pero esta vez desde el nuevo canal Biblioteca de Pelisalacarta (evidentemente en kodi, pero facilmente portable a otras plataformas)

Re: Biblioteca multi-web

Publicado: 27 Sep 2016, 22:27
por Lortropic
Eso :D
Está de puta madre. Lo estoy probando y por ahora bien.

Si tira bien, no tardes en mergearlo, que entre en la próxima versión!

Tal vez le de un vistazo para ver si puedo conseguir lo que he descrito en el punto 1. Podría ser tal vez algo opcional/configurable: trabajar en modo fusionado o en modo selección de server. Ya veo que se carga N jsons:

for nom_canal, json_path in list_canales.items():
# TODO lo siguiente podriamos hacerlo multihilo

Por lo que supongo que, muy por encima, aquí se podría generar una acción que listara los "nom_canal" y al seleccionar uno ya hiciera el findVideos de este (si solo hay un canal, retornar directamente el findVideos). El principal motivo es evitar listas muy grandes para ir a una web concreta (he puesto Mr Robot y hay decenas de enlaces en cada web). Así que estaría bien poder escoger un modo funsión (lo de ahora) o un modo separado "seriesblanco" -> "los enlaces".

Re: Biblioteca multi-web

Publicado: 27 Sep 2016, 23:23
por Lortropic
He probado a realizar una v0 para ver si era factible, y si:
Imagen

Imagen

Lo he realizado muy rápido y guarro (ya ves el tiempo que ha pasado desde el anterior mensaje, y me he puesto más tarde a mirarlo :lol: ).

He visto que la "magia" de la librería se realiza en: play_from_library, el problema es que está muy encorsetado. He realizado que itere mientras "action" != play para poder pasarle info en action y channel, así puede ir llamando a channel.action(item) mientras item.action != "play" y se puede ir iterando en menús (o no, lo que se quiera)

Re: Biblioteca multi-web

Publicado: 28 Sep 2016, 06:41
por super_berny
Lortropic escribió:Si tira bien, no tardes en mergearlo, que entre en la próxima versión!
:lol: :lol: No corras tanto!!! Solo hace falta darse una vuelta por el foro para ver la cantidad de mensajes del tipo: "no me actualiza la biblioteca", "no funciona la libreria" o "¿parar q tocais nada si antes iba bien?" ;)
Antes de mergear algo, quiero estar seguro de no liarla mas, por eso mi intencion es sacar una beta para q la gente se anime a probarla y reporte fallos.
Lortropic escribió:...El principal motivo es evitar listas muy grandes para ir a una web concreta...
La razon por la q no lo hice asi fue para ahorrar un cuadro de seleccion (un click o paso intermedio) Piensa q normalmente vas a tener como mucho un par de webs (mas ralentizaria inecesariamente las actualizaciones) y con el cuadro de seleccion "canal: enlace" es rapido buscar los enlaces de una determinada web.
Lortropic escribió:Podría ser tal vez algo opcional/configurable: trabajar en modo fusionado o en modo selección de server
Si es algo configurable me parece bien, aunq la opcion por defecto sera fusionado ;) .
Es facil: Antes de

Código: Seleccionar todo

for nom_canal, json_path in list_canales.items():
debemos comprobar q hay mas de un canal (len(list_canales)) y q la configuracion sea "modo seleccion de server" (mejor canales q servers) en cuyo caso abrimos el cuadro de seleccion con las opciones disponibles (list_canales.keys()) y guardamos lo devuelto en filtro_canal, por ejemplo.
Despues, ya dentro del for comprobamos si filtro_canal tiene algo y en cuyo caso si filtro_canal !=nom_canal saltamos a la siguiente iteraccion del bucle (continue)

Donde me pierdo es en tu explicación de la "magia" :D

Re: Biblioteca multi-web

Publicado: 28 Sep 2016, 08:57
por Lortropic
super_berny escribió:
Lortropic escribió:Donde me pierdo es en tu explicación de la "magia" :D
:lol:
Es que el primer intento que he realizado he visto que todo lo que retornaba hacía siempre este camino:
findvideos(): Aquí al cambiarlo he hecho que retorne los canales (los 2 items de la primera imagen) y poniendole "item.action = un método"

Sin embargo seguidamente siempre hace "play()", por lo que he visto que la reproducción de la biblioteca se hace desde ese método y está hardcoded lo que hace, siempre hace un findvideos() y seguidamente un "play" de lo seleccionado (que en este caso lo que había seleccionado es un canal, no un item reproducible). El cambio que he realizado para probar es que "mientras action != play" ves llamando a channel.action(item) (más o menos como hace en los canales normales)

Aun así te informo de que tu versión, al menos en Kodi para Ubuntu, me ha ido mejor que la que hay ahora oficial.

La versión que hay ahora se supone que al añadir una serie aparece automáticamente en la biblioteca, pero a mi no me ocurre. Tampoco me aparecen los nuevos episodios (pelialacarta hace el update de los strm pero después no me hace, o no me hace bine, el actualizar colección). Esta versión diría que si me ha funcionado OK (aunque lo probaré más en otro momento).

Re: Biblioteca multi-web

Publicado: 28 Sep 2016, 09:20
por SeiTaN
Lo de hardcoded, "findvideos", "play" es como está creado el addon, si un canal no tiene esos métodos, se buscan en el conector correspondiente, y lleva así mucho tiempo, por eso está puesto a pelo.
El método "episodios" se llama para hacer el update de episodios de un canal, habrá que ver por que no te va la actualización, aparte que se movió el método de actualización de episodios (creo que eras tú el tenía un cron para ejecutarlo) de "ayuda" a "configuración", ya que para la próxima versión puede que no te funcione (no recuerdo si la rama de superberny está mergeada con el codigo del master/develop para incluir los ultimos cambios).

Re: Biblioteca multi-web

Publicado: 28 Sep 2016, 09:51
por Lortropic
Si, yo lo tengo en el cron y ya sufrí lo de que cambió de ayuda a configuración :lol:

Pero ya tengo este cron puesto:

Código: Seleccionar todo

0 9 * * * kodi-send --action='RunScript("plugin.video.pelisalacarta", "5", "?channel=configuracion&action=updatebiblio")'
Curiosamente este no me va bien:

Código: Seleccionar todo

# 0 9 * * * curl --data-binary '{ "jsonrpc": "2.0", "method": "Addons.ExecuteAddon", "id": "cron_update_pelisalacarta_library", "params": {"addonid": "plugin.video.pelisalacarta", "params": { "action": "updatebiblio", "channel": "configuracion" }}}' -H 'Content-Type: application/json;' http://localhost:8080/jsonrpc
Este me abre ventanas, cuando el primero es completamente transparente: el primero no se ve nada en pantalla, el segundo me cambia la ventana.

Aun así por mi no os preocupeis en la actualización. Hay unos cuantos posts en el foro "Problemas" quejándose de esto mismo. Yo lo tengo solucionado con:

Código: Seleccionar todo

15 9 * * * curl --data-binary '{ "jsonrpc": "2.0", "method": "VideoLibrary.Scan", "id": "cron_update_video_library"}' -H 'Content-Type: application/json;' http://localhost:80/jsonrpc
15 minutos más tarde actualizo la librería y listo :lol:

Re: Biblioteca multi-web

Publicado: 28 Sep 2016, 18:09
por super_berny
A peticion de Lortropic:
Añadido nuevo parametro a la configuracion del addon (Otros-Biblioteca): “Mostrar cuadro de seleción de canales”. Si esta activo presenta un cuadro de seleccion en le caso de que haya 2 o mas canales para una serie.

https://github.com/superberny70/pelisal ... wnl_divadr
(no recuerdo si la rama de superberny está mergeada con el codigo del master/develop para incluir los ultimos cambios).
Si, esta mergeado con la rama develop de Jesus. Es decir incluye los ultimos cambios añadidos al github oficial

Re: Biblioteca multi-web

Publicado: 28 Sep 2016, 19:19
por Lortropic
Ostras, acababa de añadirlo: <setting id="multichannel_behavior" type="labelenum" label="Funcionamiento multicanal" values="Mezclar|Separar" default="Mezclar"/>

:lol:

Veo que has simplificado mucho lo que yo he realizado :lol: pos nada, me pillo el tuyo :lol:

Creo que este finde lo meteré en la raspberry y moveré las series a este nuevo modelo de biblioteca.