From 6a0f93efd5f6a62a05453ac4a4704a10aec572b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elan=20Ruusam=C3=A4e?= Date: Wed, 17 Jan 2024 02:17:10 +0200 Subject: [PATCH 1/3] Add unsupported, syncable, local properties to PlexGuid --- plextraktsync/plex/PlexGuid.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/plextraktsync/plex/PlexGuid.py b/plextraktsync/plex/PlexGuid.py index 05a76d36db..11883ce3d1 100644 --- a/plextraktsync/plex/PlexGuid.py +++ b/plextraktsync/plex/PlexGuid.py @@ -61,6 +61,21 @@ def is_episode(self): return len(parts) == 3 and all(x.isnumeric() for x in parts) + @property + def syncable(self): + """Is the provider syncable with trakt""" + return self.provider in ["imdb", "tmdb", "tvdb"] + + @property + def local(self): + """Is the provider local""" + return self.provider in ["local", "none", "agents.none"] + + @property + def unsupported(self): + """Known providers that can't be synced""" + return self.provider in ["youtube", "xmltv"] + @cached_property def show_id(self): if not self.is_episode: From 2278d28e4f7469d0b400945df055176776c7eab0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elan=20Ruusam=C3=A4e?= Date: Wed, 17 Jan 2024 02:17:27 +0200 Subject: [PATCH 2/3] Refactor resolve_guid validate block --- plextraktsync/media/MediaFactory.py | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/plextraktsync/media/MediaFactory.py b/plextraktsync/media/MediaFactory.py index 6c7b61872f..d3840c5026 100644 --- a/plextraktsync/media/MediaFactory.py +++ b/plextraktsync/media/MediaFactory.py @@ -41,16 +41,21 @@ def resolve_any(self, pm: PlexLibraryItem, show: Media = None) -> Media | None: return None def resolve_guid(self, guid: PlexGuid, show: Media = None): - if guid.provider in ["youtube", "xmltv"]: - logger.debug(f"{guid.title_link}: Skipping {guid} because unsupported provider '{guid.provider}'", extra={"markup": True}) - return None + if not guid.syncable: + error = f"{guid.title_link}: Skipping {guid} because" + + if guid.unsupported: + level = "debug" + reason = f"unsupported provider '{guid.provider}'" + elif guid.local: + level = "warning" + reason = f"provider '{guid.provider}' has no external Id" + else: + level = "error" + reason = "is not a valid provider" - if guid.provider in ["local", "none", "agents.none"]: - logger.warning(f"{guid.title_link}: Skipping {guid} because provider {guid.provider} has no external Id", extra={"markup": True}) - return None + getattr(logger, level)(f"{error} {reason}", extra={"markup": True}) - if guid.provider not in ["imdb", "tmdb", "tvdb"]: - logger.error(f"{guid.title_link}: '{guid.provider}' is not valid provider from {guid}", extra={"markup": True}) return None try: From 0531155f737c9a49d2290ebd8e3284fd87578185 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elan=20Ruusam=C3=A4e?= Date: Wed, 17 Jan 2024 17:49:47 +0200 Subject: [PATCH 3/3] Skip year=None from PlexLibraryItem --- plextraktsync/plex/PlexLibraryItem.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plextraktsync/plex/PlexLibraryItem.py b/plextraktsync/plex/PlexLibraryItem.py index 80760444a2..e707cde39f 100644 --- a/plextraktsync/plex/PlexLibraryItem.py +++ b/plextraktsync/plex/PlexLibraryItem.py @@ -142,7 +142,8 @@ def title(self): if self.type == "episode": value = f"{self.item.grandparentTitle}/{self.item.seasonEpisode}/{value}" - value = f"{value} ({self.item.year})" + if self.item.year: + value = f"{value} ({self.item.year})" return value