diff --git a/README.md b/README.md index 2800363e..83e627c4 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,22 @@ Plex Meta Manager is an open source Python 3 project that has been designed to ease the creation and maintenance of metadata, collections, and playlists within a Plex Media Server. The script is designed to be run continuously and be able to update information based on sources outside your plex environment. Plex Meta Manager supports Movie/TV/Music libraries and Playlists. +## What Can Plex-Meta-Manager Do? + +Plex Meta Manager can + +1. Create and maintain collections in Plex libraries using external lists, Plex searches, or filters. + +2. Create, maintain, and share playlists on Plex servers using the same or similar criteria. + +3. Manage metadata [artwork, titles, summaries, release year, etc.] for anything on your Plex server. + +4. Add overlays to item artwork to display various details [ratings, resolution, edition, etc.]. + +5. Send missing items from external lists [for example the IMDB 250] to Radarr or Sonarr for download. + +6. and more. + ## Getting Started These are the high-level steps you must take to get Plex Meta Manager up and running: diff --git a/VERSION b/VERSION index 7b2e4a33..085d464d 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.18.3-develop57 +1.18.3-develop58 diff --git a/docs/home/environmental.md b/docs/home/environmental.md index 8fd7f668..138b937d 100644 --- a/docs/home/environmental.md +++ b/docs/home/environmental.md @@ -297,7 +297,7 @@ docker run -it -v "X:\Media\Plex Meta Manager\config:/config:rw" meisnate12/plex ### Timeout -Change the main Plex Meta Manager timeout. This timeout is overwritten by those in your config file for those services. +Change the timeout for all non-Plex services (such as TMDb, Radarr, and Trakt). This is overwritten by any timeouts mentioned for specific services in the Configuration File. diff --git a/docs/index.md b/docs/index.md index 5493496f..aa237033 100644 --- a/docs/index.md +++ b/docs/index.md @@ -31,7 +31,6 @@ Plex Meta Manager can 6. and more. - ## Getting Started These are the high-level steps you must take to get Plex Meta Manager up and running: diff --git a/modules/builder.py b/modules/builder.py index 2bae6214..7c9e4694 100644 --- a/modules/builder.py +++ b/modules/builder.py @@ -1,4 +1,5 @@ import os, re, time +from arrapi import ArrException from datetime import datetime from modules import anidb, anilist, flixpatrol, icheckmovies, imdb, letterboxd, mal, plex, radarr, reciperr, sonarr, tautulli, tmdb, trakt, tvdb, mdblist, util from modules.util import Failed, FilterFailed, NonExisting, NotScheduled, NotScheduledRange, Deleted @@ -2496,11 +2497,17 @@ class CollectionBuilder: added_to_radarr += len(added) except Failed as e: logger.error(e) + except ArrException as e: + logger.stacktrace() + logger.error(f"Arr Error: {e}") if "item_radarr_tag" in self.item_details: try: self.library.Radarr.edit_tags(missing_tmdb_ids, self.item_details["item_radarr_tag"], self.item_details["apply_tags"]) except Failed as e: logger.error(e) + except ArrException as e: + logger.stacktrace() + logger.error(f"Arr Error: {e}") if self.run_again: self.run_again_movies.extend(missing_tmdb_ids) if len(filtered_movies_with_names) > 0 and self.do_report: @@ -2541,11 +2548,17 @@ class CollectionBuilder: added_to_sonarr += len(added) except Failed as e: logger.error(e) + except ArrException as e: + logger.stacktrace() + logger.error(f"Arr Error: {e}") if "item_sonarr_tag" in self.item_details: try: self.library.Sonarr.edit_tags(missing_tvdb_ids, self.item_details["item_sonarr_tag"], self.item_details["apply_tags"]) except Failed as e: logger.error(e) + except ArrException as e: + logger.stacktrace() + logger.error(f"Arr Error: {e}") if self.run_again: self.run_again_shows.extend(missing_tvdb_ids) if len(filtered_shows_with_names) > 0 and self.do_report: diff --git a/modules/library.py b/modules/library.py index cceccf8c..340be284 100644 --- a/modules/library.py +++ b/modules/library.py @@ -281,7 +281,7 @@ class Library(ABC): return image_path @abstractmethod - def item_posters(self, item): + def item_posters(self, item, providers=None): pass @abstractmethod diff --git a/modules/operations.py b/modules/operations.py index c8404b74..9550113e 100644 --- a/modules/operations.py +++ b/modules/operations.py @@ -322,6 +322,8 @@ class Operations: elif tvdb_item and self.library.mass_genre_update == "tvdb": new_genres = tvdb_item.genres elif anidb_item and self.library.mass_genre_update in anidb.weights: + logger.trace(anidb_item.main_title) + logger.trace(anidb_item.tags) new_genres = [str(t).title() for t, w in anidb_item.tags.items() if w >= anidb.weights[self.library.mass_genre_update]] elif mal_item and self.library.mass_genre_update == "mal": new_genres = mal_item.genres @@ -514,7 +516,11 @@ class Operations: self.library.background_update(item, new_background, tmdb=tmdb_item.backdrop_url if tmdb_item else None) if self.library.is_show: - real_show = tmdb_item.load_show() if tmdb_item else None + real_show = None + try: + real_show = tmdb_item.load_show() if tmdb_item else None + except Failed as e: + logger.error(e) tmdb_seasons = {s.season_number: s for s in real_show.seasons} if real_show else {} for season in self.library.query(item.seasons): try: diff --git a/modules/overlays.py b/modules/overlays.py index b2d53865..587319df 100644 --- a/modules/overlays.py +++ b/modules/overlays.py @@ -171,7 +171,7 @@ class Overlays: else: reset_list = [] try: - new_backup = self.library.item_posters(item) + new_backup = self.library.item_posters(item, providers=reset_list) except Failed as e: if any(r in reset_list for r in ["plex", "tmdb"]): logger.error(e) @@ -339,7 +339,6 @@ class Overlays: new_poster.save(temp, exif=exif_tags) self.library.upload_poster(item, temp) self.library.edit_tags("label", item, add_tags=["Overlay"], do_print=False) - self.library.reload(item, force=True) poster_compare = poster.compare if poster else item.thumb logger.info(f"{item_title[:60]:<60} | Overlays Applied: {', '.join(over_names)}") except (OSError, BadRequest, SyntaxError) as e: