mirror of
https://github.com/meisnate12/Plex-Meta-Manager
synced 2024-11-26 06:20:23 +00:00
consolidate collection webhooks
This commit is contained in:
parent
aebe78799f
commit
f8e51c361c
3 changed files with 31 additions and 26 deletions
|
@ -87,8 +87,7 @@ ignored_details = [
|
|||
"smart_filter", "smart_label", "smart_url", "run_again", "schedule", "sync_mode", "template", "test",
|
||||
"tmdb_person", "build_collection", "collection_order", "collection_level", "validate_builders", "collection_name"
|
||||
]
|
||||
notification_details = ["collection_creation_webhooks", "collection_addition_webhooks", "collection_removal_webhooks"]
|
||||
details = ["collection_mode", "collection_order", "collection_level", "collection_minimum", "label"] + boolean_details + string_details + notification_details
|
||||
details = ["collection_changes_webhooks", "collection_mode", "collection_order", "collection_level", "collection_minimum", "label"] + boolean_details + string_details
|
||||
collectionless_details = ["collection_order", "plex_collectionless", "label", "label_sync_mode", "test"] + \
|
||||
poster_details + background_details + summary_details + string_details
|
||||
item_bool_details = ["item_assets", "revert_overlay", "item_lock_background", "item_lock_poster", "item_lock_title", "item_refresh"]
|
||||
|
@ -183,9 +182,7 @@ class CollectionBuilder:
|
|||
"create_asset_folders": self.library.create_asset_folders,
|
||||
"delete_below_minimum": self.library.delete_below_minimum,
|
||||
"delete_not_scheduled": self.library.delete_not_scheduled,
|
||||
"collection_creation_webhooks": self.library.collection_creation_webhooks,
|
||||
"collection_addition_webhooks": self.library.collection_addition_webhooks,
|
||||
"collection_removal_webhooks": self.library.collection_removal_webhooks,
|
||||
"collection_changes_webhooks": self.library.collection_changes_webhooks
|
||||
}
|
||||
self.item_details = {}
|
||||
self.radarr_details = {}
|
||||
|
@ -748,7 +745,7 @@ class CollectionBuilder:
|
|||
self.details["label.sync"] = util.get_list(method_data) if method_data else []
|
||||
else:
|
||||
self.details[method_final] = util.get_list(method_data) if method_data else []
|
||||
elif method_name in notification_details:
|
||||
elif method_name == "collection_changes_webhooks":
|
||||
self.details[method_name] = util.parse(method_name, method_data, datatype="list")
|
||||
elif method_name in boolean_details:
|
||||
default = self.details[method_name] if method_name in self.details else None
|
||||
|
@ -1596,7 +1593,7 @@ class CollectionBuilder:
|
|||
else:
|
||||
self.library.alter_collection(current, name, smart_label_collection=self.smart_label_collection)
|
||||
amount_added += 1
|
||||
if self.details["collection_addition_webhooks"]:
|
||||
if self.details["collection_changes_webhooks"]:
|
||||
if self.library.is_movie and current.ratingKey in self.library.movie_rating_key_map:
|
||||
add_id = self.library.movie_rating_key_map[current.ratingKey]
|
||||
elif self.library.is_show and current.ratingKey in self.library.show_rating_key_map:
|
||||
|
@ -1620,7 +1617,7 @@ class CollectionBuilder:
|
|||
self.library.reload(item)
|
||||
logger.info(f"{self.name} Collection | - | {self.item_title(item)}")
|
||||
self.library.alter_collection(item, self.name, smart_label_collection=self.smart_label_collection, add=False)
|
||||
if self.details["collection_removal_webhooks"]:
|
||||
if self.details["collection_changes_webhooks"]:
|
||||
if self.library.is_movie and item.ratingKey in self.library.movie_rating_key_map:
|
||||
remove_id = self.library.movie_rating_key_map[item.ratingKey]
|
||||
elif self.library.is_show and item.ratingKey in self.library.show_rating_key_map:
|
||||
|
@ -2147,17 +2144,12 @@ class CollectionBuilder:
|
|||
previous = key
|
||||
|
||||
def send_notifications(self):
|
||||
if self.obj and (
|
||||
(self.details["collection_creation_webhooks"] and self.created) or
|
||||
(self.details["collection_addition_webhooks"] and len(self.notification_additions) > 0) or
|
||||
(self.details["collection_removal_webhooks"] and len(self.notification_removals) > 0)
|
||||
):
|
||||
if self.obj and self.details["collection_changes_webhooks"] and \
|
||||
(self.created or len(self.notification_additions) > 0 or len(self.notification_removals) > 0):
|
||||
self.obj.reload()
|
||||
try:
|
||||
self.library.Webhooks.collection_hooks(
|
||||
self.details["collection_creation_webhooks"] +
|
||||
self.details["collection_addition_webhooks"] +
|
||||
self.details["collection_removal_webhooks"],
|
||||
self.details["collection_changes_webhooks"],
|
||||
self.obj,
|
||||
created=self.created,
|
||||
additions=self.notification_additions,
|
||||
|
|
|
@ -84,9 +84,28 @@ class Config:
|
|||
replace_attr(new_config["libraries"][library], "show_filtered", "plex")
|
||||
replace_attr(new_config["libraries"][library], "show_missing", "plex")
|
||||
replace_attr(new_config["libraries"][library], "save_missing", "plex")
|
||||
if new_config["libraries"][library] and "webhooks" in new_config["libraries"][library] and "collection_changes" not in new_config["libraries"][library]["webhooks"]:
|
||||
changes = []
|
||||
def hooks(attr):
|
||||
if attr in new_config["libraries"][library]["webhooks"]:
|
||||
changes.extend([w for w in util.get_list(new_config["libraries"][library]["webhooks"].pop(attr), split=False) if w not in changes])
|
||||
hooks("collection_creation")
|
||||
hooks("collection_addition")
|
||||
hooks("collection_removal")
|
||||
new_config["libraries"][library]["webhooks"]["collection_changes"] = changes if changes else None
|
||||
if "libraries" in new_config: new_config["libraries"] = new_config.pop("libraries")
|
||||
if "settings" in new_config: new_config["settings"] = new_config.pop("settings")
|
||||
if "webhooks" in new_config: new_config["webhooks"] = new_config.pop("webhooks")
|
||||
if "webhooks" in new_config:
|
||||
temp = new_config.pop("webhooks")
|
||||
changes = []
|
||||
def hooks(attr):
|
||||
if attr in temp:
|
||||
changes.extend([w for w in util.get_list(temp.pop(attr), split=False) if w not in changes])
|
||||
hooks("collection_creation")
|
||||
hooks("collection_addition")
|
||||
hooks("collection_removal")
|
||||
temp["collection_changes"] = changes if changes else None
|
||||
new_config["webhooks"] = temp
|
||||
if "plex" in new_config: new_config["plex"] = new_config.pop("plex")
|
||||
if "tmdb" in new_config: new_config["tmdb"] = new_config.pop("tmdb")
|
||||
if "tautulli" in new_config: new_config["tautulli"] = new_config.pop("tautulli")
|
||||
|
@ -215,9 +234,7 @@ class Config:
|
|||
"error": check_for_attribute(self.data, "error", parent="webhooks", var_type="list", default_is_none=True),
|
||||
"run_start": check_for_attribute(self.data, "run_start", parent="webhooks", var_type="list", default_is_none=True),
|
||||
"run_end": check_for_attribute(self.data, "run_end", parent="webhooks", var_type="list", default_is_none=True),
|
||||
"collection_creation": check_for_attribute(self.data, "collection_creation", parent="webhooks", var_type="list", default_is_none=True),
|
||||
"collection_addition": check_for_attribute(self.data, "collection_addition", parent="webhooks", var_type="list", default_is_none=True),
|
||||
"collection_removal": check_for_attribute(self.data, "collection_removal", parent="webhooks", var_type="list", default_is_none=True),
|
||||
"collection_changes": check_for_attribute(self.data, "collection_changes", parent="webhooks", var_type="list", default_is_none=True)
|
||||
}
|
||||
if self.general["cache"]:
|
||||
util.separator()
|
||||
|
@ -429,9 +446,7 @@ class Config:
|
|||
params["delete_unmanaged_collections"] = check_for_attribute(lib, "delete_unmanaged_collections", parent="settings", var_type="bool", default=False, do_print=False, save=False)
|
||||
params["delete_collections_with_less"] = check_for_attribute(lib, "delete_collections_with_less", parent="settings", var_type="int", default_is_none=True, do_print=False, save=False)
|
||||
params["error_webhooks"] = check_for_attribute(lib, "error", parent="webhooks", var_type="list", default=self.webhooks["error"], do_print=False, save=False, default_is_none=True)
|
||||
params["collection_creation_webhooks"] = check_for_attribute(lib, "collection_creation", parent="webhooks", var_type="list", default=self.webhooks["collection_creation"], do_print=False, save=False, default_is_none=True)
|
||||
params["collection_addition_webhooks"] = check_for_attribute(lib, "collection_addition", parent="webhooks", var_type="list", default=self.webhooks["collection_addition"], do_print=False, save=False, default_is_none=True)
|
||||
params["collection_removal_webhooks"] = check_for_attribute(lib, "collection_removal", parent="webhooks", var_type="list", default=self.webhooks["collection_removal"], do_print=False, save=False, default_is_none=True)
|
||||
params["collection_changes_webhooks"] = check_for_attribute(lib, "collection_creation", parent="webhooks", var_type="list", default=self.webhooks["collection_changes"], do_print=False, save=False, default_is_none=True)
|
||||
params["assets_for_all"] = check_for_attribute(lib, "assets_for_all", parent="settings", var_type="bool", default=self.general["assets_for_all"], do_print=False, save=False)
|
||||
params["mass_genre_update"] = check_for_attribute(lib, "mass_genre_update", test_list=mass_update_options, default_is_none=True, save=False, do_print=False)
|
||||
params["mass_audience_rating_update"] = check_for_attribute(lib, "mass_audience_rating_update", test_list=mass_update_options, default_is_none=True, save=False, do_print=False)
|
||||
|
|
|
@ -63,9 +63,7 @@ class Library(ABC):
|
|||
self.radarr_add_all = params["radarr_add_all"]
|
||||
self.sonarr_add_all = params["sonarr_add_all"]
|
||||
self.error_webhooks = params["error_webhooks"]
|
||||
self.collection_creation_webhooks = params["collection_creation_webhooks"]
|
||||
self.collection_addition_webhooks = params["collection_addition_webhooks"]
|
||||
self.collection_removal_webhooks = params["collection_removal_webhooks"]
|
||||
self.collection_changes_webhooks = params["collection_changes_webhooks"]
|
||||
self.split_duplicates = params["split_duplicates"] # TODO: Here or just in Plex?
|
||||
self.clean_bundles = params["plex"]["clean_bundles"] # TODO: Here or just in Plex?
|
||||
self.empty_trash = params["plex"]["empty_trash"] # TODO: Here or just in Plex?
|
||||
|
|
Loading…
Reference in a new issue