#!/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 = '''
创作思维路径可视化
'''
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()