Ahora sí me he encontrado con un pequeño fallo relacionado con el scraper (prometo que esta vez sí

). Con la serie Capitan Harlock de seriesdanko, al añadirla me aparece la ventana del scraper con los datos vacíos, si le doy a aceptar me genera la entrada en el archivo series.json, pero el nombre aparece vacio ya que la key name está igual. Tal vez se podría comprobar si el valor de name es una cadena vacía y utilizar el de tvshow...
Por otro lado, me he fijado que en los últimos cambios realizados se ha eliminado una parte del código en el canal biblioteca que discriminaba si se estaba utilizando samba, concretamente en las funciones peliculas y get_capitulos, pero no entiendo el por qué.
Esa discriminación se hizo porque en samba, cada vez que se lee un fichero tiene que conectar con la unidad de red, por lo que si hay muchos strm dentro de la carpeta películas o de la serie, el tiempo que tarda en leerlos es bastante. Para solucionarlo lo que se hacía era simplemente listar los archivos (sin leerlos), y una vez se eligiera uno entonces se hacía la lectura. Creo que así es mejor, de la otra forma se vuelve muy tedioso acceder al canal utilizando una ruta samba.
Y para acabar, he estado trasteando por curiosidad cómo se podría hacer para que guardase los enlaces a los vídeos como sugería Jesús y así conservarlos en caso de caída de la web. Mi idea es crear un archivo "enlaces.json" dentro de la carpeta de la serie que contenga los items que genera el findvideos del canal divididos por episodio, con un formato como este:
Código: Seleccionar todo
{
"1x01": {
"0": "plugin://plugin.video.pelisalacarta/?eyJsaXN0X2NhbGlkYWQiOiBbIlNEIiwgIk1pY3JvSEQiLCAiSEQvTUtWIl0sICJsYW5ndWFnZSI6ICJFc3BhXHUwMGYxb2wiLCAidGl0bGUiOiAiVmVyIGVuIHN0cmVhbWNsb3VkIFtFc3BhXHUwMGYxb2xdIFtTRF0gKGRhbmtvOiAyMDE2LTAxLTAzKSIsICJ1cmwiOiAiaHR0cDovL3Nlcmllc2RhbmtvLmNvbS9hbm9uaW0ucGhwP2lkPTMxMzI0NjQiLCAic2hvdyI6ICJDYXBpdGFuIEhhcmxvY2siLCAiY29udGV4dCI6ICJtZW51IGZpbHRyb3xndWFyZGFyIGZpbHRybyIsICJhY3Rpb24iOiAicGxheSIsICJsaXN0X2lkaW9tYXMiOiBbIlZPUyIsICJWTyIsICJFc3BhXHUwMGYxb2wiLCAiTGF0aW5vIl0sICJxdWFsaXR5IjogIlNEIiwgImNoYW5uZWwiOiAic2VyaWVzZGFua28ifQ%3D%3D",
"1": "plugin://plugin.video.pelisalacarta/?eyJsaXN0X2NhbGlkYWQiOiBbIlNEIiwgIk1pY3JvSEQiLCAiSEQvTUtWIl0sICJsYW5ndWFnZSI6ICJFc3BhXHUwMGYxb2wiLCAidGl0bGUiOiAiVmVyIGVuIHN0cmVhbWluIFtFc3BhXHUwMGYxb2xdIFtTRF0gKGRhbmtvOiAyMDE2LTAxLTAzKSIsICJ1cmwiOiAiaHR0cDovL3Nlcmllc2RhbmtvLmNvbS9hbm9uaW0ucGhwP2lkPTMxMzI0NjUiLCAic2hvdyI6ICJDYXBpdGFuIEhhcmxvY2siLCAiY29udGV4dCI6ICJtZW51IGZpbHRyb3xndWFyZGFyIGZpbHRybyIsICJhY3Rpb24iOiAicGxheSIsICJsaXN0X2lkaW9tYXMiOiBbIlZPUyIsICJWTyIsICJFc3BhXHUwMGYxb2wiLCAiTGF0aW5vIl0sICJxdWFsaXR5IjogIlNEIiwgImNoYW5uZWwiOiAic2VyaWVzZGFua28ifQ%3D%3D",
"2": "plugin://plugin.video.pelisalacarta/?eyJsaXN0X2NhbGlkYWQiOiBbIlNEIiwgIk1pY3JvSEQiLCAiSEQvTUtWIl0sICJsYW5ndWFnZSI6ICJFc3BhXHUwMGYxb2wiLCAidGl0bGUiOiAiVmVyIGVuIG5vd3ZpZGVvIFtFc3BhXHUwMGYxb2xdIFtTRF0gKGRhbmtvOiAyMDE2LTAxLTAzKSIsICJ1cmwiOiAiaHR0cDovL3Nlcmllc2RhbmtvLmNvbS9hbm9uaW0ucGhwP2lkPTMxMzI0NjEiLCAic2hvdyI6ICJDYXBpdGFuIEhhcmxvY2siLCAiY29udGV4dCI6ICJtZW51IGZpbHRyb3xndWFyZGFyIGZpbHRybyIsICJhY3Rpb24iOiAicGxheSIsICJsaXN0X2lkaW9tYXMiOiBbIlZPUyIsICJWTyIsICJFc3BhXHUwMGYxb2wiLCAiTGF0aW5vIl0sICJxdWFsaXR5IjogIlNEIiwgImNoYW5uZWwiOiAic2VyaWVzZGFua28ifQ%3D%3D",
"3": "plugin://plugin.video.pelisalacarta/?eyJsaXN0X2NhbGlkYWQiOiBbIlNEIiwgIk1pY3JvSEQiLCAiSEQvTUtWIl0sICJsYW5ndWFnZSI6ICJFc3BhXHUwMGYxb2wiLCAidGl0bGUiOiAiVmVyIGVuIGZsYXNoeCBbRXNwYVx1MDBmMW9sXSBbU0RdIChkYW5rbzogMjAxNi0wMS0wMykiLCAidXJsIjogImh0dHA6Ly9zZXJpZXNkYW5rby5jb20vYW5vbmltLnBocD9pZD0zMTMyNDYwIiwgInNob3ciOiAiQ2FwaXRhbiBIYXJsb2NrIiwgImNvbnRleHQiOiAibWVudSBmaWx0cm98Z3VhcmRhciBmaWx0cm8iLCAiYWN0aW9uIjogInBsYXkiLCAibGlzdF9pZGlvbWFzIjogWyJWT1MiLCAiVk8iLCAiRXNwYVx1MDBmMW9sIiwgIkxhdGlubyJdLCAicXVhbGl0eSI6ICJTRCIsICJjaGFubmVsIjogInNlcmllc2RhbmtvIn0%3D"
}
El código que lo genera es este por si alguien quiere probarlo, modificando la funcion save_library_episodes de library.py:
Código: Seleccionar todo
enlaces = {}
for i, e in enumerate(episodelist):
p_dialog.update(int(math.ceil(i * t)), 'Añadiendo episodio...', e.title)
# Añade todos menos el que dice "Añadir esta serie..." o "Descargar esta serie..."
if e.action == "add_serie_to_library" or e.action == "download_all_episodes":
continue
e.action = "play_from_library"
e.category = "Series"
nuevo = False
filename = "{0}.strm".format(scrapertools.get_season_and_episode(e.title.lower()))
fullfilename = join_path(path, filename)
# logger.debug(fullfilename)
if not path_exists(fullfilename):
nuevo = True
if save_file('{addon}?{url}'.format(addon=addon_name, url=e.tourl()), fullfilename):
if nuevo:
insertados += 1
else:
sobreescritos += 1
# Se ejecuta la funcion findvideos del canal y se añaden los items a la variable enlaces sobreescribiendo los antiguos
channel = __import__('channels.%s' % e.channel, fromlist=["channels.%s" % e.channel])
urls_list = getattr(channel, 'findvideos')(e)
enlaces[filename[:-5]] = {}
for i, item in enumerate(urls_list):
enlaces[filename[:-5]][str(i)] = '{addon}?{url}'.format(addon=addon_name, url=item.tourl())
else:
fallidos += 1
if p_dialog.iscanceled():
break
if enlaces:
fullfilename = join_path(path, 'enlaces.json')
enlaces = jsontools.dump_json(enlaces)
save_file(enlaces, fullfilename)
p_dialog.close()
Lo que me genera dudas (entre otras cosas xD) es la actualización de los enlaces, que habría que separarla porque sería muy lento que se actualizara en cada inicio de kodi. Y en cuanto a la reproducción, seguiría como hasta ahora ejecutando el strm, pero se podría implementar que si el canal no devuelve enlaces por error o porque está caído, acceder a esos enlaces "offline". Pero vamos, tomadlo como una mera prueba, porque no sé si realmente es algo muy útil...
No veo nada raro, SeiTaN me ha respondido que es "obligatorio" la ejecución del scraper la primera vez, por tanto no veo contradictorio decir que se puede solucionar el tema de los nombres con el scraper.
Tampoco he pensado que todo el desarrollo de la librería esté hecho así de primeras, yo estuve mirando con él el tema de samba y haciendo algunas pruebas y sé el curro que implica (siendo eso una muy pequeña parte). Solo decía que, en mi opinión, el tema del scraper está genial, pero que tal y como está ahora, si falla, no puedes agregar la serie, por eso mi sugerencia era controlar si se produce un error en ese paso.