diff --git a/VERSION b/VERSION index 70e0fd49..0a0c8a58 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.19.1-develop34 +1.19.1-develop35 diff --git a/modules/config.py b/modules/config.py index bdc7ad6f..ce328ff0 100644 --- a/modules/config.py +++ b/modules/config.py @@ -158,7 +158,6 @@ class ConfigFile: self.collection_only = attrs["collection_only"] if "collection_only" in attrs else False self.operations_only = attrs["operations_only"] if "operations_only" in attrs else False self.overlays_only = attrs["overlays_only"] if "overlays_only" in attrs else False - self.libraries_first = attrs["libraries_first"] if "libraries_first" in attrs else False self.env_plex_url = attrs["plex_url"] if "plex_url" in attrs else "" self.env_plex_token = attrs["plex_token"] if "plex_token" in attrs else "" current_time = datetime.now() @@ -400,10 +399,8 @@ class ConfigFile: logger.warning(options) return default - default_run = ["overlays", "operations", "metadata"] if self.libraries_first else ["metadata", "overlays", "operations"] - self.general = { - "run_order": check_for_attribute(self.data, "run_order", parent="settings", var_type="comma_list", test_list=run_order_options, default=default_run), + "run_order": check_for_attribute(self.data, "run_order", parent="settings", var_type="comma_list", test_list=run_order_options, default=["operations", "metadata", "overlays"]), "cache": check_for_attribute(self.data, "cache", parent="settings", var_type="bool", default=True), "cache_expiration": check_for_attribute(self.data, "cache_expiration", parent="settings", var_type="int", default=60, int_min=1), "asset_directory": check_for_attribute(self.data, "asset_directory", parent="settings", var_type="list_path", default_is_none=True), diff --git a/plex_meta_manager.py b/plex_meta_manager.py index cdc02043..71fadda2 100644 --- a/plex_meta_manager.py +++ b/plex_meta_manager.py @@ -38,7 +38,6 @@ arguments = { "run-collections": {"args": ["rc", "cl", "collection", "collections", "run-collection"], "type": "str", "help": "Process only specified collections (pipe-separated list '|')"}, "run-libraries": {"args": ["rl", "l", "library", "libraries", "run-library"], "type": "str", "help": "Process only specified libraries (pipe-separated list '|')"}, "run-metadata-files": {"args": ["rm", "m", "metadata", "metadata-files"], "type": "str", "help": "Process only specified Metadata files (pipe-separated list '|')"}, - "libraries-first": {"args": ["lf", "library-first"], "type": "bool", "help": argparse.SUPPRESS}, "ignore-schedules": {"args": "is", "type": "bool", "help": "Run ignoring collection schedules"}, "ignore-ghost": {"args": "ig", "type": "bool", "help": "Run ignoring ghost logging"}, "delete-collections": {"args": ["dc", "delete", "delete-collection"], "type": "bool", "help": "Deletes all Collections in the Plex Library before running"}, @@ -269,7 +268,6 @@ def start(attrs): attrs["playlist_only"] = run_args["playlists-only"] attrs["operations_only"] = run_args["operations-only"] attrs["overlays_only"] = run_args["overlays-only"] - attrs["libraries_first"] = run_args["libraries-first"] attrs["plex_url"] = plex_url attrs["plex_token"] = plex_token logger.separator(debug=True) @@ -578,60 +576,61 @@ def run_libraries(config): library.map_guids(temp_items) library_status[library.name]["Library Loading and Mapping"] = str(datetime.now() - time_start).split('.')[0] + runs = { + "metadata": all([not run_args[x] for x in ["operations-only", "overlays-only", "playlists-only"]]), + "operations": all([not run_args[x] for x in ["tests", "collections-only", "overlays-only", "playlists-only"]]), + "overlays": all([not run_args[x] for x in ["tests", "collections-only", "operations-only", "playlists-only"]]), + } for run_type in library.run_order: - if run_type == "metadata": - if not run_args["operations-only"] and not run_args["overlays-only"] and not run_args["playlists-only"]: - time_start = datetime.now() - for images in library.images_files: - images_name = images.get_file_name() - if config.requested_metadata_files and images_name not in config.requested_metadata_files: - logger.info("") - logger.separator(f"Skipping {images_name} Images File") - continue + if run_type == "metadata" and runs[run_type]: + time_start = datetime.now() + for images in library.images_files: + images_name = images.get_file_name() + if config.requested_metadata_files and images_name not in config.requested_metadata_files: logger.info("") - logger.separator(f"Running {images_name} Images File\n{images.path}") - if not run_args["tests"] and not run_args["resume"] and not run_args["collections-only"]: - try: - images.update_metadata() - except Failed as e: - library.notify(e) - logger.error(e) - library_status[library.name]["Library Images Files"] = str(datetime.now() - time_start).split('.')[0] + logger.separator(f"Skipping {images_name} Images File") + continue + logger.info("") + logger.separator(f"Running {images_name} Images File\n{images.path}") + if not run_args["tests"] and not run_args["resume"] and not run_args["collections-only"]: + try: + images.update_metadata() + except Failed as e: + library.notify(e) + logger.error(e) + library_status[library.name]["Library Images Files"] = str(datetime.now() - time_start).split('.')[0] - time_start = datetime.now() - for metadata in library.metadata_files: - metadata_name = metadata.get_file_name() - if config.requested_metadata_files and metadata_name not in config.requested_metadata_files: - logger.info("") - logger.separator(f"Skipping {metadata_name} Metadata File") - continue + time_start = datetime.now() + for metadata in library.metadata_files: + metadata_name = metadata.get_file_name() + if config.requested_metadata_files and metadata_name not in config.requested_metadata_files: logger.info("") - logger.separator(f"Running {metadata_name} Metadata File\n{metadata.path}") - if not run_args["tests"] and not run_args["resume"] and not run_args["collections-only"]: - try: - metadata.update_metadata() - except Failed as e: - library.notify(e) - logger.error(e) - collections_to_run = metadata.get_collections(config.requested_collections) - if run_args["resume"] and run_args["resume"] not in collections_to_run: - logger.info("") - logger.warning(f"Collection: {run_args['resume']} not in Metadata File: {metadata.path}") - continue - if collections_to_run: - logger.info("") - logger.separator(f"{'Test ' if run_args['tests'] else ''}Collections") - # logger.remove_library_handler(library.mapping_name) - run_collection(config, library, metadata, collections_to_run) - # logger.re_add_library_handler(library.mapping_name) - library_status[library.name]["Library Metadata Files"] = str(datetime.now() - time_start).split('.')[0] - elif run_type == "overlays": - if not run_args["tests"] and not run_args["collections-only"] and not run_args["playlists-only"] and not config.requested_metadata_files and not run_args["overlays-only"] and library.library_operation: - library_status[library.name]["Library Operations"] = library.Operations.run_operations() - elif run_type == "operations": - if not run_args["tests"] and not run_args["collections-only"] and not run_args["playlists-only"] and not config.requested_metadata_files and not run_args["operations-only"] and (library.overlay_files or library.remove_overlays): - library_status[library.name]["Library Overlays"] = library.Overlays.run_overlays() - + logger.separator(f"Skipping {metadata_name} Metadata File") + continue + logger.info("") + logger.separator(f"Running {metadata_name} Metadata File\n{metadata.path}") + if not run_args["tests"] and not run_args["resume"] and not run_args["collections-only"]: + try: + metadata.update_metadata() + except Failed as e: + library.notify(e) + logger.error(e) + collections_to_run = metadata.get_collections(config.requested_collections) + if run_args["resume"] and run_args["resume"] not in collections_to_run: + logger.info("") + logger.warning(f"Collection: {run_args['resume']} not in Metadata File: {metadata.path}") + continue + if collections_to_run: + logger.info("") + logger.separator(f"{'Test ' if run_args['tests'] else ''}Collections") + # logger.remove_library_handler(library.mapping_name) + run_collection(config, library, metadata, collections_to_run) + # logger.re_add_library_handler(library.mapping_name) + library_status[library.name]["Library Metadata Files"] = str(datetime.now() - time_start).split('.')[0] + elif run_type == "operations" and runs[run_type] and not config.requested_metadata_files and library.library_operation: + library_status[library.name]["Library Operations"] = library.Operations.run_operations() + elif run_type == "overlays" and runs[run_type] and not config.requested_metadata_files and (library.overlay_files or library.remove_overlays): + library_status[library.name]["Library Overlays"] = library.Overlays.run_overlays() #logger.remove_library_handler(library.mapping_name) except Exception as e: library.notify(e)