Página 2 de 6

Re: Cambio de xml a json

Publicado: 14 Nov 2015, 20:21
por divadr
Bueno, el updater yo lo tenia montado en mi versión modificada, que tengo creada una herramienta llamada guitools para mostrar diálogos y otras opciones independientemente de la plataforma, así que he echo una adaptación rápida añadiendo guitools para no tener que modificarlo, solo se usa para mostrar los diálogos en el updater, y para probar ya sirve, funciona solo para la versión kodi clásica ya que solo lo he preparado para este por ahora, te explico el funcionamiento:

Cuando entras en el plugin busca las actualizaciones:
1 Busca actualizaciones para el plugin, si encuentra te pregunta para actualizar, si no encuentra sigue buscando actualizaciones para canales y servers.

2. El mecanismo para buscar los canales es comparando el SHA1 devuelto por github con el del fichero, si no coinciden lo descarga, si el fichero local no existe, lo descarga.

3. Dado que hay problemas con los saltos de línea entre unix/Windows y a veces los hashes no coinciden, calcula cuatro hashes diferentes para cada archivo con varias combinaciones de saltos de Lina (CRLF, LF, CR, etc...) y comprueba si coincide con alguno de ellos, si coincide con alguno lo da por bueno.

4. Para no tener que calcular el hash cada vez, ya que para sistemas lentos como el blusens, tarda un poco (en un pc no se nota), crea un índice, así las demás veces solo lo tiene que comparar con el índice. la única pega o ventaja según se mire, es que una vez calculado el índice, si modificas un archivo local para hacer alguna prueba, no se dará cuenta, ya que solo comprueba el índice y no lo sobrescribirá
El índice lo crea en la carpeta addon_data los archivos Canales.json y Servers.json y se borran los archivos los vuelve a crear

5. Al actualizar cualquier canal, el índice se regenera, volviendo a actualizar todos los hashes.

Todo esto lo hace en segundo plano, dejándote usar pelisalacarta mientras tanto.

Aquí lo tienes
https://drive.google.com/file/d/0ByPRdO ... sp=sharing

Tienes que sobrescribir los archivos dentro de la carpeta del plugin.

Re: Cambio de xml a json

Publicado: 14 Nov 2015, 21:15
por SeiTaN
Se nota que le has echado tiempo ;)

Re: Cambio de xml a json

Publicado: 15 Nov 2015, 07:52
por robalo
super_berny escribió::cry: :cry:
Nadie dice nada? Jesús, q te parece?
Róbalo? Venga animate q hecho de menos nuestros debates.
:lol: :lol:
Super_berny no he dicho nada por que es algo que me importa poco y no quiero que se mal interprete lo que pienso. Ya tienes bastantes opiniones.

Yo me mantengo al margen, para mi es todo lo mismo, me da igual como se quiera guardar y leer los datos.

Ahora bien, si se trata de gustos y poner lo que nos gusta a cada uno yo voto por "canalcfg.version", osea un .py. Descargar, importar y comparar.

Re: Cambio de xml a json

Publicado: 16 Nov 2015, 10:44
por jesus
divadr escribió: Se ha comentado de guardar las configuraciones de los canales en el JSON, pero eso implicaría que cuando se actualice el canal (JSON + PY) las configuraciones se perderían... o habría que pasarlas manualmente, y cuando se actualice el plugin mucho mas... yo veo bien que se guarden los ajustes de los canales en archivos independientes, pero en la carpeta donde están los ajustes, no en la del plugin...
Cuando tienes razón, tienes razón :)

Debemos tener dos ficheros, un animeflv.json junto al canal con los metadatos del canal, y otro (que podría ser animeflv.custom.json) con la configuración del usuario.

Así no se chafará al actualizar el plugin, y diferentes perfiles dentro del mismo Kodi podrán tener configuraciones distintas.
divadr escribió: Por el tema de la actualización de canales, yo ya tengo escrito un updater.py que comprueba mediante la api de github si algún archivo de la carpeta channels y servers se ha modificado o si hay alguno nuevo y lo descarga al entrar en el plugin, de forma bastante mas práctica que como se hace ahora... y al no tener que actualizar el channelselector es mucho mas fácil. y puesto que usa la api con una sola petición http recibe un JSON con el SHA1 de todos los canales, y te ahorras descargar muchos datos, Yo ya utilice este sistema en la versión que saque junto con supercopito para blusens, ya que para eso github es mas práctico que googlecode.
A mí me gusta más que la actualización sea intencionada, usando números de versión, y no cuando el archivo cambia. Lo que hay en Github no tiene por qué ser la versión buena.

Y lo de comprobar todas las actualizaciones al entrar al plugin tampoco me acaba de convencer. Cada uno podría tener una lista de canales completamente distinta, y no tiene sentido comprobar todo todas las veces.

