Página 7 de 12

Re: Actualizaciones automaticas y channelselector dinamico

Publicado: 13 Dic 2015, 22:50
por SeiTaN
Imagen

texto duplicado, he downgreado dos canales, he borrado 2 servers y he modificado otro server (total de 5 como sale)

Al actualizar el primer elemento (server)
Imagen
22:50:21 T:18252 ERROR: EXCEPTION Thrown (PythonToCppException) : -->Python callback/script returned the following error<--
- NOTE: IGNORING THIS CAN LEAD TO MEMORY LEAKS!
Error Type: <type 'exceptions.KeyError'>
Error Contents: 'data'
Traceback (most recent call last):
File "C:\Users\SeiTaN\AppData\Roaming\Kodi\addons\plugin.video.pelisalacarta\default.py", line 27, in <module>
launcher.run()
File "C:\Users\SeiTaN\AppData\Roaming\Kodi\addons\plugin.video.pelisalacarta\platformcode\launcher.py", line 336, in run
exec "itemlist = channel."+action+"(item)"
File "<string>", line 1, in <module>
File "C:\Users\SeiTaN\AppData\Roaming\Kodi\addons\plugin.video.pelisalacarta\core\updater.py", line 94, in download
info = "Version: " + update["data"]["channel"]["version"] + "\n"
KeyError: 'data'
-->End of Python script error report<--

Re: Actualizaciones automaticas y channelselector dinamico

Publicado: 13 Dic 2015, 23:35
por robalo
yo si tengo los json pero los que cree yo pero no tienen '"settings": {}' que no se para que lo quiero. Pero vamos debería dar igual. El channels.json lo crea con todos los canales + su sha

Tambien se me crean servers.json y updates.json

Lo he estado probando y he tenido que cambiar en la línea 368 del updater por que me daba error, la he dejado así:

Código: Seleccionar todo

        JSONFileData["json"] = json.loads(FileData.decode("iso-8859-1").encode("utf-8"))
Con eso ha entrado sin problemas.

Lo he probado sobre W7. Los fichero channels.json, servers.json y updates.json que se crean son PC-ANSI y los .json de los canales tambien son PC-ANSI.

Lo que no me gusta es que cada vez que entro al menú principal retrociendo dentro del plugin (no entrando al plugin) siempre me pregunta si quiero actualizar y se ejecuta el updater.

La creación de los .json me tarda de 9.0 a 9.6 segundos más o menos en un pc bastante apañao, si tengo tiempo lo pruebo en una rasp1 y una rasp2.

Evidentemente a mi todos los canales me salen [Actualizado] por lo del '"settings": {}' en los .json y también me ha parecido ver la versión con el formato "x.x". Los nuevos también me los anuncias y los server.

Si se te ocurre que puedo tocar para ver si se rompa, no dudes en decirmelo, aún estás a tiempo :)

Como siempre, muchas gracias

Re: Actualizaciones automaticas y channelselector dinamico

Publicado: 13 Dic 2015, 23:55
por divadr
Respecto a los .json yo los saque de github, lo del los '"settings": {}' en el .json, yo tampoco le veo mucho sentido (yo lo quitaría) porque los settings ahí no tiene sentido.


Seguro que hay errores, es solo una prueba.
Lo he estado probando y he tenido que cambiar en la línea 368 del updater por que me daba error
No acabo de entender porque... seguramente si usas otros .json ahí estará la diferencia, ya que en esa línea se carga el contenido del .json, a mi no me da ningún fallo ahí

Da error al actualizar los servers, porque intenta mostrar la versión y los cambios, y lógicamente los servers no tienen esa información, pero no se si lo lógico seria crear unos .json también para los servers o que....

Código: Seleccionar todo

Lo que no me gusta es que cada vez que entro al menú principal retrociendo dentro del plugin (no entrando al plugin) siempre me pregunta si quiero actualizar y se ejecuta el updater.
Eso es porque se lanza la actualización al entrar en el menú principal, es como venia por defecto, y no lo he tocado, pero se como hacer que solo salga cuando entras desde el inicio, eso se podría cambiar.

Código: Seleccionar todo

