136 lines
6.2 KiB
Python
136 lines
6.2 KiB
Python
|
|
#!/usr/bin/env python3
|
|||
|
|
"""
|
|||
|
|
修复所有订单班Markdown文件中的图片路径
|
|||
|
|
移除URL编码的子目录,直接指向./image/目录
|
|||
|
|
"""
|
|||
|
|
|
|||
|
|
import re
|
|||
|
|
from pathlib import Path
|
|||
|
|
from urllib.parse import unquote
|
|||
|
|
|
|||
|
|
def fix_markdown_image_paths():
|
|||
|
|
"""修复所有Markdown文件中的图片路径"""
|
|||
|
|
base_path = Path("/Users/xiaoqi/Documents/Dev/Project/2025-09-08_n8nDEMO演示/data/订单班文档资料")
|
|||
|
|
|
|||
|
|
# 所有订单班
|
|||
|
|
order_classes = [
|
|||
|
|
"文旅", "财经商贸", "食品", "智能开发", "智能制造",
|
|||
|
|
"视觉设计", "交通物流", "土木", "大健康", "能源",
|
|||
|
|
"化工", "环保"
|
|||
|
|
]
|
|||
|
|
|
|||
|
|
print("=" * 60)
|
|||
|
|
print("修复Markdown文件中的图片路径")
|
|||
|
|
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
|
|||
|
|
|
|||
|
|
# 查找所有MD文件
|
|||
|
|
md_files = list(notion_dir.glob("*.md"))
|
|||
|
|
if not md_files:
|
|||
|
|
continue
|
|||
|
|
|
|||
|
|
print(f"\n处理 {order_class}...")
|
|||
|
|
|
|||
|
|
for md_file in md_files:
|
|||
|
|
try:
|
|||
|
|
content = md_file.read_text(encoding='utf-8')
|
|||
|
|
original_content = content
|
|||
|
|
|
|||
|
|
# 修复图片路径的各种模式
|
|||
|
|
# 1. 移除URL编码的子目录路径
|
|||
|
|
# 匹配 
|
|||
|
|
pattern = r'!\[([^\]]*)\]\(./image/[^/\)]+/([^\)]+\.(jpg|jpeg|png|gif))\)'
|
|||
|
|
content = re.sub(pattern, r'', content, flags=re.IGNORECASE)
|
|||
|
|
|
|||
|
|
# 2. 修复只有文件名的情况
|
|||
|
|
# 获取image目录中的所有图片
|
|||
|
|
image_dir = notion_dir / "image"
|
|||
|
|
if image_dir.exists():
|
|||
|
|
images = list(image_dir.glob("*.jpg"))
|
|||
|
|
|
|||
|
|
# 创建映射:原始文件名(各种形式)到新文件名
|
|||
|
|
name_mapping = {}
|
|||
|
|
|
|||
|
|
# 根据命名规则推断映射
|
|||
|
|
for img in images:
|
|||
|
|
new_name = img.name
|
|||
|
|
|
|||
|
|
# 推断可能的原始名称
|
|||
|
|
if new_name.startswith("图片_"):
|
|||
|
|
# 图片_01.jpg 可能来自各种中文名称
|
|||
|
|
num = new_name.replace("图片_", "").replace(".jpg", "")
|
|||
|
|
# 这些需要根据实际顺序来映射
|
|||
|
|
if order_class == "食品":
|
|||
|
|
# 食品订单班的特定映射
|
|||
|
|
mappings = {
|
|||
|
|
"01": ["一、项目概述1.jpeg"],
|
|||
|
|
"02": ["一、项目概述2.jpeg"],
|
|||
|
|
"03": ["一、项目概述3.jpeg"],
|
|||
|
|
"04": ["七、营销与推广1.jpeg"],
|
|||
|
|
"05": ["七、营销与推广2.jpeg"],
|
|||
|
|
"06": ["三、品牌定位1.jpeg"],
|
|||
|
|
"07": ["三、品牌定位2.jpeg"],
|
|||
|
|
"08": ["九、风险管理与应对1.jpeg"],
|
|||
|
|
"09": ["九、风险管理与应对2.jpeg"],
|
|||
|
|
"10": ["二、市场分析1.jpeg"],
|
|||
|
|
"11": ["二、市场分析2.jpeg"],
|
|||
|
|
"12": ["二、市场分析3.jpeg"],
|
|||
|
|
"13": ["五、选址与装修1.jpeg"],
|
|||
|
|
"14": ["五、选址与装修2.jpeg"],
|
|||
|
|
"15": ["八、财务管理1.jpeg"],
|
|||
|
|
"16": ["八、财务管理2.jpeg"],
|
|||
|
|
"17": ["八、财务管理3.jpeg"],
|
|||
|
|
"18": ["六、人员管理1.jpeg"],
|
|||
|
|
"19": ["六、人员管理2.jpeg"],
|
|||
|
|
"20": ["六、人员管理3.jpeg"],
|
|||
|
|
"21": ["六、人员管理4.jpeg"],
|
|||
|
|
"22": ["四、菜品服务1.jpeg"],
|
|||
|
|
"23": ["四、菜品服务2.jpeg"],
|
|||
|
|
"24": ["四、菜品服务3.jpeg"],
|
|||
|
|
"25": ["四、菜品服务4.jpeg"]
|
|||
|
|
}
|
|||
|
|
if num in mappings:
|
|||
|
|
for old_name in mappings[num]:
|
|||
|
|
name_mapping[old_name] = new_name
|
|||
|
|
|
|||
|
|
# 应用映射
|
|||
|
|
for old_name, new_name in name_mapping.items():
|
|||
|
|
# 处理各种可能的引用格式
|
|||
|
|
# URL编码的文件名
|
|||
|
|
encoded_old = re.escape(old_name.replace(' ', '%20'))
|
|||
|
|
|
|||
|
|
# 替换包含子目录的路径
|
|||
|
|
content = re.sub(
|
|||
|
|
f'!\[([^\]]*)\]\([^\)]*{re.escape(old_name)}\)',
|
|||
|
|
f'',
|
|||
|
|
content
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
# 替换URL编码版本
|
|||
|
|
content = re.sub(
|
|||
|
|
f'!\[([^\]]*)\]\([^\)]*{encoded_old}\)',
|
|||
|
|
f'',
|
|||
|
|
content
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
# 保存修改
|
|||
|
|
if content != original_content:
|
|||
|
|
md_file.write_text(content, encoding='utf-8')
|
|||
|
|
print(f" ✓ 修复: {md_file.name}")
|
|||
|
|
|
|||
|
|
except Exception as e:
|
|||
|
|
print(f" ✗ 失败 {md_file.name}: {e}")
|
|||
|
|
|
|||
|
|
print("\n" + "=" * 60)
|
|||
|
|
print("✅ 路径修复完成!")
|
|||
|
|
|
|||
|
|
if __name__ == "__main__":
|
|||
|
|
fix_markdown_image_paths()
|