Fix for non_item_remove_label to always run when defined

It need's to run even when there's no collection items, to remove the labels.

Matches every movie/show that has the given label and is not in the collection and removes the label
This commit is contained in:
jz1 2024-04-24 19:20:36 +02:00
parent 62795840f7
commit ee4f832839
2 changed files with 16 additions and 10 deletions

View file

@ -885,6 +885,9 @@ def run_collection(config, library, metadata, requested_collections):
except NonExisting as e:
logger.warning(e)
library.status[str(mapping_name)]["status"] = "Ignored"
if builder.item_details:
no_items = True
builder.update_item_details(no_items)
except NotScheduled as e:
logger.info(e)
if str(e).endswith("and was deleted"):

View file

@ -3153,11 +3153,20 @@ class CollectionBuilder:
if not self.items:
raise Failed(f"Plex Error: No {self.Type} items found")
def update_item_details(self):
def update_item_details(self, no_items=False):
if (no_items and "non_item_remove_label" in self.item_details) or not no_items:
logger.info("")
logger.separator(f"Updating Metadata of the Items in {self.name} {self.Type}", space=False, border=False)
logger.info("")
if "non_item_remove_label" in self.item_details:
rk_compare = [item.ratingKey for item in self.items]
for non_item in self.library.search(label=self.item_details["non_item_remove_label"], libtype=self.builder_level):
if non_item.ratingKey not in rk_compare:
self.library.edit_tags("label", non_item, remove_tags=self.item_details["non_item_remove_label"])
if no_items:
return
add_tags = self.item_details["item_label"] if "item_label" in self.item_details else None
remove_tags = self.item_details["item_label.remove"] if "item_label.remove" in self.item_details else None
sync_tags = self.item_details["item_label.sync"] if "item_label.sync" in self.item_details else None
@ -3166,12 +3175,6 @@ class CollectionBuilder:
remove_genres = self.item_details["item_genre.remove"] if "item_genre.remove" in self.item_details else None
sync_genres = self.item_details["item_genre.sync"] if "item_genre.sync" in self.item_details else None
if "non_item_remove_label" in self.item_details:
rk_compare = [item.ratingKey for item in self.items]
for non_item in self.library.search(label=self.item_details["non_item_remove_label"], libtype=self.builder_level):
if non_item.ratingKey not in rk_compare:
self.library.edit_tags("label", non_item, remove_tags=self.item_details["non_item_remove_label"])
tmdb_paths = []
tvdb_paths = []
for item in self.items: