1. 我一般写文章时都会使用csdn的markdown编辑器,为什么?对比一下
  • 这是csdn的markdown编辑器
    csdn的markdown编辑器

  • 这是typecho的markdown编辑器(而且是使用EditorMD的情况下)
    typecho的markdown编辑器

使用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而并不是因为想掌握一门语言而学习,而是为了解决生活中的实际问题而学习)

最后修改:2020 年 04 月 12 日
如果觉得我的文章对你有用,请随意赞赏