- 我一般写文章时都会使用csdn的markdown编辑器,为什么?对比一下
- 这是csdn的markdown编辑器
- 这是typecho的markdown编辑器(而且是使用EditorMD的情况下)
使用csdn的md编辑器写完文章后直接复制粘贴到typecho就行了,而且可以在csdn上留一份备份。
但是有一个问题,就是文章的图片依然存放在csdn的图库下,虽然放在csdn的图库可以省流,但我个人感觉不舒服,因为我习惯于把图片归档。
所以我写了个脚本将csdn的图片通过ftp存放在自己服务器下并修改文章中图片的链接
import os
import re
import requests
from ftplib import FTP
from ftplib import error_perm
def csdn_download():
url = f'https://yuaneu.ro/archives/{uid}.html'
r = requests.get(url)
result = r.text
p = re.compile(r'https://img-blog.csdnimg.cn/.+png') # 匹配到csdn的图片
csdn = p.findall(result)
count = len(csdn) / 2 # 因为在网页中有pc版和手机版,只取一般的图片即可
i = 0
for site in csdn:
i = i + 1
r = requests.get(site)
img = r.content
with open(rf'C:\Users\yuaneuro\Desktop\333\{uid}_{i}.png', 'wb') as f:
f.write(img) # 保存图片到本地
if i == count:
break
return count
def ftp_upload(count):
ftp = FTP()
ftp.connect('ip地址', 21)
ftp.login('账号', '密码')
# print(ftp.getwelcome()) # 欢迎语句
ftp.set_pasv(0) # 设置为主动模式
ftp.cwd('/usr/uploads') # 切换目录
try:
ftp.mkd(uid) # 创建目录
except error_perm:
pass
ftp.cwd(f'/usr/uploads/{uid}')
bufsize = 1024 # 设置缓冲区
for i in range(1, count + 1):
img = rf'C:\Users\yuaneuro\Desktop\333\{uid}_{i}.png'
file_handler = open(img, 'rb') # 打开文件
ftp.storbinary('STOR %s' % os.path.basename(img), file_handler, bufsize) # 上传文件
def replace_md():
with open(r'C:\Users\yuaneuro\Desktop\1.md', 'r', encoding='UTF-8') as f:
text = f.read()
i = 0
p = re.compile(r'https://yuaneu.ro/usr/uploads/12/12_3.png')
r = p.findall(text)
for a in r:
i = i + 1
text = text.replace(a, f'https://yuaneu.ro/usr/uploads/{uid}/{uid}_{i}.png')
text = text.replace('yuaneuro的小站', 'yuaneuro的小站')
text = text.encode()
with open(r'C:\Users\yuaneuro\Desktop\1.md', 'wb') as f:
f.write(text)
if __name__ == '__main__':
uid = '24' # 文章uid
count = csdn_download()
count = int(count)
ftp_upload(count)
replace_md()
将md原文复制到桌面的1.md文件里,执行脚本即可。
(我学习python而并不是因为想掌握一门语言而学习,而是为了解决生活中的实际问题而学习)