diff --git a/modules/builder.py b/modules/builder.py index 45f49677..635290e6 100644 --- a/modules/builder.py +++ b/modules/builder.py @@ -1685,8 +1685,7 @@ class CollectionBuilder: if int(item.ratingKey) in rating_keys: rating_keys.remove(int(item.ratingKey)) if self.details["item_assets"]: - poster, background = self.library.update_item_from_assets(item) - self.library.upload_images(item, poster=poster, background=background, overlay=overlay) + 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) advance_edits = {} for method_name, method_data in self.item_details.items(): @@ -1818,48 +1817,50 @@ class CollectionBuilder: if background_image: self.backgrounds["asset_directory"] = background_image + poster = None if len(self.posters) > 1: logger.info(f"{len(self.posters)} posters found:") for p in self.posters: logger.info(f"Method: {p} Poster: {self.posters[p]}") + if "url_poster" in self.posters: poster = ImageData("url_poster", self.posters["url_poster"]) + elif "file_poster" in self.posters: poster = ImageData("file_poster", self.posters["file_poster"], is_url=False) + elif "tmdb_poster" in self.posters: poster = ImageData("tmdb_poster", self.posters["tmdb_poster"]) + elif "tmdb_profile" in self.posters: poster = ImageData("tmdb_poster", self.posters["tmdb_profile"]) + elif "tvdb_poster" in self.posters: poster = ImageData("tvdb_poster", self.posters["tvdb_poster"]) + elif "asset_directory" in self.posters: poster = self.posters["asset_directory"] + elif "tmdb_person" in self.posters: poster = ImageData("tmdb_person", self.posters["tmdb_person"]) + elif "tmdb_collection_details" in self.posters: poster = ImageData("tmdb_collection_details", self.posters["tmdb_collection_details"]) + elif "tmdb_actor_details" in self.posters: poster = ImageData("tmdb_actor_details", self.posters["tmdb_actor_details"]) + elif "tmdb_crew_details" in self.posters: poster = ImageData("tmdb_crew_details", self.posters["tmdb_crew_details"]) + elif "tmdb_director_details" in self.posters: poster = ImageData("tmdb_director_details", self.posters["tmdb_director_details"]) + elif "tmdb_producer_details" in self.posters: poster = ImageData("tmdb_producer_details", self.posters["tmdb_producer_details"]) + elif "tmdb_writer_details" in self.posters: poster = ImageData("tmdb_writer_details", self.posters["tmdb_writer_details"]) + elif "tmdb_movie_details" in self.posters: poster = ImageData("tmdb_movie_details", self.posters["tmdb_movie_details"]) + elif "tvdb_movie_details" in self.posters: poster = ImageData("tvdb_movie_details", self.posters["tvdb_movie_details"]) + elif "tvdb_show_details" in self.posters: poster = ImageData("tvdb_show_details", self.posters["tvdb_show_details"]) + elif "tmdb_show_details" in self.posters: poster = ImageData("tmdb_show_details", self.posters["tmdb_show_details"]) + else: + logger.info("No poster collection detail or asset folder found") + + background = None if len(self.backgrounds) > 1: logger.info(f"{len(self.backgrounds)} backgrounds found:") for b in self.backgrounds: logger.info(f"Method: {b} Background: {self.backgrounds[b]}") - poster = None - if "url_poster" in self.posters: poster = ImageData("url_poster", self.posters["url_poster"]) - elif "file_poster" in self.posters: poster = ImageData("file_poster", self.posters["file_poster"], is_url=False) - elif "tmdb_poster" in self.posters: poster = ImageData("tmdb_poster", self.posters["tmdb_poster"]) - elif "tmdb_profile" in self.posters: poster = ImageData("tmdb_poster", self.posters["tmdb_profile"]) - elif "tvdb_poster" in self.posters: poster = ImageData("tvdb_poster", self.posters["tvdb_poster"]) - elif "asset_directory" in self.posters: poster = self.posters["asset_directory"] - elif "tmdb_person" in self.posters: poster = ImageData("tmdb_person", self.posters["tmdb_person"]) - elif "tmdb_collection_details" in self.posters: poster = ImageData("tmdb_collection_details", self.posters["tmdb_collection_details"]) - elif "tmdb_actor_details" in self.posters: poster = ImageData("tmdb_actor_details", self.posters["tmdb_actor_details"]) - elif "tmdb_crew_details" in self.posters: poster = ImageData("tmdb_crew_details", self.posters["tmdb_crew_details"]) - elif "tmdb_director_details" in self.posters: poster = ImageData("tmdb_director_details", self.posters["tmdb_director_details"]) - elif "tmdb_producer_details" in self.posters: poster = ImageData("tmdb_producer_details", self.posters["tmdb_producer_details"]) - elif "tmdb_writer_details" in self.posters: poster = ImageData("tmdb_writer_details", self.posters["tmdb_writer_details"]) - elif "tmdb_movie_details" in self.posters: poster = ImageData("tmdb_movie_details", self.posters["tmdb_movie_details"]) - elif "tvdb_movie_details" in self.posters: poster = ImageData("tvdb_movie_details", self.posters["tvdb_movie_details"]) - elif "tvdb_show_details" in self.posters: poster = ImageData("tvdb_show_details", self.posters["tvdb_show_details"]) - elif "tmdb_show_details" in self.posters: poster = ImageData("tmdb_show_details", self.posters["tmdb_show_details"]) - else: logger.info("No poster to update") - - background = None - if "url_background" in self.backgrounds: background = ImageData("url_background", self.backgrounds["url_background"], is_poster=False) - elif "file_background" in self.backgrounds: background = ImageData("file_background", self.backgrounds["file_background"], is_poster=False, is_url=False) - elif "tmdb_background" in self.backgrounds: background = ImageData("tmdb_background", self.backgrounds["tmdb_background"], is_poster=False) - elif "tvdb_background" in self.backgrounds: background = ImageData("tvdb_background", self.backgrounds["tvdb_background"], is_poster=False) - elif "asset_directory" in self.backgrounds: background = self.backgrounds["asset_directory"] - elif "tmdb_collection_details" in self.backgrounds: background = ImageData("tmdb_collection_details", self.backgrounds["tmdb_collection_details"], is_poster=False) - elif "tmdb_movie_details" in self.backgrounds: background = ImageData("tmdb_movie_details", self.backgrounds["tmdb_movie_details"], is_poster=False) - elif "tvdb_movie_details" in self.backgrounds: background = ImageData("tvdb_movie_details", self.backgrounds["tvdb_movie_details"], is_poster=False) - elif "tvdb_show_details" in self.backgrounds: background = ImageData("tvdb_show_details", self.backgrounds["tvdb_show_details"], is_poster=False) - elif "tmdb_show_details" in self.backgrounds: background = ImageData("tmdb_show_details", self.backgrounds["tmdb_show_details"], is_poster=False) - else: logger.info("No background to update") + if "url_background" in self.backgrounds: background = ImageData("url_background", self.backgrounds["url_background"], is_poster=False) + elif "file_background" in self.backgrounds: background = ImageData("file_background", self.backgrounds["file_background"], is_poster=False, is_url=False) + elif "tmdb_background" in self.backgrounds: background = ImageData("tmdb_background", self.backgrounds["tmdb_background"], is_poster=False) + elif "tvdb_background" in self.backgrounds: background = ImageData("tvdb_background", self.backgrounds["tvdb_background"], is_poster=False) + elif "asset_directory" in self.backgrounds: background = self.backgrounds["asset_directory"] + elif "tmdb_collection_details" in self.backgrounds: background = ImageData("tmdb_collection_details", self.backgrounds["tmdb_collection_details"], is_poster=False) + elif "tmdb_movie_details" in self.backgrounds: background = ImageData("tmdb_movie_details", self.backgrounds["tmdb_movie_details"], is_poster=False) + elif "tvdb_movie_details" in self.backgrounds: background = ImageData("tvdb_movie_details", self.backgrounds["tvdb_movie_details"], is_poster=False) + elif "tvdb_show_details" in self.backgrounds: background = ImageData("tvdb_show_details", self.backgrounds["tvdb_show_details"], is_poster=False) + elif "tmdb_show_details" in self.backgrounds: background = ImageData("tmdb_show_details", self.backgrounds["tmdb_show_details"], is_poster=False) + else: + logger.info("No background collection detail or asset folder found") if poster or background: self.library.upload_images(self.obj, poster=poster, background=background) diff --git a/modules/meta.py b/modules/meta.py index 2edfff07..c102001f 100644 --- a/modules/meta.py +++ b/modules/meta.py @@ -17,7 +17,7 @@ class Metadata: logger.info("") logger.info(f"Loading Metadata {file_type}: {path}") def get_dict(attribute, attr_data, check_list=None): - if attribute in attr_data: + if attr_data and attribute in attr_data: if attr_data[attribute]: if isinstance(attr_data[attribute], dict): if check_list: diff --git a/modules/plex.py b/modules/plex.py index 724438e5..113288b5 100644 --- a/modules/plex.py +++ b/modules/plex.py @@ -764,8 +764,9 @@ class Plex: logger.info(f"Detail: {attr.capitalize()} {remove} removed") return updated - def update_item_from_assets(self, item): + def update_item_from_assets(self, item, overlay=None): name = os.path.basename(os.path.dirname(item.locations[0]) if self.is_movie else item.locations[0]) + found_one = False for ad in self.asset_directory: poster = None background = None @@ -779,6 +780,7 @@ class Plex: item_dir = os.path.abspath(matches[0]) if item_dir is None: continue + found_one = True poster_filter = os.path.join(item_dir, "poster.*") background_filter = os.path.join(item_dir, "background.*") else: @@ -790,6 +792,8 @@ class Plex: matches = glob.glob(background_filter) if len(matches) > 0: background = ImageData("asset_directory", os.path.abspath(matches[0]), prefix=f"{item.title}'s ", is_poster=False, is_url=False) + if poster or background: + self.upload_images(item, poster=poster, background=background, overlay=overlay) if self.is_show: for season in self.query(item.seasons): if item_dir: @@ -809,9 +813,8 @@ class Plex: if len(matches) > 0: episode_poster = ImageData("asset_directory", os.path.abspath(matches[0]), prefix=f"{item.title} {episode.seasonEpisode.upper()}'s ", is_url=False) self.upload_images(episode, poster=episode_poster) - if poster or background: - return poster, background - return None, None + if not found_one: + logger.error(f"Asset Warning: No asset folder found called '{name}'") def find_collection_assets(self, item, name=None): if name is None: diff --git a/plex_meta_manager.py b/plex_meta_manager.py index f49a685a..dbb0dd7b 100644 --- a/plex_meta_manager.py +++ b/plex_meta_manager.py @@ -192,8 +192,7 @@ def update_libraries(config): poster, background = library.find_collection_assets(col) library.upload_images(col, poster=poster, background=background) for item in library.get_all(): - poster, background = library.update_item_from_assets(item) - library.upload_images(item, poster=poster, background=background) + library.update_item_from_assets(item) logger.removeHandler(library_handler)