最近几个月的文章都直接发在公众号上,没有同步到博客上,想去同步时发现已经有不少了,一个个修改太麻烦了。
之前没规划好,所以博客文章都是直接放在仓库一个目录下,数量多了之后,有点乱,不好管理,微信公众号文章是按照年份和月份分目录的,所以现在把博客文章也按照年份和月份分目录了。对于之前的文章,想给它们文件名加上日期头了事。
这个事情用python脚本来做应该也很容易,但是这次特意试了一下powertoys中的批量重命名工具PowerRename,感觉很方便。
首先,把要批量修改的文件选中,然后右键 -> PowerRename,弹出PowerRename窗口
然后,在PowerRename窗口中,写上表达式,可以实时预览修改结果,确认无误后,点击“应用”按钮,即可完成批量修改。
将微信公众号文章同步到博客还需要解决个问题就是hexo需要frontmatter头,这个用python脚本来解决:
import os
import re
from datetime import datetime
import textwrap
# 遍历当前目录及其所有子目录中的文件
for dirpath, dirnames, filenames in os.walk("24"):
for filename in filenames:
# 检查文件名是否以两位数字和一个连字符 "-" 开头
if re.match(r"^\d{2}-", filename):
# 获取完整的文件路径
file_path = os.path.join(dirpath, filename)
with open(file_path, "r+", encoding="utf-8") as file:
content = file.readlines()
# 提取文件中的标题
title = re.search(r"^# (.*)$", content[0]).group(1)
# 从文件路径和文件名中提取日期
date_part = file_path.split("\\")[0:3] # 提取日期部分
date_str = "".join(date_part).split("-")[
0
] # 将日期部分合并为一个字符串
date = datetime.strptime(date_str, "%y%m%d").strftime(
"%Y-%m-%d"
) # 解析并格式化日期
# 创建新的Markdown frontmatter
frontmatter = textwrap.dedent(
f"""---
title: {title}
date: {date} 11:24:53
categories:
tags:
- c
- 算法
---
"""
)
# 将新的frontmatter添加到文件的开头
file.seek(0)
file.write(frontmatter + "".join(content))
第一次弄时没注意格式化字符串的缩进,导致frontmatter头的格式不对,hexo解析不了,后来改了下,就好了。
然后用hexo预览时发现,微信文章中的一级标题还在,然后又在vscode中用查找替换全部删掉~
公众号 | FunIO
微信搜一搜 “funio”,发现更多精彩内容。
个人博客 | blog.boringhex.top