Página 1 de 12

Actualizaciones automaticas y channelselector dinamico

Publicado: 27 Nov 2015, 22:39
por super_berny
Bueno pues llevo dias trabajando en esto, pero al fin tengo algo q compartir. En primer lugar deciros q hay muchas cosas q se pueden mejorar aun, pero creo q podria ser una buena base sobre la q continuar.
Como prerequisito es necesario q tanto los canales remotos como locales hayan hecho el cambio desde los archivos xml a json para q todo funcione correctamente.
Como siempre envio esta modificacion como una pull request al repositorio oficial.

Cambios introducidos
  • Se ha añadido una nueva ficha en la configuracion para reunir todo lo relacionado con las actualizaciones. Las opciones disponibles son:
    • Actualizar la biblioteca al abrir XBMC: Esta opcion ya la conoceis, permite actualizar la biblioteca automaticamente.
    • Actualizar Pelisalacarta automaticamente: Activa o desactiva la busqueda de nuevas versiones del plugin al entrar.
    • Actualizar automaticamente canales: Permite elegir cuando se buscaran nuevas versiones de los canales. Las opciones son: Nunca, Al Inicio (actualiza, en segundo plano, todos los canales al iniciar el plugin) o Al entrar en el canal (como se hacia hasta ahora).
    • Añadir nuevos canales automaticamente: Activa o desactiva la busqueda de nuevos canales en el repositorio oficial.
    • Canales eliminados del repositorio oficial: Permite elegir que hacer cuando tenemos instalado un canal oficial que no aparece en el repositorio oficial. Las opciones son: Mostrar (en el listado de canales), Ocultar (marca el canal como desactivado, pero no lo borra) y Eliminar (borra el canal y su archivo json asociado de nuestro dispositivo)
    • Buscar actualizaciones de canales no oficiales: Se introduce la posibilidad de fijar, en el archivo json, un repositorio alternativo ('update_url') desde el q actualizar los canales. Estos canales son los definidos como no oficiales. Las opciones disponibles son: Nunca y Como los oficiales (creo q sobran las explicaciones :D )
  • Ahora el listado de canales es dinamico. Es decir no es necesario añadir nada en el channelselector.py para q nuestro canal aparezca en el listado. Para hacer esto se utiliza un indice de canales q se crea automaticamente si no existe en: ..\userdata\addon_data\plugin.video.pelisalacarta\list_channels.json ¿Como instalar un nuevo canal descargado del foro, por ejemplo? Muy facil, basta añadirlo en la carpeta ..\addons\plugin.video.pelisalacarta\channels y eliminar el archivo list_channels.json. Al volver a entrar en Pelisalacarta se volvera a crear y nuetro canal ya esta disponible.
Ficheros modificados
  • default.py: Gracias a divadr, del q cada dia aprendo algo nuevo, he consegido lanzar una llamada a una funcion (launcher.start) solo una vez, al iniciar el plugin.
  • core/channeltools.py: Nuevo archivo. La idea seria añadir aqui todo lo relacionado con la gestion de los canales. Por ejemplo: Leer sus propiedades (canal.json), comprobar actualizaciones, descargarlo, crear y actualizar el indice de canales, etc...
  • platformcode/guitools.py: Nuevo archivo. Su funcion seria adaptar la libreria xbmcgui a cada una de las plataformas. En este caso podria parecer un poco inutil al tratarse de Kodi, pero la idea es hacer el resto del codigo lo mas neutral posible.
  • launcher.py, updater.py, jsontools.py, settings.xml y channelselector.py : Los cambios necesarios para q todo (o eso espero :lol: ) funcione. A algunos de estos archivos aun se les podria pasar un poco la escoba para hacer limpieza, pero eso lo dejo para mas adelante.

Re: Actualizaciones automaticas y channelselector dinamico

Publicado: 27 Nov 2015, 23:01
por SeiTaN
Parece que el enlace no apunta a nada. Según comentas en settings (no he podido ver el codigo), ya no aparecería mi opción de filtro por servidor :cry:

Re: Actualizaciones automaticas y channelselector dinamico

Publicado: 27 Nov 2015, 23:13
por super_berny
SeiTaN escribió:Parece que el enlace no apunta a nada. Según comentas en settings (no he podido ver el codigo), ya no aparecería mi opción de filtro por servidor :cry:
Te refieres a las listas blancas y listas negras?
Si es asi, aun estan yo no he tocado nada de eso ( o al menos concientemente ;) )

PD: Estaba editando el enlace por eso no apuntaba a nada :lol:
PD2: Tengo otra sorpresa para ti. Pero deberas esperar un poco. Hasta q todo esto no este mergeado no puedo seguir subiendo cosas por q al final sera un lio de coj...

Re: Actualizaciones automaticas y channelselector dinamico

Publicado: 27 Nov 2015, 23:23
por SeiTaN
super_berny escribió:
SeiTaN escribió:Parece que el enlace no apunta a nada. Según comentas en settings (no he podido ver el codigo), ya no aparecería mi opción de filtro por servidor :cry:
Te refieres a las listas blancas y listas negras?
Si es asi, aun estan yo no he tocado nada de eso ( o al menos concientemente ;) )

