管理markdown文章的时候遇到了一个比较头疼的问题,那就是如果以后图床挂了后,文章的图片链接岂不是要一个个改?

之后我想了几个解决方案在这里mark下先

  • 利用反向代理

    • 反向代理就是你访问A网站,A网站上没有资源,A知道B网站上有资源,就去B网站把资源要过来传输给你,这样的话,你看到的就是A网站具有资源,至于如何使用Nginx或Apach实现反向代理,可以搜索我博客中的其他文章,或者网上找教程。
  • 批量修改文章的图片链接

    • 使用Python脚本解决,代码如下(非原创)
      修改代码中要指定的路径(第43行)和要替换前后(26行)的内容,run运行既可。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import os
import re
import time


def modify_md_content(top):
for root, dirs, files in os.walk(top, topdown=False):
# 循环文件
for file_name in files:
file_name_split = file_name.split('.')
print("a")

try:
if file_name_split[-1] == 'md':
# 找到md文件并且复制一份md文件路径
md_file_path = os.path.join(root, '.'.join(file_name_split))
copy_md_file_path = os.path.join(root, '.'.join([f'{file_name_split[0]}_copy', file_name_split[1]]))

# 打开md文件然后进行替换
with open(md_file_path, 'r', encoding='utf8') as fr, \
open(copy_md_file_path, 'w', encoding='utf8') as fw:
data = fr.read()
# 选择md文件中想要替换的字段
data = re.sub('旧内容', '新内容', data)

fw.write(data) # 新文件一次性写入原文件内容
# fw.flush()

# 删除原文件
os.remove(md_file_path)
# 重命名新文件名为原文件名
os.rename(copy_md_file_path, md_file_path)
print(f'{md_file_path} done...')
time.sleep(0.5)
except FileNotFoundError as e:
print(e)
time.sleep(0.5)


if __name__ == '__main__':
top = r'路径'
print("a")
modify_md_content(top)