Me parece más cómodo como está ahora, al entrar al canal se hace la comprobación.

Re: Cambio de xml a json

Publicado: 16 Nov 2015, 11:15
por super_berny
jesus escribió:Debemos tener dos ficheros, un animeflv.json junto al canal con los metadatos del canal, y otro (que podría ser animeflv.custom.json) con la configuración del usuario.

Así no se chafará al actualizar el plugin, y diferentes perfiles dentro del mismo Kodi podrán tener configuraciones distintas.
Yo discrepo (aviso q hoy estoy muy discrepante :lol: ), yo tb creo q debe ir en USERDATA, pero solo un fichero. No es problema leer las configuraciones, actualizar y volver a escribir las configuraciones en el nuevo fichero (lo comente mas arriba).

Habria q ir pensando tb q pasara cuando se actualice el plugin con los canales no oficiales, es decir aquellos q yo me haya creado para ir probando, o los q se actualizan desde otro repositorio (futura implementacion)
jesus escribió:Lo que hay en Github no tiene por qué ser la versión buena.
Aqui tb discrepo, lo que hay en la rama MASTER de Github deberia ser codigo bueno. Para ir haciendo pruebas y mergeando pull request q si querer podrian romper otras partes del codigo se deberia usar la rama DEVELOP (aunq los nombre son lo de menos, lo importante es el concepto de ramas)

Re: Cambio de xml a json

Publicado: 16 Nov 2015, 13:31
por divadr
A mí me gusta más que la actualización sea intencionada, usando números de versión, y no cuando el archivo cambia. Lo que hay en Github no tiene por qué ser la versión buena.
Y lo de comprobar todas las actualizaciones al entrar al plugin tampoco me acaba de convencer. Cada uno podría tener una lista de canales completamente distinta, y no tiene sentido comprobar todo todas las veces.
Me parece más cómodo como está ahora, al entrar al canal se hace la comprobación
La ventaja de comprobar al entrar al plugin es que si solo compruebas al entrar en el canal, los canales nuevos no se añadirían ya que no entrarías nunca, y si un canal no funciona lo normal es que no entras, y tampoco te enterarías que ya está arreglado.
Dado que con la api de gitgub con una sola petición recibes los SHA1 de todos los canales + XML/JSON no cuesta nada comprobarlos todos, realmente es rápido.
Y si a demás no quieres que se actualize solo porque cambie el .py pues con comprobar los SHA1 de los XML/JSON es suficiente, lo cual es todavía mas rápido porque son archivos mas pequeños, y si el XML/JSON ha cambiado entonces se descargan los archivos del canal nuevos.
Habria q ir pensando tb q pasara cuando se actualice el plugin con los canales no oficiales, es decir aquellos q yo me haya creado para ir probando, o los q se actualizan desde otro repositorio (futura implementacion)
Los archivos que no existen en el repositorio de github, con el updater, sencillamente no los toca, de manera que si tienes canales nuevos no les pasaría nada, y si se pone que solo comprueba el XML/JSON, si tu editas un .py tampoco pasaría nada.

Pensad que para el usuario normal, esto no es ningún problema, ya que no modifica ningún archivo...
Debemos tener dos ficheros, un animeflv.json junto al canal con los metadatos del canal, y otro (que podría ser animeflv.custom.json) con la configuración del usuario.

Así no se chafará al actualizar el plugin, y diferentes perfiles dentro del mismo Kodi podrán tener configuraciones distintas.
Totalmente de acuerdo, a demás, el JSON con los metadatos del canal tiene que ir por fuerza en la carpeta de plugin, junto al canal, y la configuración lo lógico es que vaya en la carpeta user_data, para que no se borre con las actualizaciones del plugin.
a demás, no veo la ventaja de meterlo todo en el mismo archivo.


Por otro lado, nadie ha hablado de como se guardara la configuración en esos archivos, es decir, si el canal quiere guardar algo para luego recuperarlo no hay problema, pero si se quiere abrir un menú de ajustes para los ajustes del canal donde el usuario pueda introducir datos, activar o desactivar opciones, etc... no se puede, a no ser que se cree una ventana con controles, etc... lo cual es un problema para hacer los canales compatibles con otras plataformas...

Yo pienso que hay que buscar soluciones que sean compatibles con las diversas plataformas en que funciona pelisalacarta, sino nos liaremos mucho.

Re: Cambio de xml a json

