一般都是在别的地方写好博客再发到eco平台。
但是别的地方导出的markdown一般都是**.md文件+image文件夹**的组合,eco并不支持这种形式。只能把图片上传后再一张张修改格式,很麻烦。
本文目标:使用python脚本简单几步完成markdown技术博客发送到到eco平台图片的转换。
注:这里的markdown是由为知笔记导出的,如果其他笔记导出格式不同导致转换失败,可以修改python脚本
导出后的**.md文件和images文件夹**
登录后点击**“发文章”**
点击图片-上传图片
把images文件夹中的所有图片都上传
然后把左边的所有内容复制,粘贴到一个新的文件中,放到之前的目录下(无所谓文件类型)。
原理:原来的图片名和上传后的图片名之间存在对应关系,使用该脚本可以一一替换。
注意:不同笔记软件的图片命名格式有不同!请按照实际情况修改。
# 使用之前请修改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'\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)
会显示成功替换和失败的数量。
没有问题就可以上传eco平台了。把转换后新产生的.md文件内容复制到平台的编辑器中即可,可以看到替换成功。
添加标题和分类即可发布等待审核。审核一般一周一审,通常在周五。
文章
阅读量
获赞