La creación de los .json me tarda de 9.0 a 9.6 segundos más o menos en un pc bastante apañao, si tengo tiempo lo pruebo en una rasp1 y una rasp2.
Si te refieres a crear el updates.json
Es lo que tarda en descargar de github los .json de los canales, son muchos archivos y tarda un poco, por eso he creado el updates.json, que no es mas que un "cache" donde guarda los datos, para que una vez descargado, si vuelves a entrar, no lo vuelva a descargar
Seria mas rápido si no los descargamos, pero entonces no tendríamos la información de la versión y los cambios, ya que eso se encuentra en esos ficheros.
El tiempo de descarga varia en función de la cantidad de actualizaciones, si solo son 3 o 4 tarda muy poco...

Re: Actualizaciones automaticas y channelselector dinamico

Publicado: 14 Dic 2015, 00:14
por robalo
Sí, tienes razón con los tiempos lo he hecho unas cuantas veces más y ha bajado bastante entre 5s y 6s, pero si es por el github creo que se debería contemplar tanto los mínimos como los máximos, en un pc no podrá tener mucha importancia pero en la rasp1 si que la tiene, de todas formas saldremos de dudas pronto o eso espero :)

Estos tiempos son sobre la posibilidad de 140 actualizaciones

Si puedo mañana miro porque sale hace el update en el retroceso al menú principal y así te puedes dedicar a cosas más serias :)

Los del error es por la codificación, o eso creo, mañana lo recreo y pegaré el error que se me pasó copiarlo. Aunque pueda ser un caso particarlar por a saber qué; SO o lo que sea, también creo que se debería contemplar.

Re: Actualizaciones automaticas y channelselector dinamico

Publicado: 14 Dic 2015, 00:20
por super_berny
Hoy no podre probar nada pero lo q leo me gusta.
En primer lugar por q veo a @robalo interesado, y sinceramente despues de leer algunos de sus ultimos mensajes pense q nos iba a dejar solos en esto :P
divadr escribió:Respecto a los .json yo los saque de github, lo del los '"settings": {}' en el .json, yo tampoco le veo mucho sentido (yo lo quitaría) porque los settings ahí no tiene sentido.
No me los quiteis porfa!!! :cry: :cry: Se supone q ahi ira la configuracion del menu de opciones del canal. Si, ya se q no lo acabais de ver, pero dejarme algo de tiempo, de todos modos no os molesta ¿no?
divadr escribió:Eso es porque se lanza la actualización al entrar en el menú principal, es como venia por defecto, y no lo he tocado, pero se como hacer que solo salga cuando entras desde el inicio, eso se podría cambiar.
Mirar mi propuesta q se lanza la actualizacion solo cuando entras en el plugin.
robalo escribió: La creación de los .json me tarda de 9.0 a 9.6 segundos más o menos en un pc bastante apañao, si tengo tiempo lo pruebo en una rasp1 y una rasp2.
No he podido mirar el codigo aun, pero ¿has utilizado multihilo?

Re: Actualizaciones automaticas y channelselector dinamico

Publicado: 14 Dic 2015, 00:27
por SeiTaN
Antes de irme a sobar... yo permitiría que busque actualización al entrar en el plugin y permitir configurar un "timer" y que busque cada "X" tiempo.

divadr no te lo he dicho antes pero se ve que le has dedicado amor y horas, enhorabuena.

Buenas noches!

Re: Actualizaciones automaticas y channelselector dinamico

Publicado: 14 Dic 2015, 00:29
por divadr

No me los quiteis porfa!!!   Se supone q ahi ira la configuracion del menu de opciones del canal. Si, ya se q no lo acabais de ver, pero dejarme algo de tiempo, de todos modos no os molesta ¿no?
No. Yo no voy a quitar nada... a mi no me molesta

Re: Actualizaciones automaticas y channelselector dinamico

Publicado: 14 Dic 2015, 00:57
por Cmos
Pinta muy bien divadr, para ser una primera versión parece ya muy completa, enorme curro que te has pegado. A ver si mañana puedo probarla y también doy mis impresiones, aunque mejores beta testers que los que ya lo han probado difícil :D

Por cierto, creo que no se ha comentado por el hilo, pero me preguntaba si no se debería añadir algún campo en los json para que un canal se incluyera o no dentro de la actualización. Lo digo porque a veces se crea o modifica un canal o servidor que lleva consigo un cambio en una librería o la implementación de una nueva que no se añadiría hasta la siguiente versión por lo que el canal/servidor no sería funcional hasta entonces. Sé que no lo más común, pero puede darse el caso...

Re: Actualizaciones automaticas y channelselector dinamico

Publicado: 14 Dic 2015, 16:12
por robalo
Ahora como está y sin tocar nada, te ofrece la opción de elegir que actualizas o añades si es nuevo.

