使用Python脚本修改语雀导文件图片格式

2023/07/09 20:37:12

用了语雀的md编辑器,感觉typora有点用不惯,但是语雀的到处图片会有限制,虽然能够浏览,但是使用hexo之后就不行了,寻找了几个方法,最好用的就是修改图片格式,将地址后的参数删除掉。
一个一个改太费劲了,因此写了一个简单的python脚本来代替机械劳动。

# -*- encoding: utf-8 -*-
"""
@File    :   YuQueShareLink.py
@Contact :   2997453446@qq.com
@Blog :   natro92.github.io

@Modify Time      @Author    @Version    @Desciption
------------      -------    --------    -----------
2023/5/16 21:04   natro92      1.0         将语雀链接在导出到博客时可以正常使用
"""

import re
import sys


def replace_string_in_file(file_path):
    with open(file_path, "r", encoding="utf-8", errors="ignore") as file:
        content = file.read()

        # 使用正则表达式匹配所有符合条件的字符串,并进行替换操作
    replaced_content = re.sub(r".png)", ".png)", content)

    with open(file_path, "w", encoding="utf-8", errors="ignore") as file:
        file.write(replaced_content)


if __name__ == "__main__":
    print("请提供需要处理的文件路径, 且文件需要和该py脚本处在同一文件夹下,比如:我的博客.md")
    file_path = input("路径:")
    is_end_of_md = re.search(r"\.md", file_path)
    if not is_end_of_md:
        file_path += ".md"
    replace_string_in_file(file_path)

改完这个了,想要同步到hexo,需要有一步hexo new 文章名称,这样会生成一个文件头,一般我会把这个修改后的文章内容复制到那个新生成的文件,并且修改tag、category等参数。
那么能不能直接把这些东西都合并到一起呢?
通过万能的互联网,添加一点代码:

def add_headers_in_file(file_path):
    file_name = os.path.basename(file_path)
    replaced_content = re.sub(r".md", "", file_name)
    time_str = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
    with open(file_path, 'r+', encoding="utf-8", errors="ignore") as f:
        contents = f.read()
        print('当前tags:', ['WriteUp', 'CTFshow0-1'])
        print('当前categories:', ['CTF'])
        new_tags = input('你想要修改tags吗? (y/n) 默认n')
        if new_tags.lower() == 'y':
            tags_str = input('输入你的tags,注意用英文逗号分隔: ')
            tags = [tag.strip() for tag in tags_str.split(',')]
        else:
            tags = ['WriteUp', 'CTFshow0-1']

        new_categories = input('你想要修改tags吗?(y/n) 默认n')
        if new_categories.lower() == 'y':
            categories_str = input('输入你的categories,注意用英文逗号分隔: ')
            categories = [category.strip() for category in categories_str.split(',')]
        else:
            categories = ['CTF']

        new_contents = '---\n' \
                       'title: ' + file_name + '\n' \
                                               'date: ' + time_str + '\n' \
                                                                     'tags:\n'
        for tag in tags:
            new_contents += '  - ' + tag + '\n'
        new_contents += 'categories:\n'
        for category in categories:
            new_contents += '  - ' + category + '\n'
        new_contents += '---\n' \
                        + contents

        f.seek(0)
        f.write(new_contents)

这个功能完成了,下面就是一键上传和更新到私有仓库了。
其实这里是可以使用hexo自带的库(hexo-uploader)但是为了简化、简单代码,这里就调用powershell来实现hexo的生成的发布。并且远程git给私有仓库。
其实hexo自带备份功能,但是似乎会和文件存到一起。因此我还是选择了单独创一个仓库保存的方法。
调用cmd来跑命令,因为之前git的信息和hexo的配置已经配置过了,因此直接使用就行。

def hexo_generate_and_deploy():
    # cmd命令 cd后修改为你自己的blog文件夹位置
    # 字符串前面加r防止解析,或者将单斜杠转换为双斜杠
    cmd = r'cd C:\Users\natro92\Desktop\blog && hexo g && hexo d'
    p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
    print(p.stdout.read().decode())
    a = input('按任意键继续')


def git_backup():
    # 实现备份git功能
    # 切换到本地的git仓库目录
    repo_dir = r'C:\Users\natro92\Desktop\blog'
    # python3.6特性,格式化文本
    cmd_cd = f'cd {repo_dir} && '
    cmd_add = 'git add .'
    commit_msg = '%date:~0,4%%date:~5,2%%date:~8,2%'
    cmd_commit = f'git commit -m "{commit_msg}"'
    cmd_push = 'git push'
    cmd = cmd_cd + cmd_add + ' && ' + cmd_commit + ' && ' + cmd_push
    result = subprocess.run(cmd, shell=True, stdout=subprocess.PIPE)
    print(result.stdout.decode())

就是简单的造轮子,但是能够让自己造轮子的效率更高。
附上完整版链接:https://github.com/natro92/YuQueShareLink