mirror of
https://github.com/meisnate12/Plex-Meta-Manager
synced 2024-11-26 06:20:23 +00:00
use plex path when adding existing to radarr/sonarr
This commit is contained in:
parent
be6f960484
commit
9547ad759a
6 changed files with 37 additions and 19 deletions
|
@ -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
|
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"] + \
|
collectionless_details = ["collection_order", "plex_collectionless", "label", "label_sync_mode", "test"] + \
|
||||||
poster_details + background_details + summary_details + string_details
|
poster_details + background_details + summary_details + string_details
|
||||||
item_details = [
|
item_bool_details = ["item_assets", "revert_overlay", "item_lock_background", "item_lock_poster", "item_lock_title", "item_refresh"]
|
||||||
"item_label", "item_radarr_tag", "item_sonarr_tag", "item_overlay", "item_assets", "revert_overlay",
|
item_details = ["item_label", "item_radarr_tag", "item_sonarr_tag", "item_overlay"] + item_bool_details + list(plex.item_advance_keys.keys())
|
||||||
"item_lock_background", "item_lock_poster", "item_lock_title",
|
|
||||||
"item_refresh",
|
|
||||||
] + 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"]
|
radarr_details = ["radarr_add", "radarr_add_existing", "radarr_folder", "radarr_monitor", "radarr_search", "radarr_availability", "radarr_quality", "radarr_tag"]
|
||||||
sonarr_details = [
|
sonarr_details = [
|
||||||
"sonarr_add", "sonarr_add_existing", "sonarr_folder", "sonarr_monitor", "sonarr_language", "sonarr_series",
|
"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")
|
raise Failed("Each Overlay can only be used once per Library")
|
||||||
self.library.overlays.append(method_data)
|
self.library.overlays.append(method_data)
|
||||||
self.item_details[method_name] = 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):
|
if util.parse(method_name, method_data, datatype="bool", default=False):
|
||||||
self.item_details[method_name] = True
|
self.item_details[method_name] = True
|
||||||
elif method_name in plex.item_advance_keys:
|
elif method_name in plex.item_advance_keys:
|
||||||
|
@ -1210,7 +1207,7 @@ class CollectionBuilder:
|
||||||
rating_keys = [rating_keys]
|
rating_keys = [rating_keys]
|
||||||
total = len(rating_keys)
|
total = len(rating_keys)
|
||||||
max_length = len(str(total))
|
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("")
|
||||||
logger.info("Filtering Builder:")
|
logger.info("Filtering Builder:")
|
||||||
for i, key in enumerate(rating_keys, 1):
|
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
|
sync_tags = self.item_details["item_label.sync"] if "item_label.sync" in self.item_details else None
|
||||||
|
|
||||||
tmdb_ids = []
|
tmdb_ids = []
|
||||||
|
tmdb_paths = []
|
||||||
tvdb_ids = []
|
tvdb_ids = []
|
||||||
|
tvdb_paths = []
|
||||||
for item in self.items:
|
for item in self.items:
|
||||||
if int(item.ratingKey) in rating_keys and not revert:
|
if int(item.ratingKey) in rating_keys and not revert:
|
||||||
rating_keys.remove(int(item.ratingKey))
|
rating_keys.remove(int(item.ratingKey))
|
||||||
|
@ -1831,10 +1830,13 @@ class CollectionBuilder:
|
||||||
except Failed as e:
|
except Failed as e:
|
||||||
logger.error(e)
|
logger.error(e)
|
||||||
self.library.edit_tags("label", item, add_tags=add_tags, remove_tags=remove_tags, sync_tags=sync_tags)
|
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:
|
if item.ratingKey in self.library.movie_rating_key_map:
|
||||||
tmdb_ids.append(self.library.movie_rating_key_map[item.ratingKey])
|
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:
|
if item.ratingKey in self.library.show_rating_key_map:
|
||||||
tvdb_ids.append(self.library.show_rating_key_map[item.ratingKey])
|
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 = {}
|
advance_edits = {}
|
||||||
for method_name, method_data in self.item_details.items():
|
for method_name, method_data in self.item_details.items():
|
||||||
if method_name in plex.item_advance_keys:
|
if method_name in plex.item_advance_keys:
|
||||||
|
|
|
@ -346,7 +346,9 @@ class Config:
|
||||||
"availability": check_for_attribute(self.data, "availability", parent="radarr", test_list=radarr.availability_descriptions, default="announced"),
|
"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),
|
"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),
|
"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"] = {
|
self.general["sonarr"] = {
|
||||||
"url": check_for_attribute(self.data, "url", parent="sonarr", var_type="url", default_is_none=True),
|
"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),
|
"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),
|
"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),
|
"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"] = {
|
self.general["tautulli"] = {
|
||||||
"url": check_for_attribute(self.data, "url", parent="tautulli", var_type="url", default_is_none=True),
|
"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),
|
"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),
|
"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),
|
"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),
|
"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:
|
except Failed as e:
|
||||||
self.errors.append(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),
|
"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),
|
"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),
|
"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:
|
except Failed as e:
|
||||||
self.errors.append(e)
|
self.errors.append(e)
|
||||||
|
|
|
@ -28,12 +28,15 @@ class Radarr:
|
||||||
self.quality_profile = params["quality_profile"]
|
self.quality_profile = params["quality_profile"]
|
||||||
self.tag = params["tag"]
|
self.tag = params["tag"]
|
||||||
self.search = params["search"]
|
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):
|
def add_tmdb(self, tmdb_ids, **options):
|
||||||
logger.info("")
|
logger.info("")
|
||||||
util.separator("Adding to Radarr", space=False, border=False)
|
util.separator("Adding to Radarr", space=False, border=False)
|
||||||
logger.debug("")
|
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
|
folder = options["folder"] if "folder" in options else self.root_folder_path
|
||||||
monitor = options["monitor"] if "monitor" in options else self.monitor
|
monitor = options["monitor"] if "monitor" in options else self.monitor
|
||||||
availability = availability_translation[options["availability"] if "availability" in options else self.availability]
|
availability = availability_translation[options["availability"] if "availability" in options else self.availability]
|
||||||
|
|
|
@ -50,12 +50,15 @@ class Sonarr:
|
||||||
self.tag = params["tag"]
|
self.tag = params["tag"]
|
||||||
self.search = params["search"]
|
self.search = params["search"]
|
||||||
self.cutoff_search = params["cutoff_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):
|
def add_tvdb(self, tvdb_ids, **options):
|
||||||
logger.info("")
|
logger.info("")
|
||||||
util.separator("Adding to Sonarr", space=False, border=False)
|
util.separator("Adding to Sonarr", space=False, border=False)
|
||||||
logger.debug("")
|
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
|
folder = options["folder"] if "folder" in options else self.root_folder_path
|
||||||
monitor = monitor_translation[options["monitor"] if "monitor" in options else self.monitor]
|
monitor = monitor_translation[options["monitor"] if "monitor" in options else self.monitor]
|
||||||
quality_profile = options["quality"] if "quality" in options else self.quality_profile
|
quality_profile = options["quality"] if "quality" in options else self.quality_profile
|
||||||
|
|
|
@ -333,10 +333,11 @@ def library_operations(config, library, items=None):
|
||||||
except Failed:
|
except Failed:
|
||||||
pass
|
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:
|
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:
|
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
|
tmdb_item = None
|
||||||
if library.mass_genre_update == "tmdb" or library.mass_audience_rating_update == "tmdb" or library.mass_critic_rating_update == "tmdb":
|
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:
|
except Failed:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
if library.Radarr and library.radarr_add_all:
|
if library.Radarr and library.radarr_add_all:
|
||||||
try:
|
try:
|
||||||
library.Radarr.add_tmdb(radarr_adds)
|
library.Radarr.add_tmdb(radarr_adds)
|
||||||
|
@ -552,10 +552,12 @@ def run_collection(config, library, metadata, requested_collections):
|
||||||
logger.info("")
|
logger.info("")
|
||||||
logger.info(f"Sync Mode: {'sync' if builder.sync else 'append'}")
|
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("")
|
logger.info("")
|
||||||
for filter_key, filter_value in builder.filters:
|
for filter_key, filter_value in builder.filters:
|
||||||
logger.info(f"Collection Filter {filter_key}: {filter_value}")
|
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()
|
builder.find_rating_keys()
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
PlexAPI==4.8.0
|
PlexAPI==4.8.0
|
||||||
tmdbv3api==1.7.6
|
tmdbv3api==1.7.6
|
||||||
arrapi==1.2.3
|
arrapi==1.2.6
|
||||||
lxml==4.6.4
|
lxml==4.6.4
|
||||||
requests==2.26.0
|
requests==2.26.0
|
||||||
ruamel.yaml==0.17.17
|
ruamel.yaml==0.17.17
|
||||||
|
|
Loading…
Reference in a new issue