Files
ALL-teach_sys/frontend_视觉设计/replace_unit_posters_data.py

95 lines
4.1 KiB
Python
Raw Normal View History

#!/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()