mirror of
https://github.com/meisnate12/Plex-Meta-Manager
synced 2024-11-10 06:54:21 +00:00
#290 added item_radarr_tag and item_sonarr_tag
This commit is contained in:
parent
1d55e5ca9a
commit
89e0894772
3 changed files with 85 additions and 17 deletions
|
@ -611,26 +611,35 @@ class CollectionBuilder:
|
|||
if os.path.exists(method_data): self.backgrounds[method_name] = os.path.abspath(method_data)
|
||||
else: raise Failed(f"Collection Error: Background Path Does Not Exist: {os.path.abspath(method_data)}")
|
||||
elif method_name == "label":
|
||||
if "label" in self.data and "label.sync" in self.data:
|
||||
raise Failed(f"Collection Error: Cannot use label and label.sync together")
|
||||
if "label.remove" in self.data and "label.sync" in self.data:
|
||||
raise Failed(f"Collection Error: Cannot use label.remove and label.sync together")
|
||||
if method_final == "label" and "label_sync_mode" in self.data and self.data["label_sync_mode"] == "sync":
|
||||
if "label" in methods and "label.sync" in methods:
|
||||
raise Failed("Collection Error: Cannot use label and label.sync together")
|
||||
if "label.remove" in methods and "label.sync" in methods:
|
||||
raise Failed("Collection Error: Cannot use label.remove and label.sync together")
|
||||
if method_final == "label" and "label_sync_mode" in methods and self.data[methods["label_sync_mode"]] == "sync":
|
||||
self.details["label.sync"] = util.get_list(method_data)
|
||||
else:
|
||||
self.details[method_final] = util.get_list(method_data)
|
||||
elif method_name == "item_label":
|
||||
if "item_label" in self.data and "item_label.sync" in self.data:
|
||||
if "item_label" in methods and "item_label.sync" in methods:
|
||||
raise Failed(f"Collection Error: Cannot use item_label and item_label.sync together")
|
||||
if "item_label.remove" in self.data and "item_label.sync" in self.data:
|
||||
if "item_label.remove" in methods and "item_label.sync" in methods:
|
||||
raise Failed(f"Collection Error: Cannot use item_label.remove and item_label.sync together")
|
||||
self.item_details[method_final] = util.get_list(method_data)
|
||||
elif method_name in ["item_radarr_tag", "item_sonarr_tag"]:
|
||||
if method_name in methods and f"{method_name}.sync" in methods:
|
||||
raise Failed(f"Collection Error: Cannot use {method_name} and {method_name}.sync together")
|
||||
if f"{method_name}.remove" in methods and f"{method_name}.sync" in methods:
|
||||
raise Failed(f"Collection Error: Cannot use {method_name}.remove and {method_name}.sync together")
|
||||
if method_name in methods and f"{method_name}.remove" in methods:
|
||||
raise Failed(f"Collection Error: Cannot use {method_name} and {method_name}.remove together")
|
||||
self.item_details[method_name] = util.get_list(method_data)
|
||||
self.item_details["apply_tags"] = method_mod[1:] if method_mod else ""
|
||||
elif method_name == "item_overlay":
|
||||
overlay = os.path.join(config.default_dir, "overlays", method_data, "overlay.png")
|
||||
if not os.path.exists(overlay):
|
||||
raise Failed(f"Collection Error: {method_data} overlay image not found at {overlay}")
|
||||
if method_data in self.library.overlays:
|
||||
raise Failed(f"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.item_details[method_name] = method_data
|
||||
elif method_name in plex.item_advance_keys:
|
||||
|
@ -1357,10 +1366,10 @@ class CollectionBuilder:
|
|||
attribute = method_alias[attribute] if attribute in method_alias else attribute
|
||||
modifier = modifier_alias[modifier] if modifier in modifier_alias else modifier
|
||||
|
||||
if attribute.lower() == "add_to_arr":
|
||||
if attribute == "add_to_arr":
|
||||
attribute = "radarr_add" if self.library.is_movie else "sonarr_add"
|
||||
elif attribute.lower() in ["arr_tag", "arr_folder"]:
|
||||
attribute = f"{'rad' if self.library.is_movie else 'son'}{attribute.lower()}"
|
||||
elif attribute in ["arr_tag", "arr_folder"]:
|
||||
attribute = f"{'rad' if self.library.is_movie else 'son'}{attribute}"
|
||||
elif attribute in plex.date_attributes and modifier in [".gt", ".gte"]:
|
||||
modifier = ".after"
|
||||
elif attribute in plex.date_attributes and modifier in [".lt", ".lte"]:
|
||||
|
@ -1682,12 +1691,18 @@ class CollectionBuilder:
|
|||
temp_image = os.path.join(overlay_folder, f"temp.png")
|
||||
overlay = (overlay_name, overlay_folder, overlay_image, temp_image)
|
||||
|
||||
tmdb_ids = []
|
||||
tvdb_ids = []
|
||||
for item in items:
|
||||
if int(item.ratingKey) in rating_keys:
|
||||
rating_keys.remove(int(item.ratingKey))
|
||||
if self.details["item_assets"] or overlay is not None:
|
||||
self.library.update_item_from_assets(item, overlay=overlay)
|
||||
self.library.edit_tags("label", item, add_tags=add_tags, remove_tags=remove_tags, sync_tags=sync_tags)
|
||||
if "item_radarr_tag" in self.item_details and item.ratingKey in self.library.movie_rating_key_map:
|
||||
tmdb_ids.append(self.library.movie_rating_key_map[item.ratingKey])
|
||||
if "item_sonarr_tag" in self.item_details and item.ratingKey in self.library.show_rating_key_map:
|
||||
tvdb_ids.append(self.library.show_rating_key_map[item.ratingKey])
|
||||
advance_edits = {}
|
||||
for method_name, method_data in self.item_details.items():
|
||||
if method_name in plex.item_advance_keys:
|
||||
|
@ -1696,6 +1711,12 @@ class CollectionBuilder:
|
|||
advance_edits[key] = options[method_data]
|
||||
self.library.edit_item(item, item.title, "Movie" if self.library.is_movie else "Show", advance_edits, advanced=True)
|
||||
|
||||
if len(tmdb_ids) > 0:
|
||||
self.library.Radarr.edit_tags(tmdb_ids, self.item_details["item_radarr_tag"], self.item_details["apply_tags"])
|
||||
|
||||
if len(tvdb_ids) > 0:
|
||||
self.library.Sonarr.edit_tags(tvdb_ids, self.item_details["item_sonarr_tag"], self.item_details["apply_tags"])
|
||||
|
||||
for rating_key in rating_keys:
|
||||
try:
|
||||
item = self.fetch_item(rating_key)
|
||||
|
|
|
@ -12,6 +12,11 @@ availability_translation = {
|
|||
"released": "released",
|
||||
"db": "preDB"
|
||||
}
|
||||
apply_tags_translation = {
|
||||
"": "add",
|
||||
"sync": "replace",
|
||||
"remove": "remove"
|
||||
}
|
||||
|
||||
class Radarr:
|
||||
def __init__(self, params):
|
||||
|
@ -31,7 +36,7 @@ class Radarr:
|
|||
|
||||
def add_tmdb(self, tmdb_ids, **options):
|
||||
logger.info("")
|
||||
util.separator(f"Adding to Radarr", space=False, border=False)
|
||||
util.separator("Adding to Radarr", space=False, border=False)
|
||||
logger.debug("")
|
||||
logger.debug(f"TMDb IDs: {tmdb_ids}")
|
||||
folder = options["folder"] if "folder" in options else self.root_folder_path
|
||||
|
@ -57,6 +62,25 @@ class Radarr:
|
|||
logger.info(f"Already in Radarr | {movie.tmdbId:<6} | {movie.title}")
|
||||
logger.info(f"{len(exists)} Movie{'s' if len(exists) > 1 else ''} already existing in Radarr")
|
||||
|
||||
for movie in invalid:
|
||||
if len(invalid) > 0:
|
||||
logger.info("")
|
||||
logger.info(f"Invalid TMDb ID | {movie}")
|
||||
for tmdb_id in invalid:
|
||||
logger.info(f"Invalid TMDb ID | {tmdb_id}")
|
||||
|
||||
def edit_tags(self, tmdb_ids, tags, apply_tags):
|
||||
logger.info("")
|
||||
logger.info(f"{apply_tags_translation[apply_tags].capitalize()} Radarr Tags: {tags}")
|
||||
|
||||
edited, not_exists = self.api.edit_multiple_movies(tmdb_ids, tags=tags, apply_tags=apply_tags)
|
||||
|
||||
if len(edited) > 0:
|
||||
logger.info("")
|
||||
for movie in edited:
|
||||
logger.info(f"Radarr Tags | {movie.title:<25} | {movie.tags}")
|
||||
logger.info(f"{len(edited)} Movie{'s' if len(edited) > 1 else ''} edited in Radarr")
|
||||
|
||||
if len(not_exists) > 0:
|
||||
logger.info("")
|
||||
for tmdb_id in not_exists:
|
||||
logger.info(f"TMDb ID Not in Radarr | {tmdb_id}")
|
||||
|
||||
|
|
|
@ -17,6 +17,11 @@ monitor_translation = {
|
|||
"latest": "latestSeason",
|
||||
"none": "none"
|
||||
}
|
||||
apply_tags_translation = {
|
||||
"": "add",
|
||||
"sync": "replace",
|
||||
"remove": "remove"
|
||||
}
|
||||
|
||||
class Sonarr:
|
||||
def __init__(self, params):
|
||||
|
@ -40,7 +45,7 @@ class Sonarr:
|
|||
|
||||
def add_tvdb(self, tvdb_ids, **options):
|
||||
logger.info("")
|
||||
util.separator(f"Adding to Sonarr", space=False, border=False)
|
||||
util.separator("Adding to Sonarr", space=False, border=False)
|
||||
logger.debug("")
|
||||
logger.debug(f"TVDb IDs: {tvdb_ids}")
|
||||
folder = options["folder"] if "folder" in options else self.root_folder_path
|
||||
|
@ -70,6 +75,24 @@ class Sonarr:
|
|||
logger.info(f"Already in Sonarr | {series.tvdbId:<6} | {series.title}")
|
||||
logger.info(f"{len(exists)} Series already existing in Sonarr")
|
||||
|
||||
for series in invalid:
|
||||
if len(invalid) > 0:
|
||||
for tvdb_id in invalid:
|
||||
logger.info("")
|
||||
logger.info(f"Invalid TVDb ID | {tvdb_id}")
|
||||
|
||||
def edit_tags(self, tvdb_ids, tags, apply_tags):
|
||||
logger.info("")
|
||||
logger.info(f"{apply_tags_translation[apply_tags].capitalize()} Sonarr Tags: {tags}")
|
||||
|
||||
edited, not_exists = self.api.edit_multiple_series(tvdb_ids, tags=tags, apply_tags=apply_tags)
|
||||
|
||||
if len(edited) > 0:
|
||||
logger.info("")
|
||||
logger.info(f"Invalid TVDb ID | {series}")
|
||||
for series in edited:
|
||||
logger.info(f"Radarr Tags | {series.title:<25} | {series.tags}")
|
||||
logger.info(f"{len(edited)} Series edited in Sonarr")
|
||||
|
||||
if len(not_exists) > 0:
|
||||
logger.info("")
|
||||
for tvdb_id in not_exists:
|
||||
logger.info(f"TVDb ID Not in Sonarr | {tvdb_id}")
|
||||
|
|
Loading…
Reference in a new issue