diff --git a/backup.py b/backup.py new file mode 100644 index 00000000..5773b8a7 --- /dev/null +++ b/backup.py @@ -0,0 +1,86 @@ +import os +import re +import platform +import glob +import subprocess +import sys + +def get_logs_directory(): + system = platform.system() + if system == "Darwin": # macOS + return os.path.expanduser("~/Library/Logs/ComfyUI") + if system == "Windows": + appdata = os.getenv("APPDATA") + if appdata is None: + raise EnvironmentError("APPDATA environment variable is not set") + return os.path.join(appdata, "ComfyUI", "logs") + + raise NotImplementedError(f"System {system} not supported") + +def parse_log_file(log_path): + custom_nodes = set() + pattern = r"custom_nodes[/\\]([^/\\\s]+)(?:\.py)?" + + with open(log_path, 'r', encoding='utf-8') as file: + content = file.read() + matches = re.finditer(pattern, content) + + for match in matches: + node_name = match.group(1) + # Exclude specific nodes + if node_name not in ["ComfyUI-Manager", "websocket_image_save.py"]: + custom_nodes.add(node_name) + + return custom_nodes + +def get_sorted_log_files(): + try: + logs_dir = get_logs_directory() + except EnvironmentError: + print("Failed to get logs directory") + return [] + + log_files = glob.glob(os.path.join(logs_dir, "comfyui*.log")) + + # Sort files by modification time, newest first + return sorted(log_files, key=os.path.getmtime, reverse=True) + +def install_custom_nodes(nodes_list): + if not nodes_list: + print("No custom nodes to install") + return + + current_dir = os.path.dirname(os.path.abspath(__file__)) + cm_cli_path = os.path.join(current_dir, "cm-cli.py") + + if not os.path.exists(cm_cli_path): + print("ComfyUI-Manager CLI not found") + return + + nodes_str = " ".join(nodes_list) + + try: + cmd = [sys.executable, cm_cli_path, "install", *nodes_list] + subprocess.run(cmd, check=True) + print(f"Successfully installed nodes: {nodes_str}") + except subprocess.CalledProcessError as e: + print(f"Error installing nodes: {e}") + +def main(): + log_files = get_sorted_log_files() + if not log_files: + print("No log files found") + return + + custom_nodes = set() + for log_file in log_files: + nodes = parse_log_file(log_file) + if nodes: + custom_nodes.update(nodes) + print(f"Found custom nodes: {custom_nodes}") + install_custom_nodes(custom_nodes) + +if __name__ == "__main__": + #main() + print(parse_log_file("/Users/junhanhuang/Downloads/comfyui_2024-11-28T00-22-15-857Z.log")) +