95 lines
4.1 KiB
Python
95 lines
4.1 KiB
Python
|
|
#!/usr/bin/env python3
|
|||
|
|
# -*- coding: utf-8 -*-
|
|||
|
|
|
|||
|
|
import json
|
|||
|
|
import shutil
|
|||
|
|
from datetime import datetime
|
|||
|
|
|
|||
|
|
def main():
|
|||
|
|
print("🚀 开始替换单元背景海报数据...")
|
|||
|
|
|
|||
|
|
# 创建备份
|
|||
|
|
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
|
|||
|
|
original_file = "src/data/mockData.js"
|
|||
|
|
backup_path = f"{original_file}.backup_{timestamp}"
|
|||
|
|
shutil.copy2(original_file, backup_path)
|
|||
|
|
print(f"📦 已创建备份: {backup_path}")
|
|||
|
|
|
|||
|
|
# 读取视觉设计单元背景数据
|
|||
|
|
print("📖 读取视觉设计单元背景数据...")
|
|||
|
|
with open("网页未导入数据/视觉设计产业/视觉设计单元背景.json", "r", encoding="utf-8") as f:
|
|||
|
|
visual_design_data = json.load(f)
|
|||
|
|
|
|||
|
|
print(f"✅ 成功读取 {len(visual_design_data)} 个视觉设计单元背景")
|
|||
|
|
|
|||
|
|
# 生成新的skillUnitPosters内容
|
|||
|
|
unit_posters_lines = []
|
|||
|
|
for unit in visual_design_data:
|
|||
|
|
unit_name = unit.get("单元名称", "")
|
|||
|
|
unit_poster_url = unit.get("单元海报_url", "")
|
|||
|
|
if unit_name and unit_poster_url:
|
|||
|
|
# 处理单元名称中的特殊字符
|
|||
|
|
unit_name_escaped = unit_name.replace('"', '\\"')
|
|||
|
|
unit_posters_lines.append(f' "{unit_name_escaped}": "{unit_poster_url}"')
|
|||
|
|
print(f"✅ 处理单元: {unit_name}")
|
|||
|
|
|
|||
|
|
# 构建新的skillUnitPosters对象
|
|||
|
|
new_skill_unit_posters = "const skillUnitPosters = {\n" + ",\n".join(unit_posters_lines) + "\n};"
|
|||
|
|
|
|||
|
|
# 读取原始文件
|
|||
|
|
with open(original_file, "r", encoding="utf-8") as f:
|
|||
|
|
content = f.read()
|
|||
|
|
|
|||
|
|
# 查找并替换两个import语句
|
|||
|
|
import re
|
|||
|
|
|
|||
|
|
# 1. 替换智能制造单元背景导入为视觉设计单元背景
|
|||
|
|
pattern1 = r"import intelligentManufacturingUnitData from '../../网页未导入数据/智能制造产业/智能制造单元背景\.json';"
|
|||
|
|
replacement1 = "import visualDesignUnitData from '../../网页未导入数据/视觉设计产业/视觉设计单元背景.json';"
|
|||
|
|
content = re.sub(pattern1, replacement1, content)
|
|||
|
|
|
|||
|
|
# 2. 替换skillUnitPosters生成逻辑
|
|||
|
|
pattern2 = r"// 技能课单元海报映射.*?\nconst skillUnitPosters = \{\};\s*\nintelligentManufacturingUnitData\.forEach\(unit => \{[\s\S]*?\}\);"
|
|||
|
|
replacement2 = f"""// 技能课单元海报映射 - 从视觉设计单元背景数据生成
|
|||
|
|
{new_skill_unit_posters}"""
|
|||
|
|
|
|||
|
|
if re.search(pattern2, content):
|
|||
|
|
content = re.sub(pattern2, replacement2, content)
|
|||
|
|
print("✅ 成功替换skillUnitPosters生成逻辑")
|
|||
|
|
else:
|
|||
|
|
# 如果没找到原有模式,尝试替换简单版本
|
|||
|
|
pattern2_simple = r"const skillUnitPosters = \{\};\s*intelligentManufacturingUnitData\.forEach\(.*?\}\);"
|
|||
|
|
replacement2_simple = new_skill_unit_posters
|
|||
|
|
if re.search(pattern2_simple, content, re.DOTALL):
|
|||
|
|
content = re.sub(pattern2_simple, replacement2_simple, content, flags=re.DOTALL)
|
|||
|
|
print("✅ 成功替换skillUnitPosters(简单模式)")
|
|||
|
|
else:
|
|||
|
|
print("⚠️ 未找到skillUnitPosters生成代码,尝试直接替换")
|
|||
|
|
# 尝试更通用的模式
|
|||
|
|
pattern2_generic = r"const skillUnitPosters = \{[^}]*\};"
|
|||
|
|
if re.search(pattern2_generic, content):
|
|||
|
|
content = re.sub(pattern2_generic, new_skill_unit_posters, content)
|
|||
|
|
print("✅ 成功替换skillUnitPosters(通用模式)")
|
|||
|
|
|
|||
|
|
# 写入文件
|
|||
|
|
with open(original_file, "w", encoding="utf-8") as f:
|
|||
|
|
f.write(content)
|
|||
|
|
|
|||
|
|
print("📊 替换统计:")
|
|||
|
|
print(f" - 视觉设计单元背景数: {len(visual_design_data)}")
|
|||
|
|
print(f" - 成功处理单元数: {len(unit_posters_lines)}")
|
|||
|
|
|
|||
|
|
print("✅ 已更新单元背景海报数据")
|
|||
|
|
|
|||
|
|
# 显示部分替换的单元
|
|||
|
|
print("📋 替换的单元包括:")
|
|||
|
|
for i, unit in enumerate(visual_design_data[:5], 1):
|
|||
|
|
unit_name = unit.get("单元名称", "")
|
|||
|
|
print(f" {i}. {unit_name}")
|
|||
|
|
if len(visual_design_data) > 5:
|
|||
|
|
print(f" ... 还有 {len(visual_design_data) - 5} 个单元")
|
|||
|
|
|
|||
|
|
print("🎉 处理完成!")
|
|||
|
|
|
|||
|
|
if __name__ == "__main__":
|
|||
|
|
main()
|