Igual que cuando se estropean los discos... ¿no?
Tienes razón en que los enlaces en "la nube" son efímeros y condenados a la horca. Pero, tal y como yo lo veo, para las cosas que se quiere coleccionar de verdad sí que hay que descargar (en HD, por supuesto) pero para cosas que simplemente "se quiere ver" (que es precisamente para lo que yo uso pelisalacarta) el tema de añadir "enlaces virtuales" a la biblioteca puede quedar muy cuco (sueno muy gay?).
La idea que tú tienes de usar scrappers para llevar la info al plugin me parece cazar moscas a cañonazos. Es como crear otra biblioteca paralela y específica para 1 plugin (aunque sea uno tan completo como este). A mí me parece que con el grado de calidad que tiene hoy en día la biblioteca de XBMC, habiendo scrappers de calidad y en castellano, y pensando en que es un elemento vivo que seguirá evolucionando... el mejor enfoque sería llevar los vídeos del plugin a la biblioteca, y no a la inversa.
En los scripts del plugin veo mucho (mucho) trabajo encaminado a manejar sinopsis, carátulas... Hasta he visto tu modificación al skin Rapier para mostrar la información almacenada. Fíjate en que parte de ese trabajo, aparte de ralentizar el uso del plugin, obliga a un mantenimiento adicional cuando cambian las páginas fuente. Es decir, no sólo hará falta actualizar cada canal cuando se altere como se almacenan los enlaces a los vídeos, sino también cuando cambie la estructura de la información adicional...
Además, y en un ámbito ya puramente de programación, me parece que estos datos "mezclan" el alcance de los módulos y deja menos transparente los límites de cada uno. Así, por ejemplo, podemos ver como rutinas de xbmctools (que parecería más encargado de labores técnicas) se vea obligado a manejar thumnails y plots... No sé, parece que todo se complica algo.
Aunque respeto tu linea de trabajo y nunca pretendería decirte como hacer las cosas, a mí me parece que estáis duplicando esfuerzos con los desarrolladores de scrappers y mantenedores de la biblioteca. En mi opinión los plugins deberían centrarse en obtener las fuentes de vídeo y dejar los metadatos a las partes correspondientes de XBMC.
Aunque claro, también entiendo que el plugin es mucho más amigable con carátulas y sinopsis. Y veo tu punto de querer scrapear con los medios de xbmc... La verdad es que es un tema peliagudo.
Puesto que hago una defensa bastante firme del uso de la biblioteca y sé que muchos usuarios de XBMC siguen anclados o simplemente prefieren el sistema de archivos tradicional, déjame recomendarles que le den una vuelta (o se la vuelvan a dar si lo probaron hace tiempo) a la biblioteca de XBMC. Si a alguien le parece interesante (porque no sabe bien como va) puedo hacer un pequeño tutorial de cómo sacarle buen partido. Como comienzo dejadme recomendar los 2 scrappers por defecto que yo uso: filmafinity para pelis y thetvdb para series. También, me gustaría (siempre si hay interesados) que abramos otro hilo donde comentar los pros y contras tal y como los percibe cada uno. En mi experiencia con los amigos a los que introduzco en el mundo de los Media Centers en general (y de XBMC en particular), con 5 minutos de ver como usar bien la biblioteca, se cambian a ella y no vuelven casi para nada a las carpetas...
Pero dejemos eso aquí, que este es el subforo de mejoras.
Te actualizo en los avances y problemas que voy encontrado.
La filosofía que estoy empleando (como te contaba en el anterior mensaje) es tratar de añadir funcionalidad sin que nada de lo que hay deje de funcionar y tratando de modificar el número mínimo de módulos y subrutinas dentro de éstos.
Esto, como podrás imaginar, me da muchos quebraderos de cabeza. Al principio para conocer como está montado todo y luego para buscar el mejor sitio donde tocar lo menos posible.
El objetivo último es que no haya que tocar ficheros del directorio canales. Así el trabajo realizado servirá para lo que los colaboradores estén haciendo nuevos canales actualmente.
Como te conté ayer, la idea "temporal" de la que partí es el uso de ficheros strm. Inicialmente lo hice porque era algo que conocía y pensaba que me podía servir para una primera aproximación. La idea sería sustituir eso luego con llamadas directas desde el plugin a módulos de la librería.
Pero según voy trabajando el tema el hacerlo con ficheros strm me gusta cada vez más. Esta aproximación me permite, por ejemplo que si añadí una película a mi biblioteca y quiero borrarla pues desde la propia biblioteca puedo borrar la entrada y el archivo...
El caso es que de momento seguiré con esta aproximación, aunque aceptando todas las ideas, por supuesto.
Ayer como te decía conseguí que un enlace tipo plugin:// sacado de añadir a favoritos (favoritos del XBMC, no de tu plugin) y puesto en un fichero strm funcionara. Tuve que hacer cambios a la rutina playvideoEx para conseguir que funcionara.
Un par de cambios (que no afectan a la funcionalidad existente, creo) fue añadir el parametro path a xbmcgui.ListItem y llamar a xbmcplugin.setResolvedUrl.
El otro cambio era ligeramente más profundo porque necesitaba un parámetro de entrada adicional para saber si la llamada viene de un fichero strm. Eso es necesario porque cuando la llamada al plugin viene mediante fichero strm no es necesario llamar a xbmcPlayer.play para iniciar el video. Lo inicia XBMC sólo.
Como no quería impactar en el resto del plugin (y añadir un parámetro puede afectar) he hecho que cualquier parámetro añadido tenga valores por defecto adecuados para que las llamadas del resto de canales sigan funcionando como lo hacían.
Hoy, con los ficheros strm manuales funcionando, me centré en añadir una opción al menú de play para crear archivos strm. Aunque he tenido problemillas y he tenido que cambiar el enfoque un par de veces, te resumo (si soy capaz de resumir

) los logros y como afectan al plugin en general.
Modificando playvideoEx he añadido la opción que llama para crear el archivo strm (Añadir a biblioteca).
He creado una librería nueva ("library.py") que se encarga de crear el archivo strm y (en el futuro) de todo lo relacionado con ella. Éste es, de momento, el único archivo nuevo.
Para que el plugin pudiera diferenciar cuando la ejecución venía de un fichero strm o una entrada normal al plugin, decidí crear una acción nueva: "strm".
De esta forma puedo interceptar en pelisalacarta.py y no es necesario modificar las acciones detail o play de los diversos canales (como te digo hice otras pruebas, pero esta resultó la menos intrusiva).
Por lo tanto el segundo fichero modificado es pelisalacarta.py donde añado un elif para la acción strm y llamo a la función adecuada para ejecutarlo. (actualmente la función está en uno de los canales, pero le buscaré mejor emplazamiento)
Ahora estoy en el proceso de ver si todos los canales funcionan. Ya he encontrado que alguno no iba bien (como seriesyonki) y he encontrado soluciones, temporales porque han implicado añadir la acción strm o modificar la detail en el fichero del canal (canal.py) y añadir un segundo parámetro a la función playvideoEx (para traer la url original de seriesyonkis que se perdía en el camino y es necesaria para crear el enlace plugin) Quiero mejorarlo y no tocar si es posible los canales.
El resumen de funcionalidad es:
Hay una nueva opción en el menú de play (donde se selecciona calidad, descarga, favorito, etc), que crea un fichero strm para ese vídeo en una carpeta (actualmente $pluginhome/library, pero habría que parametrizarlo en un futuro). Quizá sea otra opción la carpeta descargas. La razón (temporal) por la que no elegí esa fue que los enlaces strm no tienen sentido sin el plugin (no como las descargas que si se pueden ver sin el plugin) por lo que si la carpeta library está en el plugin, y borramos éste, pues borramos automáticamente todos los strm... Abierto a debate, por supuesto.
Una vez que tienes ficheros strm puedes ir a esa carpeta desde mis videos y fijar el contenido de la carpeta (a películas, por ejemplo). Cuando tengamos esto actualizamos la biblioteca (manual o automáticamente) y voila! Nuestra pelis en la biblioteca!!
Esto ya funciona. Te lo mando cuando quieras para que lo pruebes (aunque será necesario limpieza y documentación de código). Sólo dime dónde.
Próximos pasos...
1. Seguir probando canales y certificando que funcionen.
2. Distinguir dentro de la librería entre cine y series. Mi idea es añadir un nivel de subcarpetas desde el directorio donde almacenemos los strm.
3. Para las series hay que añadir un directorio adicional por serie. Mi primera idea es pedirlo al usuario (como el nombre del fichero) pero quiero dar propuestas automáticas. Ten presente que lo único importante al crear estos enlaces es que los scrappers sean capaces de encontrar la información. Por eso el objetivo final es automatizar el nombrado de series y capítulos de forma que los encuentren los scrappers y con intervención mínima.
4. Finalmente quiero proporcionar una opción para añadir todos los capítulos de una serie del tirón. Esto tendrá complicación adicional porque no hay ya un menú que salga cuando pulsas una serie (no como al pulsar una peli o un episodio, que si sale el menú de descargas). Entonces mis opciones son:
a) o bien añadir un paso cuando se selecciona una serie que de las opciones de "ver ahora" y "añadir toda la serie a la biblioteca" que añade un paso de lentitud y no me gusta,
b) o bien añadir una opción (como item del directorio) al entrar en la serie. Esta segunda me parece más práctica, aunque no es muy estética.
c) La tercera opción sería añadir una opción al menú contextual de la serie (el que aparece pulsando C). Esto ni siquiera sé si se puede hacer. A mí es la opción que más me gusta, pero supongo que a mucha gente no le molará (mucha gente ni tiene botón en el mando para esa opción).
También se puede hacer una combinación de b y c...
Este punto 4 debo decir que es la razón por la que empecé este trabajo. Las pelis tal y como está ya van a tirar. Para las series (por meter todos de un tirón) hace falta bastante más curro (y seguramente más modificaciones "profundas" al plugin). A mí me parece muy práctico añadir una serie entera a mi Librería y luego verla desde ahí. Tú, y los usuarios, tendréis que evaluar si las modificaciones os compensan el cambio que podrían requerir... pero cuando lleguemos ya veremos.
5. Buscar la forma de que no sea necesario añadir manualmente a la biblioteca los directorios de archivos strm (fijar el contenido). Este paso, puesto que sólo se hace una vez, lo veo un poco superfluo. Pero no sé, a lo mejor hay gente que lo agradece.
Con esto por el momento creo que tendríamos una funcionalidad bastante chula y bien integrada con la librería...
Dime cómo quieres que sigamos. Yo el trabajo lo voy a hacer, aunque fuera sólo para mi. Me compensa
Un saludo,
Jur.
PD. Perdona el megarollazo, pero también esto me sirve a mí de log de lo que he tocado.