From 0839d2bb44a7f14b13c3580313a610ababdf75e5 Mon Sep 17 00:00:00 2001 From: meisnate12 Date: Thu, 1 Apr 2021 11:34:02 -0400 Subject: [PATCH] added network to plex_search --- modules/builder.py | 11 ++++++++--- modules/config.py | 2 +- modules/plex.py | 11 +++++++++-- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/modules/builder.py b/modules/builder.py index fb58abbe..4f9f07d7 100644 --- a/modules/builder.py +++ b/modules/builder.py @@ -16,7 +16,8 @@ method_alias = { "directors": "director", "genres": "genre", "labels": "label", - "studios": "studio", "network": "studio", "networks": "studio", + "studios": "studio", + "networks": "network", "producers": "producer", "writers": "writer", "years": "year" @@ -371,6 +372,8 @@ class CollectionBuilder: raise Failed(f"Collection Error: {method_name} attribute only works for movie libraries") elif method_name in plex.movie_only_searches and self.library.is_show: raise Failed(f"Collection Error: {method_name} plex search only works for movie libraries") + elif method_name in plex.show_only_searches and self.library.is_movie: + raise Failed(f"Collection Error: {method_name} plex search only works for show libraries") elif method_name not in collectionless_details and self.collectionless: raise Failed(f"Collection Error: {method_name} attribute does not work for Collectionless collection") elif method_name == "summary": @@ -597,6 +600,8 @@ class CollectionBuilder: search_final = f"{search}{modifier}" if search_final in plex.movie_only_searches and self.library.is_show: raise Failed(f"Collection Error: {search_final} plex search attribute only works for movie libraries") + if search_final in plex.show_only_searches and self.library.is_movie: + raise Failed(f"Collection Error: {search_final} plex search attribute only works for show libraries") elif search_data is None: raise Failed(f"Collection Error: {search_final} plex search attribute is blank") elif search == "sort_by": @@ -614,7 +619,7 @@ class CollectionBuilder: elif search == "title" and modifier in ["", ".and", ".not", ".begins", ".ends"]: searches[search_final] = util.get_list(search_data, split=False) elif (search == "studio" and modifier in ["", ".and", ".not", ".begins", ".ends"]) \ - or (search in ["actor", "audio_language", "collection", "content_rating", "country", "director", "genre", "label", "producer", "subtitle_language", "writer"] and modifier in ["", ".and", ".not"]) \ + or (search in ["actor", "audio_language", "collection", "content_rating", "country", "director", "genre", "label", "network", "producer", "subtitle_language", "writer"] and modifier in ["", ".and", ".not"]) \ or (search == "resolution" and modifier in [""]): if search_final in plex.tmdb_searches: final_values = [] @@ -641,7 +646,7 @@ class CollectionBuilder: elif search == "year" and modifier in ["", ".not"]: searches[search_final] = util.get_year_list(search_data, current_year, search_final) elif (search in ["title", "studio"] and modifier not in ["", ".and", ".not", ".begins", ".ends"]) \ - or (search in ["actor", "audio_language", "collection", "content_rating", "country", "director", "genre", "label", "producer", "subtitle_language", "writer"] and modifier not in ["", ".and", ".not"]) \ + or (search in ["actor", "audio_language", "collection", "content_rating", "country", "director", "genre", "label", "network", "producer", "subtitle_language", "writer"] and modifier not in ["", ".and", ".not"]) \ or (search in ["resolution", "decade"] and modifier not in [""]) \ or (search in ["added", "originally_available"] and modifier not in [".before", ".after"]) \ or (search in ["duration", "rating"] and modifier not in [".greater", ".less"]) \ diff --git a/modules/config.py b/modules/config.py index 1c23ef22..5c26dfd0 100644 --- a/modules/config.py +++ b/modules/config.py @@ -385,7 +385,7 @@ class Config: if len(self.libraries) > 0: logger.info(f"{len(self.libraries)} Plex Library Connection{'s' if len(self.libraries) > 1 else ''} Successful") else: - raise Failed("Plex Error: No Plex libraries were found") + raise Failed("Plex Error: No Plex libraries were connected to") util.separator() diff --git a/modules/plex.py b/modules/plex.py index 7156cc4e..6781fd5a 100644 --- a/modules/plex.py +++ b/modules/plex.py @@ -54,6 +54,7 @@ searches = [ "director", "director.and", "director.not", "genre", "genre.and", "genre.not", "label", "label.and", "label.not", + "network", "network.and", "network.not", "producer", "producer.and", "producer.not", "subtitle_language", "subtitle_language.and", "subtitle_language.not", "writer", "writer.and", "writer.not", @@ -72,6 +73,9 @@ movie_only_searches = [ "originally_available.before", "originally_available.after", "duration.greater", "duration.less" ] +show_only_searches = [ + "network", "network.and", "network.not", +] tmdb_searches = [ "actor", "actor.and", "actor.not", "director", "director.and", "director.not", @@ -181,8 +185,11 @@ class PlexAPI: return self.PlexServer.search(data) def get_search_choices(self, search_name, key=False): - if key: return {c.key.lower(): c.key for c in self.Plex.listFilterChoices(search_name)} - else: return {c.title.lower(): c.title for c in self.Plex.listFilterChoices(search_name)} + try: + if key: return {c.key.lower(): c.key for c in self.Plex.listFilterChoices(search_name)} + else: return {c.title.lower(): c.title for c in self.Plex.listFilterChoices(search_name)} + except NotFound: + raise Failed(f"Collection Error: plex search attribute: {search_name} only supported with Plex's New TV Agent") def validate_search_list(self, data, search_name): final_search = search_translation[search_name] if search_name in search_translation else search_name