diff --git a/jellyfin_kodi/jellyfin/api.py b/jellyfin_kodi/jellyfin/api.py index 67555741..69987883 100644 --- a/jellyfin_kodi/jellyfin/api.py +++ b/jellyfin_kodi/jellyfin/api.py @@ -258,11 +258,35 @@ class API(object): return self._get("Plugins") def check_companion_installed(self): + """ + None = Unknown + True = Installed, but possibly not loaded right now + False = Not installed, scheduled for uninstalling or disabled + """ try: - self._get("Jellyfin.Plugin.KodiSyncQueue/GetServerDateTime") - return True - except Exception: - return False + kodi_sync_queue = [ + x + for x in self.get_plugins() + if x.get("Id") == "771e19d653854cafb35c28a0e865cf63" + ] + + LOG.debug("KodiSyncQueue Plugins result: %s", kodi_sync_queue) + + kodi_sync_queue_filtered = [ + x + for x in kodi_sync_queue + if x.get("Status") + in ["Active", "Restart", "Malfunctioned", "NotSupported"] + ] + + if kodi_sync_queue_filtered: + return True + else: + return False + except requests.RequestException as e: + LOG.warning("Error checking companion installed state: %s", e) + + return None def get_seasons(self, show_id): return self.shows("/%s/Seasons" % show_id, params={ diff --git a/jellyfin_kodi/library.py b/jellyfin_kodi/library.py index b44e722d..9de23d67 100644 --- a/jellyfin_kodi/library.py +++ b/jellyfin_kodi/library.py @@ -343,8 +343,8 @@ class Library(threading.Thread): if settings('SyncInstallRunDone.bool') and settings( 'kodiCompanion.bool' ): - - if self.server.jellyfin.check_companion_installed(): + # None == Unknown + if self.server.jellyfin.check_companion_installed() is not False: if not self.fast_sync(): dialog("ok", "{jellyfin}", translate(33128)) @@ -353,8 +353,11 @@ class Library(threading.Thread): LOG.info("--<[ retrieve changes ]") + # is False else: - raise LibraryException('CompanionMissing') + dialog("ok", "{jellyfin}", translate(33099)) + settings("kodiCompanion.bool", False) + return True return True except LibraryException as error: @@ -370,13 +373,6 @@ class Library(threading.Thread): return True - elif error.status == 'CompanionMissing': - - dialog("ok", "{jellyfin}", translate(33099)) - settings('kodiCompanion.bool', False) - - return True - except Exception as error: LOG.exception(error)