用了语雀的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