#!/usr/bin/env python3 """ 彻底修复所有订单班的图片路径问题 """ import re from pathlib import Path from urllib.parse import unquote def get_image_mapping(order_class: str, image_dir: Path): """获取订单班的图片映射关系""" mappings = {} if order_class == "环保": mappings = { "去除印章.png": "图片_06.jpg", "%E5%8E%BB%E9%99%A4%E5%8D%B0%E7%AB%A0.png": "图片_06.jpg" } elif order_class == "视觉设计": # 视觉设计的映射 mappings = { "一、项目概述1.png": "图片_01.jpg", "一、项目概述2.png": "图片_02.jpg", "二、宣传目标1.png": "图片_06.jpg", "二、宣传目标2.png": "图片_07.jpg", "三、影片视觉基调1.png": "图片_03.jpg", "三、影片视觉基调2.png": "图片_04.jpg", "三、影片视觉基调3.png": "图片_05.jpg", "四、影片内容大纲1.png": "图片_11.jpg", "四、影片内容大纲2.png": "图片_15.jpg", "四、影片内容大纲3.png": "图片_16.jpg", "四、影片内容大纲4.png": "图片_17.jpg", "四、影片内容大纲5.png": "图片_18.jpg", "四、影片内容大纲6.png": "图片_19.jpg", "四、影片内容大纲7.png": "图片_20.jpg", "四、影片内容大纲8.png": "图片_21.jpg", "四、影片内容大纲9.png": "图片_22.jpg", "四、影片内容大纲10.png": "图片_12.jpg", "四、影片内容大纲11.jpeg": "图片_13.jpg", "四、影片内容大纲12.png": "图片_14.jpg", "五、拍摄经费预算表.jpeg": "图片_08.jpg", "六、拍摄总体安排1.png": "图片_09.jpg", "六、拍摄总体安排2.jpeg": "图片_10.jpg", # URL编码版本 "%E4%B8%80%E3%80%81%E9%A1%B9%E7%9B%AE%E6%A6%82%E8%BF%B01.png": "图片_01.jpg", "%E4%B8%80%E3%80%81%E9%A1%B9%E7%9B%AE%E6%A6%82%E8%BF%B02.png": "图片_02.jpg", "%E4%BA%8C%E3%80%81%E5%AE%A3%E4%BC%A0%E7%9B%AE%E6%A0%871.png": "图片_06.jpg", "%E4%BA%8C%E3%80%81%E5%AE%A3%E4%BC%A0%E7%9B%AE%E6%A0%872.png": "图片_07.jpg", "%E4%B8%89%E3%80%81%E5%BD%B1%E7%89%87%E8%A7%86%E8%A7%89%E5%9F%BA%E8%B0%831.png": "图片_03.jpg", "%E4%B8%89%E3%80%81%E5%BD%B1%E7%89%87%E8%A7%86%E8%A7%89%E5%9F%BA%E8%B0%832.png": "图片_04.jpg", "%E4%B8%89%E3%80%81%E5%BD%B1%E7%89%87%E8%A7%86%E8%A7%89%E5%9F%BA%E8%B0%833.png": "图片_05.jpg", "%E5%9B%9B%E3%80%81%E5%BD%B1%E7%89%87%E5%86%85%E5%AE%B9%E5%A4%A7%E7%BA%B21.png": "图片_11.jpg", "%E5%9B%9B%E3%80%81%E5%BD%B1%E7%89%87%E5%86%85%E5%AE%B9%E5%A4%A7%E7%BA%B22.png": "图片_15.jpg", "%E5%9B%9B%E3%80%81%E5%BD%B1%E7%89%87%E5%86%85%E5%AE%B9%E5%A4%A7%E7%BA%B23.png": "图片_16.jpg", "%E5%9B%9B%E3%80%81%E5%BD%B1%E7%89%87%E5%86%85%E5%AE%B9%E5%A4%A7%E7%BA%B24.png": "图片_17.jpg", "%E5%9B%9B%E3%80%81%E5%BD%B1%E7%89%87%E5%86%85%E5%AE%B9%E5%A4%A7%E7%BA%B25.png": "图片_18.jpg", "%E5%9B%9B%E3%80%81%E5%BD%B1%E7%89%87%E5%86%85%E5%AE%B9%E5%A4%A7%E7%BA%B26.png": "图片_19.jpg", "%E5%9B%9B%E3%80%81%E5%BD%B1%E7%89%87%E5%86%85%E5%AE%B9%E5%A4%A7%E7%BA%B27.png": "图片_20.jpg", "%E5%9B%9B%E3%80%81%E5%BD%B1%E7%89%87%E5%86%85%E5%AE%B9%E5%A4%A7%E7%BA%B28.png": "图片_21.jpg", "%E5%9B%9B%E3%80%81%E5%BD%B1%E7%89%87%E5%86%85%E5%AE%B9%E5%A4%A7%E7%BA%B29.png": "图片_22.jpg", "%E5%9B%9B%E3%80%81%E5%BD%B1%E7%89%87%E5%86%85%E5%AE%B9%E5%A4%A7%E7%BA%B210.png": "图片_12.jpg", "%E5%9B%9B%E3%80%81%E5%BD%B1%E7%89%87%E5%86%85%E5%AE%B9%E5%A4%A7%E7%BA%B211.jpeg": "图片_13.jpg", "%E5%9B%9B%E3%80%81%E5%BD%B1%E7%89%87%E5%86%85%E5%AE%B9%E5%A4%A7%E7%BA%B212.png": "图片_14.jpg", "%E4%BA%94%E3%80%81%E6%8B%8D%E6%91%84%E7%BB%8F%E8%B4%B9%E9%A2%84%E7%AE%97%E8%A1%A8.jpeg": "图片_08.jpg", "%E5%85%AD%E3%80%81%E6%8B%8D%E6%91%84%E6%80%BB%E4%BD%93%E5%AE%89%E6%8E%921.png": "图片_09.jpg", "%E5%85%AD%E3%80%81%E6%8B%8D%E6%91%84%E6%80%BB%E4%BD%93%E5%AE%89%E6%8E%922.jpeg": "图片_10.jpg" } return mappings def fix_markdown_file(md_file: Path, mappings: dict): """修复单个Markdown文件""" try: content = md_file.read_text(encoding='utf-8') original_content = content # 替换所有映射 for old_name, new_name in mappings.items(): # 替换各种可能的格式 patterns = [ f'](./image/{old_name})', f']({old_name})', f'](image/{old_name})', f'](./image/{old_name.replace(" ", "%20")})', ] for pattern in patterns: if pattern in content: content = content.replace(pattern, f'](./image/{new_name})') # 保存修改 if content != original_content: md_file.write_text(content, encoding='utf-8') return True except Exception as e: print(f" ✗ 错误: {e}") return False return False def main(): """主函数""" base_path = Path("/Users/xiaoqi/Documents/Dev/Project/2025-09-08_n8nDEMO演示/data/订单班文档资料") # 需要修复的订单班 order_classes = ["环保", "视觉设计"] print("=" * 60) print("彻底修复URL编码路径问题") print("=" * 60) for order_class in order_classes: order_dir = base_path / order_class if not order_dir.exists(): continue notion_dir = order_dir / "notion文稿" if not notion_dir.exists(): continue image_dir = notion_dir / "image" print(f"\n处理 {order_class}...") # 获取映射关系 mappings = get_image_mapping(order_class, image_dir) # 修复所有MD文件 for md_file in notion_dir.glob("*.md"): if md_file.name == "图片索引.md": continue if fix_markdown_file(md_file, mappings): print(f" ✓ 修复: {md_file.name}") print("\n" + "=" * 60) print("✅ 修复完成!") if __name__ == "__main__": main()