Re: Actualizaciones automaticas y channelselector dinamico
Publicado: 15 Dic 2015, 18:41
Cmos en la 4.0.4 no están los jsons, bajate los canales del GitHub.
Voy a probar la nueva versión.
Voy a probar la nueva versión.
Soporte oficial de pelisalacarta y tvalacarta - Ayuda con tu media center
https://www.mimediacenter.info/foro/
Sí, sí, eso fue lo primero que hice, los json son iguales que en github, pero como los .py que descomprime el zip son distintos, detecta que se ha actualizado cuando en realidad es la misma versión. No es un problema gordo porque actualizas y punto, pero es lo que dice divadr, que lo que haya en el zip debería ser exactamente igual que lo que hay en github.SeiTaN escribió:Cmos en la 4.0.4 no están los jsons, bajate los canales del GitHub.
Voy a probar la nueva versión.
Código: Seleccionar todo
19:05:04 T:17024 NOTICE: pelisalacarta.platformcode.launcher multiplatform channel
19:05:04 T:17024 NOTICE: pelisalacarta.platformcode.launcher executing channel 'mainlist' method
19:05:04 T:17024 NOTICE: get_channels_list
19:05:04 T:17024 NOTICE: [get_channels_list] No es necesario regenerar el indice
19:05:04 T:17024 NOTICE: get_servers_list
19:05:04 T:17024 NOTICE: [get_servers_list] No es necesario regenerar el indice
19:05:04 T:17024 NOTICE: [xbmctools.py] renderItems
19:05:04 T:17024 NOTICE: [xbmctools.py] addnewfolderextra( "","updater" , "refresh" , "Actualizaciones", "Buscar actualizaciones de nuevo" , "" , "" , "" , "")
19:05:04 T:17024 NOTICE: [xbmctools.py] addnewfolderextra( "","" , "" , "Actualizaciones", "¡No hay actualizaciones!" , "" , "" , "" , "")
19:05:04 T:8904 NOTICE: Thread BackgroundLoader start, auto delete: false
19:05:04 T:15324 ERROR: XFILE::CDirectory::GetDirectory - Error getting plugin://plugin.video.pelisalacarta/?Serie&action=refresh&category=Actualizaciones&channel=updater&extradata&fanart=C%3a%2fUsers%2fSeiTaN%2fAppData%2fRoaming%2fKodi%2faddons%2fplugin.video.pelisalacarta%2ffanart.jpg&fulltitle=Buscar%20actualizaciones%20de%20nuevo&plot&show&thumbnail&title=Buscar%20actualizaciones%20de%20nuevo&url
19:05:04 T:15324 ERROR: CGUIMediaWindow::GetDirectory(plugin://plugin.video.pelisalacarta/?Serie&action=refresh&category=Actualizaciones&channel=updater&extradata&fanart=C%3a%2fUsers%2fSeiTaN%2fAppData%2fRoaming%2fKodi%2faddons%2fplugin.video.pelisalacarta%2ffanart.jpg&fulltitle=Buscar%20actualizaciones%20de%20nuevo&plot&show&thumbnail&title=Buscar%20actualizaciones%20de%20nuevo&url) failed
19:05:04 T:16868 NOTICE: Thread LanguageInvoker start, auto delete: false
19:05:04 T:16868 NOTICE: -->Python Interpreter Initialized<--
19:05:04 T:16868 NOTICE: pelisalacarta.default init...
19:05:04 T:16868 NOTICE: pelisalacarta.platformcode.launcher run
19:05:04 T:16868 NOTICE: pelisalacarta.core.config.verify_directories_created
19:05:04 T:16868 NOTICE: pelisalacarta.platformcode.launcher extract_parameters
19:05:04 T:16868 NOTICE: pelisalacarta.platformcode.launcher sys.argv=['plugin://plugin.video.pelisalacarta/', '10', '?action=mainlist&category=Actualizaciones&channel=updater']
19:05:04 T:16868 NOTICE: get_params
19:05:04 T:16868 NOTICE: get_params ?action=mainlist&category=Actualizaciones&channel=updater
19:05:04 T:16868 NOTICE: get_params command=action=mainlist
19:05:04 T:16868 NOTICE: get_params command=category=Actualizaciones
19:05:04 T:16868 NOTICE: get_params command=channel=updater
19:05:04 T:16868 NOTICE: get_params {'action': 'mainlist', 'category': 'Actualizaciones', 'channel': 'updater'}
19:05:04 T:16868 NOTICE: pelisalacarta.platformcode.launcher params={'action': 'mainlist', 'category': 'Actualizaciones', 'channel': 'updater'}
19:05:04 T:16868 NOTICE: pelisalacarta.platformcode.launcher fanart=, channel_name=updater, title=, fulltitle=, url=, thumbnail=, plot=, action=mainlist, server=, extra=, subtitle=, category=Actualizaciones, show=, password=
19:05:04 T:16868 NOTICE: pelisalacarta.platformcode.launcher.set_server_list start
19:05:04 T:16868 NOTICE: set_server_list whiteList ['streamcloud', 'powvideo', 'streaminto']
19:05:04 T:16868 NOTICE: set_server_list blackList []
19:05:04 T:16868 NOTICE: pelisalacarta.platformcode.launcher.set_server_list end
19:05:04 T:16868 NOTICE: pelisalacarta.core.channeltools is_adult channel_name=updater
19:05:04 T:16868 NOTICE: pelisalacarta.core.channeltools get_channel_parameters channel_name=updater
19:05:04 T:16868 NOTICE: pelisalacarta.core.channeltools get_channel_parameters updater.xml NOT found
19:05:04 T:16868 NOTICE: pelisalacarta.platformcode.launcher regular_channel_path=C:\Users\SeiTaN\AppData\Roaming\Kodi\addons\plugin.video.pelisalacarta\channels\updater.py
19:05:04 T:16868 NOTICE: pelisalacarta.platformcode.launcher core_channel_path=C:\Users\SeiTaN\AppData\Roaming\Kodi\addons\plugin.video.pelisalacarta\core\updater.py
19:05:04 T:16868 NOTICE: pelisalacarta.platformcode.launcher running channel core.updater C:\Users\SeiTaN\AppData\Roaming\Kodi\addons\plugin.video.pelisalacarta\core\updater.pyo
19:05:04 T:16868 NOTICE: pelisalacarta.platformcode.launcher multiplatform channel
19:05:04 T:16868 NOTICE: pelisalacarta.platformcode.launcher executing channel 'mainlist' method
19:05:04 T:16868 NOTICE: get_channels_list
19:05:04 T:16868 NOTICE: [get_channels_list] No es necesario regenerar el indice
19:05:04 T:16868 NOTICE: get_servers_list
19:05:04 T:16868 NOTICE: [get_servers_list] No es necesario regenerar el indice
19:05:04 T:16868 NOTICE: [xbmctools.py] renderItems
19:05:04 T:16868 NOTICE: [xbmctools.py] addnewfolderextra( "","updater" , "refresh" , "Actualizaciones", "Buscar actualizaciones de nuevo" , "" , "" , "" , "")
19:05:04 T:16868 NOTICE: [xbmctools.py] addnewfolderextra( "","" , "" , "Actualizaciones", "¡No hay actualizaciones!" , "" , "" , "" , "")
19:05:04 T:16896 NOTICE: Thread BackgroundLoader start, auto delete: false
Vale, entonces es eso, gracias por la explicación.divadr escribió:Que es lo que has modificado? El jspn el .py?
Lo comento porque en los canales, el updater SOLO comprueba el json, cuando descargas la actualización si que descarga los dos json + py
Lo hice asi porque me parece tontería comprobar los dos archivos, y ya que el json es el que lleva el numero de versión, cuando este cambia es que hay una actualización y deben actualizarse los dos
Código: Seleccionar todo
{
"count": 114,
"date": 1450019790.0,
"channels": {
"animeflv": {
"active": true,
"adult": false,
"category": [
"anime"
],
"changes": "resueltos problemas utf, libreria requests, pep8 conventions, etc",
"date": "24/10/2015",
"fanart": "",
"id": "animeflv",
"include_in_global_search": true,
"language": "es",
"name": "Animeflv",
"sha": "ebd51e52acc64ba5452c3af51344195210969814"
"thumbnail": "",
"update_url": "",
"version": "3.0"
},
"animeid": {
"active": true,
"adult": false,
...
Código: Seleccionar todo
Lineas 394 a 410:
JSONIndex={"list":{}, "date":0, "count":0}
for File in os.listdir(ChannelsPath):
File = os.path.join(ChannelsPath,File)
if File.endswith(".json"):
FileData = open(File, 'rb').read()
JSONFileData = {}
JSONFileData["json"] = json.loads(FileData)["channel"]
JSONFileData["sha"] = hashlib.sha1("blob " + str(len(FileData)) + "\0" + FileData).hexdigest()
JSONIndex["list"][os.path.basename(File)[:-5]] = JSONFileData
if os.path.getmtime(File) > JSONIndex["date"]:
JSONIndex["date"] = os.path.getmtime(File)
JSONIndex["count"] += 1
open(ChannelsIndex,"w").write(json.dumps(JSONIndex, indent=4, sort_keys=True))
return JSONIndex["list"]
Hoy por hoy los json no contienen eseparametro... de todas formas yo no acavo de ver claro como gestionar un updater con varios repositorios con todos los canales juntos... pero seria cuestion de mirarlo...Los canales han de incluir entre sus parametros/caracteristicas/json (a ver si le buscamos un nombre) "update_url", normalmente este sera:"https://raw.githubusercontent.com/tvala ... n-classic/...", pero se abre la posibilidad de fijar otros repositorios (Github o no, eso esta por decidir). Discutimos bastante sobre esto, ya que a mi me parecia un fallo grave de seguridad, pero me hizo ver q en algunos casos no hay mas remedio por temas de la LPI.
El parametro esta, lo q pasa es q cuando converti los xml en json fije como valor de "update_url" una cadena vacia para todos los canales.divadr escribió:Hoy por hoy los json no contienen eseparametro...
Me referia al nombre del fichero no a su contenidodivadr escribió:Por otro lado nos es que no me guste el list_channels.json... solo es que no contiene la informacion q necesito
Bueno, liada no es la mejor definicion. Pero coincidiras conmigo q no es lo mismo:divadr escribió: la estructura no la veo tan liada...
Código: Seleccionar todo
316 if "noupdate" in LocalJSONData[file["name"]]["json"]["channel"] and LocalJSONData[file["name"]]["json"]["channel"]["noupdate"] == True:
Código: Seleccionar todo
316 if "noupdate" in LocalJSONData[file["name"]] and LocalJSONData[file["name"]]["noupdate"] == True:
acabo de corregir ese punto, tienes toda la razón, no es necesario listar los directorios tantas veces.En el mismo punto, la asignacion de JSONIndex["date"] y JSONIndex["count"] mediante la creacion de listas por compresion queda muy chulo, pero volver a recorrer el listado de canales es innecesario:
Bueno, a eso me refiero, que no esta la url, de todos modos la update_url, cual seria? la del json, la del .py?El parametro esta, lo q pasa es q cuando converti los xml en json fije como valor de "update_url" una cadena vacia para todos los canales.
En mi mensaje anterior te proponia incluir el sha y los parametros obtenidos del canal.json juntos bajo el nombre del canal y todos los canales bajo el indice list (q yo he llamado channels por concretar, pero q es igual), el indice settings del channel.json no es necesario copiarlo aqui. (es mas facil escribir el esquema q explicarlodivadr escribió:Bueno, si en ese sentido si que es un poco liado.
La estructura del índice es la siguiente:
tiene 3 claves principales:
date: contiene la fecha de modificación del archivo que sea mas alta
count: el numero de archivos
list: contiene la lista de canales
dentro de list hay dos claves:
sha: contiene el sha del canal
json: contiene el fichero json del canal tal y como esta con todos su niveles... aquí es donde se podría sustituir esto y poner directamente los parámetros leídos del json sin tantos niveles, desde luego es una opción, pero como tampoco se si los json se van a quedar como están o si se van a sustituir, pues de momento lo he cargado tal cual.
Digamos q para los "oficiales" (ya se q esta definicion no gusta al jefedivadr escribió:Bueno, a eso me refiero, que no esta la url, de todos modos la update_url, cual seria? la del json, la del .py?
Yo entiendo a q se refiere a un canal subido al github q no debe ser descargado con la version actual, ya q necesita la modificacion de alguna "libreria" q no sera distribuida hasta la proxima actualizacion del plugin. En este caso coincido con @seitan y con el propio @cmos q es necesario una rama "develop" en github para estas cosas y dejar master con el codigo funcional de la version distribuida.cmos escribió: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...