注册
分享:markdown技术博客发送到eco平台图片的转换
技术分享/ 文章详情 /

分享:markdown技术博客发送到eco平台图片的转换

M4x7 2025/07/18 107 0 0

分享:markdown技术博客发送到eco平台图片的转换

问题描述

一般都是在别的地方写好博客再发到eco平台。

但是别的地方导出的markdown一般都是**.md文件+image文件夹**的组合,eco并不支持这种形式。只能把图片上传后再一张张修改格式,很麻烦。

本文目标:使用python脚本简单几步完成markdown技术博客发送到到eco平台图片的转换。

注:这里的markdown是由为知笔记导出的,如果其他笔记导出格式不同导致转换失败,可以修改python脚本

解决方案

1 准备文件

导出后的**.md文件images文件夹**

image

2 上传图片

达梦技术社区 | 达梦数据库

登录后点击**“发文章”**

点击图片-上传图片

image

把images文件夹中的所有图片都上传

image

image

3 建立新图片列表文件

然后把左边的所有内容复制,粘贴到一个新的文件中,放到之前的目录下(无所谓文件类型)。

image

4 新建python脚本

原理:原来的图片名上传后的图片名之间存在对应关系,使用该脚本可以一一替换。

注意不同笔记软件的图片命名格式有不同!请按照实际情况修改

# 使用之前请修改main中的文件路径 # 使用后果由使用者承担 # 任何问题请联系mxy@dameng.com import re from pathlib import Path def normalize_filename(filename): """标准化文件名:移除所有连字符'-'并转为小写""" return filename.replace('-', '').lower() def replace_image_links(a_file_path, b_file_path, output_file_path=None, debug=False): """ 处理连字符差异的图片链接替换脚本 参数: a_file_path: 原始Markdown文件路径 b_file_path: 包含新链接的Markdown文件路径 output_file_path: 输出文件路径(可选) debug: 是否显示调试信息(默认False) """ # 设置默认输出路径 if output_file_path is None: a_path = Path(a_file_path) output_file_path = a_path.parent / f"{a_path.stem}_updated{a_path.suffix}" # 读取B文件并构建图片名到链接的映射(移除连字符) image_map = {} with open(b_file_path, 'r', encoding='utf-8') as b_file: content = b_file.read() matches = re.findall(r'!\[(.*?)\]\((.*?)\)', content) for name, url in matches: normalized_name = normalize_filename(name) image_map[normalized_name] = (name, url) # 保存原始名和URL if debug: print(f"B文件映射: {normalized_name}{url}") # 统计信息 replaced_count = 0 missing_count = 0 # 读取A文件并替换图片链接 with open(a_file_path, 'r', encoding='utf-8') as a_file, \ open(output_file_path, 'w', encoding='utf-8') as out_file: for line in a_file: # 匹配A文件中的图片链接格式 match = re.match(r'!\[(.*?)\]\(.*?/(.*?)\)', line) if match: alt_text = match.group(1) # 图片替代文本 original_name = match.group(2) # 原始文件名 normalized_name = normalize_filename(original_name) if normalized_name in image_map: # 使用B文件中的原始图片名和URL b_name, b_url = image_map[normalized_name] new_line = f'![{alt_text}]({b_url})\n' out_file.write(new_line) replaced_count += 1 if debug: print(f"替换: {original_name}{normalized_name}{b_url}") else: # 没有找到对应链接 out_file.write(line) missing_count += 1 if debug: print(f"未找到匹配: {original_name} (标准化后: {normalized_name})") else: out_file.write(line) # 输出统计信息 print(f"\n替换完成,结果已保存到: {output_file_path}") print(f"替换统计: {replaced_count} 处链接被替换") print(f"未匹配: {missing_count} 处链接未找到对应项") if missing_count > 0: print("\n提示:未匹配的链接可能是因为:") print("1. 文件名标准化后仍不匹配") print("2. B文件中确实缺少对应链接") print("3. 图片路径格式不符合预期") # 使用示例 if __name__ == "__main__": # 修改为你的实际文件路径 a_file = "DEM在Windows上的部署.md" # 原始文件路径 b_file = "images.md" # 包含新链接的文件路径 output_file = "DEM在Windows上的部署_eco.md" # 可选,输出文件路径 replace_image_links(a_file, b_file, output_file)
5 运行脚本

image

会显示成功替换和失败的数量。

6 上传eco平台

没有问题就可以上传eco平台了。把转换后新产生的.md文件内容复制到平台的编辑器中即可,可以看到替换成功。

添加标题和分类即可发布等待审核。审核一般一周一审,通常在周五。

image

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服