diff --git a/VERSION b/VERSION index c7d11a12..f516d6e5 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.18.2-develop10 +1.18.2-develop11 diff --git a/modules/library.py b/modules/library.py index 828e58f2..329596e7 100644 --- a/modules/library.py +++ b/modules/library.py @@ -279,8 +279,7 @@ class Library(ABC): self.report_data[collection][other] = [] self.report_data[collection][other].append(title) - with open(self.report_path, "w"): pass - yaml = YAML(self.report_path) + yaml = YAML(self.report_path, start_empty=True) yaml.data = self.report_data yaml.save() diff --git a/modules/util.py b/modules/util.py index 18674465..ff69d5e5 100644 --- a/modules/util.py +++ b/modules/util.py @@ -931,7 +931,7 @@ def get_system_fonts(): return system_fonts class YAML: - def __init__(self, path=None, input_data=None, check_empty=False, create=False): + def __init__(self, path=None, input_data=None, check_empty=False, create=False, start_empty=False): self.path = path self.input_data = input_data self.yaml = ruamel.yaml.YAML() @@ -940,7 +940,7 @@ class YAML: if input_data: self.data = self.yaml.load(input_data) else: - if create and not os.path.exists(self.path): + if start_empty or (create and not os.path.exists(self.path)): with open(self.path, 'w'): pass self.data = {} diff --git a/plex_meta_manager.py b/plex_meta_manager.py index 729c32e0..c5f56163 100644 --- a/plex_meta_manager.py +++ b/plex_meta_manager.py @@ -1,4 +1,5 @@ import argparse, os, platform, psutil, sys, time, uuid +from collections import Counter from concurrent.futures import ProcessPoolExecutor from datetime import datetime from modules.logs import MyLogger @@ -274,6 +275,32 @@ def start(attrs): version_line = f"Version: {version[0]}" if new_version: version_line = f"{version_line} Newest Version: {new_version}" + try: + log_data = {} + with open(logger.main_log, encoding="utf-8") as f: + for log_line in f: + for err_type in ["WARNING", "ERROR", "CRITICAL"]: + if f"[{err_type}]" in log_line: + log_line = log_line.split("|")[1].strip() + if err_type not in log_data: + log_data[err_type] = [] + log_data[err_type].append(log_line) + + for err_type in ["WARNING", "ERROR", "CRITICAL"]: + if err_type not in log_data: + continue + logger.separator(f"{err_type.lower().capitalize()} Summary", space=False, border=False) + + logger.info("") + logger.info(f"Count | Message") + logger.separator(f"{logger.separating_character * 5}|", space=False, border=False, side_space=False, left=True) + for k, v in Counter(log_data[err_type]).most_common(): + logger.info(f"{v:>5} | {k}") + logger.info("") + except Failed as e: + logger.stacktrace() + logger.error(f"Report Error: {e}") + logger.separator(f"Finished {start_type}Run\n{version_line}\nFinished: {end_time.strftime('%H:%M:%S %Y-%m-%d')} Run Time: {run_time}") logger.remove_main_handler()