Mejora en control de errores en caso de .json corrupto
This commit is contained in:
Kingbox
2019-04-10 18:16:57 +02:00
parent 65e384bde4
commit 8b855ca5eb
+34 -26
View File
@@ -26,46 +26,46 @@ def check_addon_init():
# Obtiene el íntervalo entre actualizaciones y si se quieren mensajes # Obtiene el íntervalo entre actualizaciones y si se quieren mensajes
try: try:
timer = int(config.get_setting('addon_update_timer')) # Intervalo entre actualizaciones, en Ajustes de Alfa timer = int(config.get_setting('addon_update_timer')) # Intervalo entre actualizaciones, en Ajustes de Alfa
if timer <= 0: if timer <= 0:
return # 0. No se quieren actualizaciones return # 0. No se quieren actualizaciones
verbose = config.get_setting('addon_update_message') verbose = config.get_setting('addon_update_message')
except: except:
timer = 12 # Por defecto cada 12 horas timer = 12 # Por defecto cada 12 horas
verbose = False # Por defecto, sin mensajes verbose = False # Por defecto, sin mensajes
timer = timer * 3600 # Lo pasamos a segundos timer = timer * 3600 # Lo pasamos a segundos
if config.get_platform(True)['num_version'] >= 14: # Si es Kodi, lanzamos el monitor if config.get_platform(True)['num_version'] >= 14: # Si es Kodi, lanzamos el monitor
import xbmc import xbmc
monitor = xbmc.Monitor() monitor = xbmc.Monitor()
else: # Lanzamos solo una actualización y salimos else: # Lanzamos solo una actualización y salimos
check_addon_updates(verbose) # Lanza la actualización check_addon_updates(verbose) # Lanza la actualización
return return
while not monitor.abortRequested(): # Loop infinito hasta cancelar Kodi while not monitor.abortRequested(): # Loop infinito hasta cancelar Kodi
check_addon_updates(verbose) # Lanza la actualización check_addon_updates(verbose) # Lanza la actualización
if monitor.waitForAbort(timer): # Espera el tiempo programado o hasta que cancele Kodi if monitor.waitForAbort(timer): # Espera el tiempo programado o hasta que cancele Kodi
break # Cancelación de Kodi, salimos break # Cancelación de Kodi, salimos
return return
# Lanzamos en Servicio de actualización de FIXES # Lanzamos en Servicio de actualización de FIXES
try: try:
threading.Thread(target=check_addon_monitor).start() # Creamos un Thread independiente, hasta el fin de Kodi threading.Thread(target=check_addon_monitor).start() # Creamos un Thread independiente, hasta el fin de Kodi
time.sleep(5) # Dejamos terminar la primera verificación... time.sleep(5) # Dejamos terminar la primera verificación...
except: # Si hay problemas de threading, se llama una sola vez except: # Si hay problemas de threading, se llama una sola vez
try: try:
timer = int(config.get_setting('addon_update_timer')) # Intervalo entre actualizaciones, en Ajustes de Alfa timer = int(config.get_setting('addon_update_timer')) # Intervalo entre actualizaciones, en Ajustes de Alfa
if timer <= 0: if timer <= 0:
return # 0. No se quieren actualizaciones return # 0. No se quieren actualizaciones
verbose = config.get_setting('addon_update_message') verbose = config.get_setting('addon_update_message')
except: except:
verbose = False # Por defecto, sin mensajes verbose = False # Por defecto, sin mensajes
pass pass
check_addon_updates(verbose) # Lanza la actualización, en Ajustes de Alfa check_addon_updates(verbose) # Lanza la actualización, en Ajustes de Alfa
time.sleep(5) # Dejamos terminar la primera verificación... time.sleep(5) # Dejamos terminar la primera verificación...
return return
@@ -106,12 +106,20 @@ def check_addon_updates(verbose=False):
return False return False
if os.path.exists(last_fix_json): if os.path.exists(last_fix_json):
lastfix = jsontools.load(filetools.read(last_fix_json)) try:
if lastfix['addon_version'] == data['addon_version'] and lastfix['fix_version'] == data['fix_version']: lastfix = {}
logger.info('Ya está actualizado con los últimos cambios. Versión %s.fix%d' % (data['addon_version'], data['fix_version'])) lastfix = jsontools.load(filetools.read(last_fix_json))
if verbose: if lastfix['addon_version'] == data['addon_version'] and lastfix['fix_version'] == data['fix_version']:
platformtools.dialog_notification('Alfa ya está actualizado', 'Versión %s.fix%d' % (data['addon_version'], data['fix_version'])) logger.info('Ya está actualizado con los últimos cambios. Versión %s.fix%d' % (data['addon_version'], data['fix_version']))
return False if verbose:
platformtools.dialog_notification('Alfa ya está actualizado', 'Versión %s.fix%d' % (data['addon_version'], data['fix_version']))
return False
except:
if lastfix:
logger.error('last_fix.json: ERROR en: ' + str(lastfix))
else:
logger.error('last_fix.json: ERROR desconocido')
lastfix = {}
# Descargar zip con las actualizaciones # Descargar zip con las actualizaciones
# ------------------------------------- # -------------------------------------