From 9547ad759a272d03bfc6dd253daec5f6d3a2dd2f Mon Sep 17 00:00:00 2001 From: meisnate12 Date: Wed, 24 Nov 2021 08:22:17 -0500 Subject: [PATCH] use plex path when adding existing to radarr/sonarr --- modules/builder.py | 16 +++++++++------- modules/config.py | 18 +++++++++++++----- modules/radarr.py | 5 ++++- modules/sonarr.py | 5 ++++- plex_meta_manager.py | 10 ++++++---- requirements.txt | 2 +- 6 files changed, 37 insertions(+), 19 deletions(-) diff --git a/modules/builder.py b/modules/builder.py index 3755f7e4..b6a911fa 100644 --- a/modules/builder.py +++ b/modules/builder.py @@ -90,11 +90,8 @@ notification_details = ["collection_creation_webhooks", "collection_addition_web details = ["collection_mode", "collection_order", "collection_level", "collection_minimum", "label"] + boolean_details + string_details + notification_details collectionless_details = ["collection_order", "plex_collectionless", "label", "label_sync_mode", "test"] + \ poster_details + background_details + summary_details + string_details -item_details = [ - "item_label", "item_radarr_tag", "item_sonarr_tag", "item_overlay", "item_assets", "revert_overlay", - "item_lock_background", "item_lock_poster", "item_lock_title", - "item_refresh", -] + list(plex.item_advance_keys.keys()) +item_bool_details = ["item_assets", "revert_overlay", "item_lock_background", "item_lock_poster", "item_lock_title", "item_refresh"] +item_details = ["item_label", "item_radarr_tag", "item_sonarr_tag", "item_overlay"] + item_bool_details + list(plex.item_advance_keys.keys()) radarr_details = ["radarr_add", "radarr_add_existing", "radarr_folder", "radarr_monitor", "radarr_search", "radarr_availability", "radarr_quality", "radarr_tag"] sonarr_details = [ "sonarr_add", "sonarr_add_existing", "sonarr_folder", "sonarr_monitor", "sonarr_language", "sonarr_series", @@ -748,7 +745,7 @@ class CollectionBuilder: raise Failed("Each Overlay can only be used once per Library") self.library.overlays.append(method_data) self.item_details[method_name] = method_data - elif method_name in ["item_assets", "revert_overlay", "item_lock_background", "item_lock_poster", "item_lock_title", "item_refresh"]: + elif method_name in item_bool_details: if util.parse(method_name, method_data, datatype="bool", default=False): self.item_details[method_name] = True elif method_name in plex.item_advance_keys: @@ -1210,7 +1207,7 @@ class CollectionBuilder: rating_keys = [rating_keys] total = len(rating_keys) max_length = len(str(total)) - if self.filters and self.details["show_filtered"] is True: + if (self.filters or self.tmdb_filters) and self.details["show_filtered"] is True: logger.info("") logger.info("Filtering Builder:") for i, key in enumerate(rating_keys, 1): @@ -1821,7 +1818,9 @@ class CollectionBuilder: sync_tags = self.item_details["item_label.sync"] if "item_label.sync" in self.item_details else None tmdb_ids = [] + tmdb_paths = [] tvdb_ids = [] + tvdb_paths = [] for item in self.items: if int(item.ratingKey) in rating_keys and not revert: rating_keys.remove(int(item.ratingKey)) @@ -1831,10 +1830,13 @@ class CollectionBuilder: except Failed as e: logger.error(e) self.library.edit_tags("label", item, add_tags=add_tags, remove_tags=remove_tags, sync_tags=sync_tags) + path = os.path.dirname(str(item.locations[0])) if self.library.is_movie else str(item.locations[0]) if item.ratingKey in self.library.movie_rating_key_map: tmdb_ids.append(self.library.movie_rating_key_map[item.ratingKey]) + tmdb_paths.append((self.library.movie_rating_key_map[item.ratingKey], f"{path.replace(self.library.Radarr.plex_path, self.library.Radarr.radarr_path)}/")) if item.ratingKey in self.library.show_rating_key_map: tvdb_ids.append(self.library.show_rating_key_map[item.ratingKey]) + tvdb_paths.append((self.library.show_rating_key_map[item.ratingKey], f"{path.replace(self.library.Sonarr.plex_path, self.library.Sonarr.sonarr_path)}/")) advance_edits = {} for method_name, method_data in self.item_details.items(): if method_name in plex.item_advance_keys: diff --git a/modules/config.py b/modules/config.py index dbb45a67..5ab48ecf 100644 --- a/modules/config.py +++ b/modules/config.py @@ -346,7 +346,9 @@ class Config: "availability": check_for_attribute(self.data, "availability", parent="radarr", test_list=radarr.availability_descriptions, default="announced"), "quality_profile": check_for_attribute(self.data, "quality_profile", parent="radarr", default_is_none=True), "tag": check_for_attribute(self.data, "tag", parent="radarr", var_type="lower_list", default_is_none=True), - "search": check_for_attribute(self.data, "search", parent="radarr", var_type="bool", default=False) + "search": check_for_attribute(self.data, "search", parent="radarr", var_type="bool", default=False), + "radarr_path": check_for_attribute(self.data, "radarr_path", parent="radarr", default_is_none=True), + "plex_path": check_for_attribute(self.data, "plex_path", parent="radarr", default_is_none=True) } self.general["sonarr"] = { "url": check_for_attribute(self.data, "url", parent="sonarr", var_type="url", default_is_none=True), @@ -361,7 +363,9 @@ class Config: "season_folder": check_for_attribute(self.data, "season_folder", parent="sonarr", var_type="bool", default=True), "tag": check_for_attribute(self.data, "tag", parent="sonarr", var_type="lower_list", default_is_none=True), "search": check_for_attribute(self.data, "search", parent="sonarr", var_type="bool", default=False), - "cutoff_search": check_for_attribute(self.data, "cutoff_search", parent="sonarr", var_type="bool", default=False) + "cutoff_search": check_for_attribute(self.data, "cutoff_search", parent="sonarr", var_type="bool", default=False), + "sonarr_path": check_for_attribute(self.data, "sonarr_path", parent="sonarr", default_is_none=True), + "plex_path": check_for_attribute(self.data, "plex_path", parent="sonarr", default_is_none=True) } self.general["tautulli"] = { "url": check_for_attribute(self.data, "url", parent="tautulli", var_type="url", default_is_none=True), @@ -514,9 +518,11 @@ class Config: "root_folder_path": check_for_attribute(lib, "root_folder_path", parent="radarr", default=self.general["radarr"]["root_folder_path"], req_default=True, save=False), "monitor": check_for_attribute(lib, "monitor", parent="radarr", var_type="bool", default=self.general["radarr"]["monitor"], save=False), "availability": check_for_attribute(lib, "availability", parent="radarr", test_list=radarr.availability_descriptions, default=self.general["radarr"]["availability"], save=False), - "quality_profile": check_for_attribute(lib, "quality_profile", parent="radarr",default=self.general["radarr"]["quality_profile"], req_default=True, save=False), + "quality_profile": check_for_attribute(lib, "quality_profile", parent="radarr", default=self.general["radarr"]["quality_profile"], req_default=True, save=False), "tag": check_for_attribute(lib, "tag", parent="radarr", var_type="lower_list", default=self.general["radarr"]["tag"], default_is_none=True, save=False), - "search": check_for_attribute(lib, "search", parent="radarr", var_type="bool", default=self.general["radarr"]["search"], save=False) + "search": check_for_attribute(lib, "search", parent="radarr", var_type="bool", default=self.general["radarr"]["search"], save=False), + "radarr_path": check_for_attribute(lib, "radarr_path", parent="radarr", default=self.general["radarr"]["radarr_path"], default_is_none=True, save=False), + "plex_path": check_for_attribute(lib, "plex_path", parent="radarr", default=self.general["radarr"]["plex_path"], default_is_none=True, save=False) }) except Failed as e: self.errors.append(e) @@ -545,7 +551,9 @@ class Config: "season_folder": check_for_attribute(lib, "season_folder", parent="sonarr", var_type="bool", default=self.general["sonarr"]["season_folder"], save=False), "tag": check_for_attribute(lib, "tag", parent="sonarr", var_type="lower_list", default=self.general["sonarr"]["tag"], default_is_none=True, save=False), "search": check_for_attribute(lib, "search", parent="sonarr", var_type="bool", default=self.general["sonarr"]["search"], save=False), - "cutoff_search": check_for_attribute(lib, "cutoff_search", parent="sonarr", var_type="bool", default=self.general["sonarr"]["cutoff_search"], save=False) + "cutoff_search": check_for_attribute(lib, "cutoff_search", parent="sonarr", var_type="bool", default=self.general["sonarr"]["cutoff_search"], save=False), + "sonarr_path": check_for_attribute(lib, "sonarr_path", parent="sonarr", default=self.general["sonarr"]["sonarr_path"], default_is_none=True, save=False), + "plex_path": check_for_attribute(lib, "plex_path", parent="sonarr", default=self.general["sonarr"]["plex_path"], default_is_none=True, save=False) }) except Failed as e: self.errors.append(e) diff --git a/modules/radarr.py b/modules/radarr.py index c69139e5..6921662e 100644 --- a/modules/radarr.py +++ b/modules/radarr.py @@ -28,12 +28,15 @@ class Radarr: self.quality_profile = params["quality_profile"] self.tag = params["tag"] self.search = params["search"] + self.radarr_path = "" if params["radarr_path"] and params["plex_path"] else params["radarr_path"] + self.plex_path = "" if params["radarr_path"] and params["plex_path"] else params["plex_path"] def add_tmdb(self, tmdb_ids, **options): logger.info("") util.separator("Adding to Radarr", space=False, border=False) logger.debug("") - logger.debug(f"TMDb IDs: {tmdb_ids}") + for tmdb_id in tmdb_ids: + logger.debug(tmdb_id) folder = options["folder"] if "folder" in options else self.root_folder_path monitor = options["monitor"] if "monitor" in options else self.monitor availability = availability_translation[options["availability"] if "availability" in options else self.availability] diff --git a/modules/sonarr.py b/modules/sonarr.py index 533ac127..4b77f11f 100644 --- a/modules/sonarr.py +++ b/modules/sonarr.py @@ -50,12 +50,15 @@ class Sonarr: self.tag = params["tag"] self.search = params["search"] self.cutoff_search = params["cutoff_search"] + self.sonarr_path = "" if params["sonarr_path"] and params["plex_path"] else params["sonarr_path"] + self.plex_path = "" if params["sonarr_path"] and params["plex_path"] else params["plex_path"] def add_tvdb(self, tvdb_ids, **options): logger.info("") util.separator("Adding to Sonarr", space=False, border=False) logger.debug("") - logger.debug(f"TVDb IDs: {tvdb_ids}") + for tvdb_id in tvdb_ids: + logger.debug(tvdb_id) folder = options["folder"] if "folder" in options else self.root_folder_path monitor = monitor_translation[options["monitor"] if "monitor" in options else self.monitor] quality_profile = options["quality"] if "quality" in options else self.quality_profile diff --git a/plex_meta_manager.py b/plex_meta_manager.py index 1934408c..2c94e13e 100644 --- a/plex_meta_manager.py +++ b/plex_meta_manager.py @@ -333,10 +333,11 @@ def library_operations(config, library, items=None): except Failed: pass + path = os.path.dirname(str(item.locations[0])) if library.is_movie else str(item.locations[0]) if library.Radarr and library.radarr_add_all and tmdb_id: - radarr_adds.append(tmdb_id) + radarr_adds.append((tmdb_id, f"{path.replace(library.Radarr.plex_path, library.Radarr.radarr_path)}/")) if library.Sonarr and library.sonarr_add_all and tvdb_id: - sonarr_adds.append(tvdb_id) + sonarr_adds.append((tvdb_id, f"{path.replace(library.Sonarr.plex_path, library.Sonarr.sonarr_path)}/")) tmdb_item = None if library.mass_genre_update == "tmdb" or library.mass_audience_rating_update == "tmdb" or library.mass_critic_rating_update == "tmdb": @@ -427,7 +428,6 @@ def library_operations(config, library, items=None): except Failed: pass - if library.Radarr and library.radarr_add_all: try: library.Radarr.add_tmdb(radarr_adds) @@ -552,10 +552,12 @@ def run_collection(config, library, metadata, requested_collections): logger.info("") logger.info(f"Sync Mode: {'sync' if builder.sync else 'append'}") - if len(builder.filters) > 0: + if builder.filters or builder.tmdb_filters: logger.info("") for filter_key, filter_value in builder.filters: logger.info(f"Collection Filter {filter_key}: {filter_value}") + for filter_key, filter_value in builder.tmdb_filters: + logger.info(f"Collection Filter {filter_key}: {filter_value}") builder.find_rating_keys() diff --git a/requirements.txt b/requirements.txt index 1006ae7c..099a534e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,6 @@ PlexAPI==4.8.0 tmdbv3api==1.7.6 -arrapi==1.2.3 +arrapi==1.2.6 lxml==4.6.4 requests==2.26.0 ruamel.yaml==0.17.17