Publicado: 16 Nov 2015, 13:51
por super_berny
divadr escribió:Los archivos que no existen en el repositorio de github, con el updater, sencillamente no los toca, de manera que si tienes canales nuevos no les pasaría nada, y si se pone que solo comprueba el XML/JSON, si tu editas un .py tampoco pasaría nada.
No me refería a las actualizaciones automáticas de canales, sino a la actualización del plugin completa. Hasta ahora se descargaba el archivo según la plataforma y lo descomprimia directamente machacando todo lo q hubiese en la carpeta, incluidos canales no oficiales.
Piensa q una de las nuevas features será poder actualizar canales de repositorios no oficiales (tag url_update en XML)
divadr escribió:Por otro lado, nadie ha hablado de como se guardara la configuración en esos archivos, es decir, si el canal quiere guardar algo para luego recuperarlo no hay problema, pero si se quiere abrir un menú de ajustes para los ajustes del canal donde el usuario pueda introducir datos, activar o desactivar opciones, etc... no se puede, a no ser que se cree una ventana con controles, etc... lo cual es un problema para hacer los canales compatibles con otras plataformas...
Si ese es otro debate. Yo implemente algo parecido al setting.xml de kodi sobre itemslist.
Pero evidentemente sólo para kodi.
Creó q la solución es una librería propia para cada plataforma q se encarge de mostrar cuadros de diálogo, teclados, etc
..Vamos algo q pueda emular la librería xbmcgui. En html no sería problema, pero el resto no tengo ni idea.

Re: Cambio de xml a json

Publicado: 19 Nov 2015, 00:55
por super_berny
super_berny escribió:
jesus escribió:Debemos tener dos ficheros, un animeflv.json junto al canal con los metadatos del canal, y otro (que podría ser animeflv.custom.json) con la configuración del usuario.

Así no se chafará al actualizar el plugin, y diferentes perfiles dentro del mismo Kodi podrán tener configuraciones distintas.
Yo discrepo (aviso q hoy estoy muy discrepante :lol: ), yo tb creo q debe ir en USERDATA, pero solo un fichero.
Pues hoy discrepo hasta de mi mismo :lol: :lol: :lol:

He estado pensando y creo q teneis razon, han de ser dos archivos. El primero que ira en la carpeta channels junto al py correspondiente propongo q tenga este formato:

Código: Seleccionar todo

{
  "channel": {
    "active": true,
    "adult": true,
    "category": [
      "adult",
      "movie"
    ],
    "changes": "Update por cambios en la web",
    "date": "09/11/15",
    "fanart": "",
    "id": "pornhub",
    "include_in_global_search": false,
    "language": "es",
    "name": "Pornhub",
    "thumbnail": "http://s22.postimg.org/5lzcocfqp/pornhub_logo.jpg",
    "update_url": "",
    "version": "2.0"
  },
  "settings":{}
}
Podeis verlo mejor aqui

Si crees q falta algun campo decirlo que lo añado al script q tengo para pasar de xml a json.
En channeltools se incluye: channel_parameters["type"] = "generic" pero no lo he añadido por q no se realmente su utilidad, creo q es mejor la funcion isGeneric() del canal.
Los campos id y name segun como podrian considerarse redundante, pero no: id es el nombre interno del canal (el nombre del archivo py), mientras q name corresponde al campo title de Item (podria contener mayusculas, espacios, etc..)

Como veis se incluye un campo de tipo diccionario con el nombre settings. Estoy pensando en funcionar como lo hace Kodi, es decir aqui iria la descripcion de la ventana de settings de este canal (lo que en Kodi seria plugin.video.pelisalacarta\resources\settings.xml), mientras que los datos de configuracion propiamente dichos irian, como bien deciais, en otro archivo json en la carpeta de datos del usuario.

Re: Cambio de xml a json

Publicado: 19 Nov 2015, 12:51
por robalo
Por dios que follón para algo tan sencillo y funcional :lol: De intercambiar impresiones sobre el cambio de .xml a .json a otro archivo más para ¿Hacerlo más sencillo? Si quiero trajinar con un canal o bien hago una copia y conviven juntas para comparar las dos versiones o simplemente incremento el el número de la versión para que no me machaque lo que estoy haciendo. Se pueden tener canales personalizados sin que existan tanta complicación. Y para retomar el tema, que no me ha quedado muy claro ¿XML o JSON? ¿Al final que va a ser?

Re: Cambio de xml a json

Publicado: 19 Nov 2015, 13:02
por divadr
Vamos a ver... la idea es cambiar los xml actuales por json, ya que para trabajar con ellos es mas comodo....

Lo de crear un segundo archivo es porque a alguien se le ha ocurrido guardar los ajustes del los canales en el archivo json... pero los ajustes deven ir en la carpeta userdata por eso el tercer archivo...

Pero lo de los ajustes realmente es otro tema... yo la estructura de los archivos json la mantendria tal como esta ahora en los xml

Y los ajustes se gestionan desde el config.py si se guardan juntos o separados por canales lo deveria gestionar dicho modulo... no los canales para no tener problemas con las diferentes plataformas...