Merge pull request #185 from meisnate12/develop

v1.7.2
pull/246/head v1.7.2
meisnate12 4 years ago committed by GitHub
commit d6336815b5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -1,5 +1,5 @@
# Plex Meta Manager # Plex Meta Manager
#### Version 1.7.1 #### Version 1.7.2
The original concept for Plex Meta Manager is [Plex Auto Collections](https://github.com/mza921/Plex-Auto-Collections), but this is rewritten from the ground up to be able to include a scheduler, metadata edits, multiple libraries, and logging. Plex Meta Manager is a Python 3 script that can be continuously run using YAML configuration files to update on a schedule the metadata of the movies, shows, and collections in your libraries as well as automatically build collections based on various methods all detailed in the wiki. Some collection examples that the script can automatically build and update daily include Plex Based Searches like actor, genre, or studio collections or Collections based on TMDb, IMDb, Trakt, TVDb, AniDB, or MyAnimeList lists and various other services. The original concept for Plex Meta Manager is [Plex Auto Collections](https://github.com/mza921/Plex-Auto-Collections), but this is rewritten from the ground up to be able to include a scheduler, metadata edits, multiple libraries, and logging. Plex Meta Manager is a Python 3 script that can be continuously run using YAML configuration files to update on a schedule the metadata of the movies, shows, and collections in your libraries as well as automatically build collections based on various methods all detailed in the wiki. Some collection examples that the script can automatically build and update daily include Plex Based Searches like actor, genre, or studio collections or Collections based on TMDb, IMDb, Trakt, TVDb, AniDB, or MyAnimeList lists and various other services.

@ -638,13 +638,13 @@ class CollectionBuilder:
prefix_list = [] prefix_list = []
if "exclude_prefix" in dict_methods and method_data[dict_methods["exclude_prefix"]]: if "exclude_prefix" in dict_methods and method_data[dict_methods["exclude_prefix"]]:
if isinstance(method_data[dict_methods["exclude_prefix"]], list): if isinstance(method_data[dict_methods["exclude_prefix"]], list):
prefix_list.extend(method_data[dict_methods["exclude_prefix"]]) prefix_list.extend([exclude for exclude in method_data[dict_methods["exclude_prefix"]] if exclude])
else: else:
prefix_list.append(str(method_data[dict_methods["exclude_prefix"]])) prefix_list.append(str(method_data[dict_methods["exclude_prefix"]]))
exact_list = [] exact_list = []
if "exclude" in dict_methods and method_data[dict_methods["exclude"]]: if "exclude" in dict_methods and method_data[dict_methods["exclude"]]:
if isinstance(method_data[dict_methods["exclude"]], list): if isinstance(method_data[dict_methods["exclude"]], list):
exact_list.extend(method_data[dict_methods["exclude"]]) exact_list.extend([exclude for exclude in method_data[dict_methods["exclude"]] if exclude])
else: else:
exact_list.append(str(method_data[dict_methods["exclude"]])) exact_list.append(str(method_data[dict_methods["exclude"]]))
if len(prefix_list) == 0 and len(exact_list) == 0: if len(prefix_list) == 0 and len(exact_list) == 0:
@ -1230,6 +1230,9 @@ class CollectionBuilder:
except BadRequest: except BadRequest:
logger.error(f"Detail: {image_method} failed to update {message}") logger.error(f"Detail: {image_method} failed to update {message}")
if len(self.posters) > 0:
logger.info("")
if len(self.posters) > 1: if len(self.posters) > 1:
logger.info(f"{len(self.posters)} posters found:") logger.info(f"{len(self.posters)} posters found:")
for p in self.posters: for p in self.posters:
@ -1254,7 +1257,8 @@ class CollectionBuilder:
elif "tmdb_show_details" in self.posters: set_image("tmdb_show_details", self.posters) elif "tmdb_show_details" in self.posters: set_image("tmdb_show_details", self.posters)
else: logger.info("No poster to update") else: logger.info("No poster to update")
logger.info("") if len(self.backgrounds) > 0:
logger.info("")
if len(self.backgrounds) > 1: if len(self.backgrounds) > 1:
logger.info(f"{len(self.backgrounds)} backgrounds found:") logger.info(f"{len(self.backgrounds)} backgrounds found:")

@ -677,7 +677,7 @@ class Config:
util.print_end(length, str(e)) util.print_end(length, str(e))
continue continue
new_genres = [genre.name for genre in tmdb_item.genres] new_genres = [genre.name for genre in tmdb_item.genres]
elif library.mass_genre_update == "omdb": elif library.mass_genre_update in ["omdb", "imdb"]:
if self.OMDb.limit is True: if self.OMDb.limit is True:
break break
if "imdb" not in ids: if "imdb" not in ids:

@ -12,7 +12,7 @@ from ruamel import yaml
logger = logging.getLogger("Plex Meta Manager") logger = logging.getLogger("Plex Meta Manager")
builders = ["plex_all", "plex_collection", "plex_collectionless", "plex_search",] builders = ["plex_all", "plex_collection", "plex_collectionless", "plex_search"]
search_translation = { search_translation = {
"audio_language": "audioLanguage", "audio_language": "audioLanguage",
"content_rating": "contentRating", "content_rating": "contentRating",
@ -685,8 +685,8 @@ class PlexAPI:
match = re.search("[Ss]\\d+[Ee]\\d+", episode_str) match = re.search("[Ss]\\d+[Ee]\\d+", episode_str)
if match: if match:
output = match.group(0)[1:].split("E" if "E" in match.group(0) else "e") output = match.group(0)[1:].split("E" if "E" in match.group(0) else "e")
episode_id = int(output[0]) season_id = int(output[0])
season_id = int(output[1]) episode_id = int(output[1])
logger.info(f"Updating episode S{episode_id}E{season_id} of {mapping_name}...") logger.info(f"Updating episode S{episode_id}E{season_id} of {mapping_name}...")
try: episode = item.episode(season=season_id, episode=episode_id) try: episode = item.episode(season=season_id, episode=episode_id)
except NotFound: logger.error(f"Metadata Error: episode {episode_id} of season {season_id} not found") except NotFound: logger.error(f"Metadata Error: episode {episode_id} of season {season_id} not found")

@ -93,7 +93,7 @@ class SonarrAPI:
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
quality_profile_id = self.get_profile_id(options["quality"], "quality_profile") if "quality" in options else self.quality_profile_id quality_profile_id = self.get_profile_id(options["quality"], "quality_profile") if "quality" in options else self.quality_profile_id
language_profile_id = self.get_profile_id(options["language"], "language_profile") if "quality" in options else self.quality_profile_id language_profile_id = self.get_profile_id(options["language"], "language_profile") if "quality" in options else self.language_profile_id
series = options["series"] if "series" in options else self.series_type series = options["series"] if "series" in options else self.series_type
season = options["season"] if "season" in options else self.season_folder season = options["season"] if "season" in options else self.season_folder
tags = options["tag"] if "tag" in options else self.tag tags = options["tag"] if "tag" in options else self.tag

@ -89,7 +89,7 @@ util.centered("| |_) | |/ _ \\ \\/ / | |\\/| |/ _ \\ __/ _` | | |\\/| |/ _` | '_
util.centered("| __/| | __/> < | | | | __/ || (_| | | | | | (_| | | | | (_| | (_| | __/ | ") util.centered("| __/| | __/> < | | | | __/ || (_| | | | | | (_| | | | | (_| | (_| | __/ | ")
util.centered("|_| |_|\\___/_/\\_\\ |_| |_|\\___|\\__\\__,_| |_| |_|\\__,_|_| |_|\\__,_|\\__, |\\___|_| ") util.centered("|_| |_|\\___/_/\\_\\ |_| |_|\\___|\\__\\__,_| |_| |_|\\__,_|_| |_|\\__,_|\\__, |\\___|_| ")
util.centered(" |___/ ") util.centered(" |___/ ")
util.centered(" Version: 1.7.1 ") util.centered(" Version: 1.7.2 ")
util.separator() util.separator()
if my_tests: if my_tests:

Loading…
Cancel
Save