From 81eb3ea11526096d212eecc8bdfe598f8e9aef41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elan=20Ruusam=C3=A4e?= Date: Thu, 22 Dec 2022 20:43:10 +0200 Subject: [PATCH 1/4] Implement fallback __repr__ for Media missing plex --- plextraktsync/media.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/plextraktsync/media.py b/plextraktsync/media.py index 34657e86b0..88f254c43f 100644 --- a/plextraktsync/media.py +++ b/plextraktsync/media.py @@ -223,11 +223,21 @@ def plex_history(self, **kwargs): return [] return self.plex_api.history(self.plex.item, **kwargs) - def __str__(self): + def __repr__(self): if self.plex: - return str(self.plex) - - return str(self.trakt) + return repr(self.plex) + + trakt = self.trakt + if self.type in ["movie", "show"]: + return f"" + elif self.type == "show": + return f"" + elif self.type == "season": + return f"" + elif self.type == "episode": + return f"" + else: + return f"')}>)" class MediaFactory: From e9056ac3da4fc74eef42f1749ccdbbe00ceb23f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elan=20Ruusam=C3=A4e?= Date: Thu, 22 Dec 2022 20:47:25 +0200 Subject: [PATCH 2/4] Add {m} printing to watchlist add/remove --- plextraktsync/sync.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/plextraktsync/sync.py b/plextraktsync/sync.py index f209471503..d8dbcdbe45 100644 --- a/plextraktsync/sync.py +++ b/plextraktsync/sync.py @@ -204,8 +204,10 @@ def watchlist_sync_item(self, m: Media, dry_run=False): if m.plex is None: if self.config.update_plex_wl: logger.info(f"Skipping {m.title_link} from Trakt watchlist because not found in Plex Discover", extra={"markup": True}) + # logger.info(f"Skipping '{m.trakt.title}' ({m.trakt.year}) {m} from Trakt watchlist because not found in Plex Discover") elif self.config.update_trakt_wl: logger.info(f"Removing {m.title_link} from Trakt watchlist", extra={"markup": True}) + # logger.info(f"Removing '{m.trakt.title}' ({m.trakt.year}) {m} from Trakt watchlist") if not dry_run: m.remove_from_trakt_watchlist() return @@ -214,10 +216,12 @@ def watchlist_sync_item(self, m: Media, dry_run=False): if m not in self.trakt_wl: if self.config.update_trakt_wl: logger.info(f"Adding {m.title_link} to Trakt watchlist", extra={"markup": True}) + # logger.info(f"Adding '{m.plex.item.title}' ({m.plex.item.year}) {m} to Trakt watchlist") if not dry_run: m.add_to_trakt_watchlist() else: logger.info(f"Removing {m.title_link} from Plex watchlist", extra={"markup": True}) + # logger.info(f"Removing '{m.trakt.title}' ({m.plex.item.year}) {m} from Plex watchlist") if not dry_run: m.remove_from_plex_watchlist() else: From 9ab55f0bb381d5d55de33d761ae0c5880265a6bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elan=20Ruusam=C3=A4e?= Date: Wed, 4 Jan 2023 00:59:49 +0200 Subject: [PATCH 3/4] Add tag hilighting --- plextraktsync/rich_addons.py | 1 + 1 file changed, 1 insertion(+) diff --git a/plextraktsync/rich_addons.py b/plextraktsync/rich_addons.py index 2b83827e3e..07fe946f9b 100644 --- a/plextraktsync/rich_addons.py +++ b/plextraktsync/rich_addons.py @@ -10,6 +10,7 @@ class RichHighlighter(RegexHighlighter): r"(?P[\w_]{1,50})=(?P\"?[\w_]+\"?)?", r"(?P\<)(?P(?:Movie|Episode|Show):\d+:[^>]+)(?P\>)", r"(?P\<)(?P(?:PlexGuid|Guid|PlexLibrarySection):[^>]+)(?P\>)", + r"(?P\<)(?P(?:trakt):[^>]+)(?P\>)", r"(?P\<)(?P(?:imdb|tmdb|tvdb|local):(?:(?:tt)?\d+:)[^>]+)(?P\>)", r"\b(?PTrue)\b|\b(?PFalse)\b|\b(?PNone)\b", r"(?b?\'\'\'.*?(? Date: Wed, 4 Jan 2023 19:01:25 +0200 Subject: [PATCH 4/4] Use m.title, m consistently --- plextraktsync/sync.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/plextraktsync/sync.py b/plextraktsync/sync.py index d8dbcdbe45..bbae094e11 100644 --- a/plextraktsync/sync.py +++ b/plextraktsync/sync.py @@ -123,6 +123,7 @@ def sync_collection(self, m: Media, dry_run=False): return logger.info(f"Adding to collection: {m.title_link}", extra={"markup": True}) + # logger.info(f"Adding to collection: '{m.title}' {m}") if not dry_run: m.add_to_collection() @@ -204,10 +205,10 @@ def watchlist_sync_item(self, m: Media, dry_run=False): if m.plex is None: if self.config.update_plex_wl: logger.info(f"Skipping {m.title_link} from Trakt watchlist because not found in Plex Discover", extra={"markup": True}) - # logger.info(f"Skipping '{m.trakt.title}' ({m.trakt.year}) {m} from Trakt watchlist because not found in Plex Discover") + # logger.info(f"Skipping '{m.trakt.title}' {m} from Trakt watchlist because not found in Plex Discover") elif self.config.update_trakt_wl: logger.info(f"Removing {m.title_link} from Trakt watchlist", extra={"markup": True}) - # logger.info(f"Removing '{m.trakt.title}' ({m.trakt.year}) {m} from Trakt watchlist") + # logger.info(f"Removing '{m.trakt.title}' {m} from Trakt watchlist") if not dry_run: m.remove_from_trakt_watchlist() return @@ -217,6 +218,7 @@ def watchlist_sync_item(self, m: Media, dry_run=False): if self.config.update_trakt_wl: logger.info(f"Adding {m.title_link} to Trakt watchlist", extra={"markup": True}) # logger.info(f"Adding '{m.plex.item.title}' ({m.plex.item.year}) {m} to Trakt watchlist") + logger.info(f"Adding '{m.title}' {m} to Trakt watchlist") if not dry_run: m.add_to_trakt_watchlist() else: @@ -234,10 +236,13 @@ def watchlist_sync_item(self, m: Media, dry_run=False): elif m in self.trakt_wl: if self.config.update_plex_wl: logger.info(f"Adding {m.title_link} to Plex watchlist", extra={"markup": True}) + # logger.info(f"Adding '{m.title}' {m} to Plex watchlist") if not dry_run: m.add_to_plex_watchlist() else: logger.info(f"Removing {m.title_link} from Trakt watchlist", extra={"markup": True}) + # logger.info(f"Removing '{m.title}' {m} from Trakt watchlist") + if not dry_run: m.remove_from_trakt_watchlist()