From 74382f25ebd8c3f322fa7d44066fbe6b25619f79 Mon Sep 17 00:00:00 2001 From: zanllp Date: Thu, 5 Mar 2026 23:26:59 +0800 Subject: [PATCH] feat(parser): add support for invokeai_metadata format --- .gitignore | 4 ++++ scripts/iib/parsers/invoke_ai.py | 20 ++++++++++++-------- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/.gitignore b/.gitignore index d39ca99..cf7856f 100644 --- a/.gitignore +++ b/.gitignore @@ -27,3 +27,7 @@ iib.db-wal CLAUDE.md .claude/* +videos/启动&添加文件夹构建索引.mp4 +videos/图像搜索和链接跳转.mp4 +videos/ai智能文件整理.mp4 +videos/skills安装&启动.mp4 diff --git a/scripts/iib/parsers/invoke_ai.py b/scripts/iib/parsers/invoke_ai.py index 534b5ad..cfee835 100644 --- a/scripts/iib/parsers/invoke_ai.py +++ b/scripts/iib/parsers/invoke_ai.py @@ -12,13 +12,17 @@ class InvokeAIParser: def parse(clz, img: Image, file_path): if not clz.test(img, file_path): raise Exception("The input image does not match the current parser.") - raw_infos = json.loads(img.info["invokeai_graph"]) - core_metadata = {} - for key in raw_infos['nodes']: - if key.startswith("core_metadata"): - core_metadata = raw_infos['nodes'][key] - break - + if 'invokeai_metadata' in img.info: + core_metadata = json.loads(img.info['invokeai_metadata']) + core_metadata.pop("canvas_v2_metadata", None) + elif 'invokeai_graph' in img.info: + raw_infos = json.loads(img.info["invokeai_graph"]) + core_metadata = {} + for key in raw_infos['nodes']: + if key.startswith("core_metadata"): + core_metadata = raw_infos['nodes'][key] + break + positive_prompt = core_metadata.get("positive_prompt", "None") negative_prompt = core_metadata.get("negative_prompt", "None") steps = core_metadata.get("steps", 'Unknown') @@ -60,6 +64,6 @@ class InvokeAIParser: @classmethod def test(clz, img: Image, file_path: str): try: - return 'invokeai_graph' in img.info + return 'invokeai_graph' in img.info or 'invokeai_metadata' in img.info except Exception as e: return False