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