Aunque no se si es un error de copy paste pela la opción 2 en UpdateMode suena más a la opción 3
divadr escribió:Busca actualizaciones al entrar al plugin y actúa según la configuración (Actualmente se cambia editando unas variables al principio del .py, falta ponerlo al settings)

1. Auto, Descarga las actualizaciones sin preguntar nada
2. Preguntar, Te pregunta si quieres descargarlas, pero no te da opciones de elegir cual
3. Elegir, Te avisa que hay actualizaciones y tienes que ir al menú "Actualizaciones" para gestionar que quieres descargar.
Trajín:
La lista del menú "Actualizaciones", la primera vez tarda de entre 37s a 40s sobre 140 actualizaciones (sí, soy un poco bestia, pero aquí me he refrenado y no he tocado la carpeta server para que aumente el número de actualizaciones :) ) con lo que se queda en un cuarto de segundo por actualización. Creo que está bastante bien. La siguiente vez que entremos ni te enteras :) Todo esto sobre PC+W7

Una vez que hemos entrado en "Actualizaciones", salimos o nos quedamos en pelisalacarta, da igual y eliminamos un canal y su json no lo muestra como [Canal[Nuevo] que es como lo debería de ver el script o me equivoco? , en vez de ésto lo muestra como [Canal][Actualizado]. Para que salga como nuevo tengo que eliminar los tres archivos json que se crearon.

Si en vez de borrar el .json del canal lo edito y lo dejo calcao al del GitHub y sin borrar los tres archivos .json que se crearon, sigue diciendo [Canal][Actualizado], si borro los tres archivos .json pasa lo mismo. Para que no pase lo anterior tiene que ser con el archivo descargado. Desconozco si sha1 mete en el algoritmo la fecha y hora o alguna otra cosa que no que no se si se le podrá decir que se limite al contenido. Con su abuelo MD5 no pasa eso, ambos son iguales.

El error que comenté es

Código: Seleccionar todo

Traceback (most recent call last):
  File "%AppKodiBin%\system\python\Lib\threading.py", line 810, in __bootstrap_inner
    self.run()
  File "%AppKodiBin%\system\python\Lib\threading.py", line 763, in run
    self.__target(*self.__args, **self.__kwargs)
  File "%AppData%\Kodi\addons\plugin.video.pelisalacarta\core\updater.py", line 271, in Threaded_checkforupdates
    CheckFiles()
  File "%AppData%\Kodi\addons\plugin.video.pelisalacarta\core\updater.py", line 279, in CheckFiles
    LocalJSONData = get_channels_list()
  File "%AppData%\Kodi\addons\plugin.video.pelisalacarta\core\updater.py", line 368, in get_channels_list
    JSONFileData["json"] = json.loads(FileData)
  File "%AppKodiBin%\system\python\Lib\json\__init__.py", line 338, in loads
    return _default_decoder.decode(s)
  File "%AppKodiBin%\system\python\Lib\json\decoder.py", line 366, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "%AppKodiBin%\system\python\Lib\json\decoder.py", line 382, in raw_decode
    obj, end = self.scan_once(s, idx)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xf1 in position 1: invalid continuation byte

Re: Actualizaciones automaticas y channelselector dinamico

Publicado: 14 Dic 2015, 16:26
por divadr
Estan bien tus pruebas... eso queria ver como reacciona en todos los escenaruos posibles...
Una vez que hemos entrado en "Actualizaciones", salimos o nos quedamos en pelisalacarta, da igual y eliminamos un canal y su json no lo muestra como [Canal[Nuevo] que es como lo debería de ver el script o me equivoco?
Tienes toda la razon no havia previsto esa posibilidad.. luego me lo miro y lo corrigo esto lo veo sencillo
Si en vez de borrar el .json del canal lo edito y lo dejo calcao al del GitHub y sin borrar los tres archivos .json que se crearon, sigue diciendo [Canal][Actualizado], si borro los tres archivos .json pasa lo mismo. Para que no pase lo anterior tiene que ser con el archivo descargado. Desconozco si sha1 mete en el algoritmo la fecha y hora o alguna otra cosa que no que no se si se le podrá decir que se limite al contenido.
Mas de lo mismo... la actualizacion solo se borra de la lista cuando la instalas desde el script... modificare el codigo para que vuando entres vuelva a comprobar los sha y si se ha actualizado "manualmente" la borre del listado