From 88d3035969dc98beb37867a0e536177eca615ae8 Mon Sep 17 00:00:00 2001 From: faush01 Date: Sun, 21 Jul 2019 12:29:11 +1000 Subject: [PATCH] fix some exections with Pickel loading that were stopping the service from starting --- addon.xml | 2 +- resources/lib/datamanager.py | 36 ++++++++++++++++++++++++------------ service.py | 7 +++++-- 3 files changed, 30 insertions(+), 15 deletions(-) diff --git a/addon.xml b/addon.xml index 2e2ad50..24b0416 100644 --- a/addon.xml +++ b/addon.xml @@ -1,7 +1,7 @@ diff --git a/resources/lib/datamanager.py b/resources/lib/datamanager.py index 0eaa103..4a06540 100644 --- a/resources/lib/datamanager.py +++ b/resources/lib/datamanager.py @@ -288,7 +288,7 @@ def clear_cached_server_data(): def clear_old_cache_data(): - log.debug("clear_old_cache_data() called") + log.debug("clear_old_cache_data() : called") addon_dir = xbmc.translatePath(xbmcaddon.Addon().getAddonInfo('profile')) dirs, files = xbmcvfs.listdir(addon_dir) @@ -296,21 +296,33 @@ def clear_old_cache_data(): del_count = 0 for filename in files: if filename.startswith("cache_") and filename.endswith(".pickle"): - log.debug("Checking CacheFile: {0}", filename) + log.debug("clear_old_cache_data() : Checking CacheFile : {0}", filename) - with open(os.path.join(addon_dir, filename), 'rb') as handle: - cache_item = cPickle.load(handle) + cache_item = None + for x in range(0, 5): + try: + with open(os.path.join(addon_dir, filename), 'rb') as handle: + cache_item = cPickle.load(handle) + break + except Exception as error: + log.debug("clear_old_cache_data() : Pickle load error : {0}", error) + cache_item = None + xbmc.sleep(1000) - item_last_used = -1 - if cache_item.date_last_used is not None: - item_last_used = time.time() - cache_item.date_last_used + if cache_item is not None: + item_last_used = -1 + if cache_item.date_last_used is not None: + item_last_used = time.time() - cache_item.date_last_used - log.debug("Cache item last used : {0} sec ago", item_last_used) - if item_last_used == -1 or item_last_used > (3600 * 24 * 7): - log.debug("Deleting cache item age : {0}", item_last_used) + log.debug("clear_old_cache_data() : Cache item last used : {0} sec ago", item_last_used) + if item_last_used == -1 or item_last_used > (3600 * 24 * 7): + log.debug("clear_old_cache_data() : Deleting cache item age : {0}", item_last_used) + xbmcvfs.delete(os.path.join(addon_dir, filename)) + del_count += 1 + else: + log.debug("clear_old_cache_data() : Deleting unloadable cache item") xbmcvfs.delete(os.path.join(addon_dir, filename)) - del_count += 1 - log.debug("Cache items deleted : {0}", del_count) + log.debug("clear_old_cache_data() : Cache items deleted : {0}", del_count) diff --git a/service.py b/service.py index e1024ef..c50cf18 100644 --- a/service.py +++ b/service.py @@ -25,8 +25,6 @@ from resources.lib.datamanager import clear_old_cache_data settings = xbmcaddon.Addon() -clear_old_cache_data() - # clear user and token when logging in home_window = HomeWindow() home_window.clearProperty("userid") @@ -36,6 +34,11 @@ home_window.clearProperty("Params") log = SimpleLogging('service') monitor = xbmc.Monitor() +try: + clear_old_cache_data() +except Exception as error: + log.error("Error in clear_old_cache_data() : {0}", error) + # wait for 10 seconds for the Kodi splash screen to close i = 0 while not monitor.abortRequested():