PD: Estaba editando el enlace por eso no apuntaba a nada :lol:
PD2: Tengo otra sorpresa para ti. Pero deberas esperar un poco. Hasta q todo esto no este mergeado no puedo seguir subiendo cosas por q al final sera un lio de coj...
A ver esa sorpresa... si me dices de hacer un menu settings sencillo para mi filtro de enlaces me das un alegron :mrgreen: asi se solucionaría mucho del problema de la navegación.

Re: Actualizaciones automaticas y channelselector dinamico

Publicado: 04 Dic 2015, 16:18
por super_berny
Una semana despues de su publicacion nadie ha comentado nada? :cry:
¿Nadie lo ha probado? ¿Nadie ha mirado el codigo? ¿Nadie tiene ideas, quejas o sugerencias?
¿Nadie?

Re: Actualizaciones automaticas y channelselector dinamico

Publicado: 04 Dic 2015, 18:46
por SeiTaN
Algunas cosas las entiendo pero me falta nivel para comentar :oops:

Re: Actualizaciones automaticas y channelselector dinamico

Publicado: 07 Dic 2015, 12:27
por jesus
super_berny escribió:Una semana despues de su publicacion nadie ha comentado nada? :cry:
¿Nadie lo ha probado? ¿Nadie ha mirado el codigo? ¿Nadie tiene ideas, quejas o sugerencias?
¿Nadie?
Ja ja ja

Algunas veces me gustaría disponer del tiempo libre necesario para estar más en la brecha, os envidio :)

Acabo de hacer el merge, voy a empezar a probarlo ya que el cambio es muy grande. Hay cosas que me gustan y cosas que no me convencen... pero creo que lo mejor es ir ajustando y comentando los cambios y los motivos por aquí.

Re: Actualizaciones automaticas y channelselector dinamico

Publicado: 07 Dic 2015, 12:30
por super_berny
Gracias Jesus.

Dime q es lo q no te convence e intentaremos solucionarlo: o te convenzo o lo cambio asi de facil :lol: :lol: :lol:

Re: Actualizaciones automaticas y channelselector dinamico

Publicado: 07 Dic 2015, 18:12
por SeiTaN
Para esto vendría bien una rama de desarrollo aparte del "master" (estable), así por ejemplo se podría tener el plugin instalado dos veces para probar sin tener que modificar manualmente el fichero de addon.xml

Re: Actualizaciones automaticas y channelselector dinamico

Publicado: 07 Dic 2015, 18:33
por jesus
He tenido que hacer un revert, no me funcionaba por el fallo en json_tools que comento en github.

Lo he probado en mi ordenador (Mac) con Kodi 15 y 16 así que se me escapa lo que significa, parece una sintaxis no soportada pero no la conozco.

Código: Seleccionar todo

18:06:15 T:4650471424   ERROR: EXCEPTION Thrown (PythonToCppException) : -->Python callback/script returned the following error<--
                                             - NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS!
                                            Error Type: <type 'exceptions.SyntaxError'>
                                            Error Contents: ('invalid syntax', ('/Users/jesus/Library/Application Support/Kodi/addons/plugin.video.pelisalacarta/core/jsontools.py', 19, 52, '            return {to_utf8(key): to_utf8(value) for key, value in dct.iteritems()}\n'))
                                            Traceback (most recent call last):
                                              File "/Users/jesus/Library/Application Support/Kodi/addons/plugin.video.pelisalacarta/default.py", line 25, in <module>
                                                from platformcode import launcher
                                              File "/Users/jesus/Library/Application Support/Kodi/addons/plugin.video.pelisalacarta/platformcode/launcher.py", line 14, in <module>
                                                from core import channeltools
                                              File "/Users/jesus/Library/Application Support/Kodi/addons/plugin.video.pelisalacarta/core/channeltools.py", line 16, in <module>
                                                from core import jsontools
                                            SyntaxError: ('invalid syntax', ('/Users/jesus/Library/Application Support/Kodi/addons/plugin.video.pelisalacarta/core/jsontools.py', 19, 52, '            return {to_utf8(key): to_utf8(value) for key, value in dct.iteritems()}\n'))
                                            -->End of Python script error report<--
Espero que eso no te desanime, el cambio tiene muy buena pinta je je je

Me gustaría poder haberlo probado con calma, ya que sólo leyendo el código puede que no haya entendido bien algo, pero los puntos que me gustaría revisar con calma son:

- Actualizaciones automáticas: Siempre tengo pesadillas con el updater después de una actualización, y lo has cambiado de arriba a abajo :(
- Actualización de canales: La URL entiendo que debería ir en el json, no en el código. Que cada canal tenga la suya.
- Canales oficiales - no oficiales: Me parece complicado de explicar a los usuarios que no andan instalando canales externos (la gran mayoría)
- Fichero json de canales: ¿Es necesario? ¿Tanto penaliza el rendimiento leer todos los json cada vez que entras?
- Categorias: Deberían salir de los json, no ser una lista fija. Si no tengo canales de Anime, que no salga esa categoría.

Y cosas que no me quedan claras solo leyendo el código:

- ¿Cómo hacemos para quitar un canal que no existe? Yo había pensado dejar en el json una marca de "borrado" de forma que pudiéramos marcar en Github el canal como borrado, hacer un update y que desapareciera.
- ¿Qué pasa si un usuario deja solo un par de canales en el channelselector? ¿Cada vez que actualice el plugin volverán a salir todos?

De todas formas creo que voy a preparar de una vez esa actualización a la nueva versión del plugin, y este pull entrará ya para la próxima o no me dará tiempo a hacerlo este puente.