#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ 构建创作思维路径可视化 V3 新版特性: - 按节点发现编号分层布局(同一编号在同一层) - 同一个发现编号的节点使用相同的填充颜色 - Tab 切换展示目录下所有帖子 读取 creation_pattern 目录下的 JSON 数据,输出单文件 HTML """ import json import sys from pathlib import Path # 项目路径 project_root = Path(__file__).parent.parent.parent sys.path.insert(0, str(project_root)) from script.data_processing.path_config import PathConfig HTML_TEMPLATE = ''' 创作思维路径可视化

创作思维路径

9/9
AI推导
共现推导
人设常量
''' def main(): import argparse parser = argparse.ArgumentParser(description='构建创作思维路径可视化 V3(分层布局 + Tab切换)') parser.add_argument('input_dir', nargs='?', help='输入目录路径(可选,默认使用 PathConfig)') parser.add_argument('--version', '-v', type=str, default='v5', help='版本号 (v2/v3/v4/v5),默认 v5') parser.add_argument('--type', '-t', type=str, default='point_order', help='目录类型前缀 (creation_pattern/point_order),默认 point_order') args = parser.parse_args() if args.input_dir: input_dir = Path(args.input_dir) print(f"输入目录: {input_dir}") else: config = PathConfig() input_dir = config.intermediate_dir / f"{args.type}_{args.version}" print(f"账号: {config.account_name}") print(f"输入目录: {input_dir}") if not input_dir.exists(): print(f"错误: 目录不存在: {input_dir}") sys.exit(1) # 查找所有分析文件(支持多种命名) pattern_files = sorted(input_dir.glob("*_点顺序.json")) if not pattern_files: pattern_files = sorted(input_dir.glob("*_创作模式.json")) print(f"找到 {len(pattern_files)} 个分析文件") if not pattern_files: print("错误: 没有找到分析文件 (*_点顺序.json 或 *_创作模式.json)!") sys.exit(1) # 读取所有帖子数据 all_data = [] for pattern_file in pattern_files: post_id = pattern_file.stem.replace("_点顺序", "").replace("_创作模式", "") print(f" 读取: {post_id}") with open(pattern_file, "r", encoding="utf-8") as f: data = json.load(f) all_data.append(data) # 生成单个 HTML 文件 data_json = json.dumps(all_data, ensure_ascii=False) html_content = HTML_TEMPLATE.replace("__DATA_PLACEHOLDER__", data_json) output_file = input_dir / "创作思维路径可视化.html" with open(output_file, "w", encoding="utf-8") as f: f.write(html_content) print(f"\n输出: {output_file}") print("完成!") if __name__ == "__main__": main()