ramiro / service.subtitles.subdivx

Subdivx.com subtitles download Add-on for Kodi/XBMC v13 Gotham up to Kodi Matrix v19.
GNU General Public License v2.0
16 stars 22 forks source link

Cache temporal de resultados de búsqueda #30

Closed IvanRF closed 6 years ago

IvanRF commented 7 years ago

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.

ramiro commented 7 years ago

+1

Caché de resultados, no de achivos descargados ¿Correcto?

¿Kodi no ofrecerá alguna API de caching que los addons puedan usar?

IvanRF commented 7 years ago

Sí, sólo de los resultados, sería guardar para un searchstring la lista subs_list.

Encontré esto:

ramiro commented 7 years ago

¿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.

IvanRF commented 7 years ago

En general si la cache esta bien implementada se le tendría que poder setear cuándo expira.

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.

matteraf commented 6 years ago

Buen improvement si se llegara a implementar.

ramiro commented 6 years ago

@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.

IvanRF commented 6 years ago

@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 commented 6 years ago

@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.

IvanRF commented 6 years ago

@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.

ramiro commented 6 years ago

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!

ramiro commented 6 years ago

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.

IvanRF commented 6 years ago

Esto está implementado en v0.3.4. El valor por omisión es 10 minutos ¡Gracias!

Excelente! Hoy lo pruebo. Gracias por implementarlo 👍