diff --git a/VERSION b/VERSION index fd46a54e..bd35fdca 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.18.0-develop14 +1.18.0-develop15 diff --git a/docs/home/kb.md b/docs/home/kb.md index 09a7c35f..f5e8f17c 100644 --- a/docs/home/kb.md +++ b/docs/home/kb.md @@ -8,12 +8,12 @@ This sections aims to answer the most commonly asked questions that users have. ### "How do I update to the latest version of Plex Meta Manager?" -[type this into your terminal] - ````{tab} OS X/Linux
+[type this into your terminal] + ``` cd /Users/mroche/Plex-Meta-Manager git pull @@ -21,13 +21,13 @@ source pmm-venv/bin/activate python -m pip install -r requirements.txt ``` -
- ```` ````{tab} Windows
+[type this into your terminal] + ``` cd C:\Users\mroche\Plex-Meta-Manager git pull @@ -35,29 +35,27 @@ git pull python -m pip install -r requirements.txt ``` -
- ```` ````{tab} Docker
+[type this into your terminal] + ``` docker pull meisnate12/plex-meta-manager ``` -
- ```` ### "How do I switch to the develop branch?" -[type this into your terminal] - ````{tab} OS X/Linux
+[type this into your terminal] + ``` cd /Users/mroche/Plex-Meta-Manager git checkout develop @@ -66,13 +64,13 @@ source pmm-venv/bin/activate python -m pip install -r requirements.txt ``` -
- ```` ````{tab} Windows
+[type this into your terminal] + ``` cd C:\Users\mroche\Plex-Meta-Manager git checkout develop @@ -81,18 +79,16 @@ git pull python -m pip install -r requirements.txt ``` -
- ```` ### "How do I switch to the nightly branch" -[type this into your terminal] - ````{tab} OS X/Linux
+[type this into your terminal] + ``` cd /Users/mroche/Plex-Meta-Manager git checkout nightly @@ -101,13 +97,13 @@ source pmm-venv/bin/activate python -m pip install -r requirements.txt ``` -
- ```` ````{tab} Windows
+[type this into your terminal] + ``` cd C:\Users\mroche\Plex-Meta-Manager git checkout nightly @@ -116,18 +112,16 @@ git pull python -m pip install -r requirements.txt ``` -
- ```` ### "How do I switch back to the master branch?" -[type this into your terminal] - ````{tab} OS X/Linux
+[type this into your terminal] + ``` cd /Users/mroche/Plex-Meta-Manager git checkout master @@ -136,13 +130,13 @@ source pmm-venv/bin/activate python -m pip install -r requirements.txt ``` -
- ```` ````{tab} Windows
+[type this into your terminal] + ``` cd C:\Users\mroche\Plex-Meta-Manager git checkout master @@ -151,8 +145,6 @@ git pull python -m pip install -r requirements.txt ``` -
- ```` ## Knowledgebase diff --git a/modules/builder.py b/modules/builder.py index fcc49599..90f335f6 100644 --- a/modules/builder.py +++ b/modules/builder.py @@ -452,7 +452,6 @@ class CollectionBuilder: else: raise Failed(str(e)) - if "delete_not_scheduled" in methods and not self.overlay: logger.debug("") logger.debug("Validating Method: delete_not_scheduled") @@ -2732,11 +2731,14 @@ class CollectionBuilder: items = self.library.get_filter_items(search_data[2]) previous = None for i, item in enumerate(items, 0): - if len(self.items) <= i or item.ratingKey != self.items[i].ratingKey: - text = f"after {util.item_title(previous)}" if previous else "to the beginning" - logger.info(f"Moving {util.item_title(item)} {text}") - self.library.moveItem(self.obj, item, previous) - previous = item + try: + if len(self.items) <= i or item.ratingKey != self.items[i].ratingKey: + text = f"after {util.item_title(previous)}" if previous else "to the beginning" + self.library.moveItem(self.obj, item, previous) + logger.info(f"Moving {util.item_title(item)} {text}") + previous = item + except Failed: + logger.error(f"Moving {util.item_title(item)} Failed") def sync_trakt_list(self): logger.info("") diff --git a/modules/overlays.py b/modules/overlays.py index 2e9fafdc..d782182e 100644 --- a/modules/overlays.py +++ b/modules/overlays.py @@ -2,7 +2,7 @@ import os, re, time from datetime import datetime from modules import plex, util, overlay from modules.builder import CollectionBuilder -from modules.util import Failed, NonExisting, NotScheduled +from modules.util import Failed, FilterFailed, NonExisting, NotScheduled from num2words import num2words from plexapi.exceptions import BadRequest from plexapi.video import Movie, Show, Season, Episode @@ -413,10 +413,16 @@ class Overlays: logger.info("") except NotScheduled as e: logger.info(e) + except FilterFailed: + pass except Failed as e: logger.stacktrace() logger.error(e) logger.info("") + except Exception as e: + logger.stacktrace() + logger.error(f"Unknown Error: {e}") + logger.info("") logger.separator(f"Overlay Operation for the {self.library.name} Library") logger.debug("") diff --git a/modules/plex.py b/modules/plex.py index 86ecf786..13481527 100644 --- a/modules/plex.py +++ b/modules/plex.py @@ -545,7 +545,11 @@ class Plex(Library): @retry(stop_max_attempt_number=6, wait_fixed=10000, retry_on_exception=util.retry_if_not_plex) def moveItem(self, obj, item, after): - obj.moveItem(item, after=after) + try: + obj.moveItem(item, after=after) + except (BadRequest, NotFound, Unauthorized) as e: + logger.error(e) + raise Failed("Move Failed") @retry(stop_max_attempt_number=6, wait_fixed=10000, retry_on_exception=util.retry_if_not_plex) def query(self, method): diff --git a/modules/util.py b/modules/util.py index ef6fb7b0..bf7012b6 100644 --- a/modules/util.py +++ b/modules/util.py @@ -56,7 +56,7 @@ def retry_if_not_failed(exception): return not isinstance(exception, Failed) def retry_if_not_plex(exception): - return not isinstance(exception, (BadRequest, NotFound, Unauthorized)) + return not isinstance(exception, (BadRequest, NotFound, Unauthorized, Failed)) days_alias = { "monday": 0, "mon": 0, "m": 0, diff --git a/plex_meta_manager.py b/plex_meta_manager.py index 4809848f..4e135575 100644 --- a/plex_meta_manager.py +++ b/plex_meta_manager.py @@ -123,7 +123,7 @@ from modules import util util.logger = logger from modules.builder import CollectionBuilder from modules.config import ConfigFile -from modules.util import Failed, NonExisting, NotScheduled, Deleted +from modules.util import Failed, FilterFailed, NonExisting, NotScheduled, Deleted def my_except_hook(exctype, value, tb): if issubclass(exctype, KeyboardInterrupt): @@ -719,6 +719,8 @@ def run_collection(config, library, metadata, requested_collections): library.status[str(mapping_name)]["status"] = "Skipped Invalid Library Type" else: library.status[str(mapping_name)]["status"] = "Not Scheduled" + except FilterFailed: + pass except Failed as e: library.notify(e, collection=mapping_name) logger.stacktrace()