Closed IvanRF closed 6 years ago
+1
Caché de resultados, no de achivos descargados ¿Correcto?
¿Kodi no ofrecerá alguna API de caching que los addons puedan usar?
Sí, sólo de los resultados, sería guardar para un searchstring
la lista subs_list
.
Encontré esto:
¿Cómo hariamos para invalidad ese cache a medida que los resultados de la búsqueda van cambiando? o sea a medida que dtos. miembros traductores de la comunidad subdivx van subiendo nuevos subtítulos.
En general si la cache esta bien implementada se le tendría que poder setear cuándo expira.
La cache del primer link lo define al principio:
cache = StorageServer.StorageServer("tablename", 24) # (Your plugin name, Cache time in hours)
El segundo de los links tiene el parámetro en el set:
simplecache.set( "MyChunkOfData", my_objects, expiration=datetime.timedelta(hours=12))
Así dure 1 hora la cache, sería una mejora. La utilidad va a ser en lapso corto de tiempo hasta que encontras el subtítulo que anda bien.
Buen improvement si se llegara a implementar.
@IvanRF @matteraf Se implementó de manera muy simple en v0.3.3 usando los servicios de la primera opción sugerida por Iván: script.common.plugin.cache
(https://kodi.wiki/view/Add-on:Common_plugin_cache)
Se agradece feedback si es que lo prueban.
@ramiro ya lo probé y la caché anda excelente! Muchísimo más rápido que esperar a que busque de nuevo. Gracias por agregarlo!
@ramiro ya lo probé y la caché anda excelente! Muchísimo más rápido que esperar a que busque de nuevo. Gracias por agregarlo!
En el foro, un usuario planteó que sería mejor bajar el valor del TTL:
Una consulta, lo del cachear la busqueda es muy util cuando se desconoce la versión y necesitas ir probando, ¿Pero dura 1 hora? No sería más útil x 5 minutos? Especialmente en estrenos de tv q los subtitulos salen a los minutos y quizas una busqueda fallida te inpida volver a refrescar la busqueda por una hora. Si es que la cache funciona de esta manera.
La documentación de script.common.plugin.cache
menciona que la granularidad es en horas y los ejemplos usan enteros.
Pero mirando el código fuente veo que aparentemente se puede especificar un float, por ejemplo 0.084 para aprox. 5 minutos.
Me gustaría saber tu opinión sobre el tema. Y cuál sería un valor sensato para el TTL.
@ramiro habría que probar si funciona con un float. En el código parece que internamente lo maneja en segundos: def setCacheTimeout(self, timeout): self.timeout = float(timeout) * 3600
Con respecto al tiempo, tal vez se podría bajar a 10 minutos. Creo que 5m es poco teniendo en cuenta el tiempo que tarda en bajarse el subtítulo y hasta que alguien hable para comprobarlo, peor aún si hay que probar más de dos.
Lo ideal sería que se pueda configurar el tiempo de la cache, porque va a ser difícil encontrar un valor que les guste a todos 😄. Si funcionan los float, se podría agregar en la configuración general del addon el tiempo de la cache en minutos.
Consulta aparte, en https://github.com/ramiro/service.subtitles.subdivx/blob/master/addon.xml#L9 se incluyó <import addon="script.common.plugin.cache" version="2.5.5"/>
pero va por la versión 2.5.10, cambia en algo? Porque veo que Kodi me actualizó el script a la última versión.
Con respecto al tiempo, tal vez se podría bajar a 10 minutos. Creo que 5m es poco teniendo en cuenta el tiempo que tarda en bajarse el subtítulo y hasta que alguien hable para comprobarlo, peor aún si hay que probar más de dos.
Lo ideal sería que se pueda configurar el tiempo de la cache, porque va a ser difícil encontrar un valor que les guste a todos smile. Si funcionan los float, se podría agregar en la configuración general del addon el tiempo de la cache en minutos.
Esto está implementado en v0.3.4. El valor por omisión es 10 minutos ¡Gracias!
Consulta aparte, en https://github.com/ramiro/service.subtitles.subdivx/blob/master/addon.xml#L9 se incluyó
pero va por la versión 2.5.10, cambia en algo? Porque veo que Kodi me actualizó el script a la última versión.
Eso se implementó siguiendo al pie de la letra la documentación de script.common.plugin.cache
.
Por otra parte entiendo que la especificacion de versiones de dependencias en addon.xml
es sobre versiones mínimas.
Puede o no estar relacionado con esto, pero yo apunto por ahora (es posible que esto cambie en los próximos meses con la migración a Python 3 de Kodi 19) a que el addon sea compatible con la versión mas antigua posible de Kodi. De manera que prefiero ser conservador en el manejo de este tipo de cosas.
Esto está implementado en v0.3.4. El valor por omisión es 10 minutos ¡Gracias!
Excelente! Hoy lo pruebo. Gracias por implementarlo 👍
Una idea a futuro para optimizar el addon sería hacer cache de los resultados de una búsqueda. Sería útil para cuando se selecciona un subtítulo, este tiene una sincro distinta y se vuelve a buscar para seleccionar otro resultado. Actualmente, por cada prueba hay que esperar a que se busque en subdivx y se listen los resultados. Sería más rápido si se mantiene una cache temporal.