最近实在被hexo的构建速度感动到了,我就几十篇posts就给我卡半天,果断润到hugo了。
但是很多基于hexo Butterfly主题的posts需要重新按照hugo ladder主题的字段进行修改,不然不能正常渲染构建,于是便有了下面的python脚本。
我只修改了frontmatter的部分字段,请按需修改,谨慎使用!
- 配置环境
pip install frontmatter
pip install pyyaml
- 原神,启动!
import os
import re
import shutil
import yaml
from datetime import datetime, timezone, timedelta# 输入文件夹和输出文件夹的路径
input_folder = './posts/'
output_folder = './posts_n/'# 遍历输入文件夹中的所有Markdown文件
for filename in os.listdir(input_folder):if filename.endswith('.md'):# 构建输入和输出文件的完整路径input_file_path = os.path.join(input_folder, filename)output_file_path = os.path.join(output_folder, filename)# 打开输入文件并读取内容with open(input_file_path, 'r', encoding='utf-8') as input_file:content = input_file.read()# 使用正则表达式找到frontmatterfrontmatter_match = re.match(r'---\n(.*?)\n---', content, re.DOTALL)if frontmatter_match:frontmatter_text = frontmatter_match.group(1)post = yaml.load(frontmatter_text, Loader=yaml.FullLoader)# 保留需要的字段post = {# 这里date的算法出问题了,用的是当前时间,应该用源文档中的date,但我懒得改了'date': datetime.now(timezone(timedelta(hours=8))).strftime('%Y-%m-%dT%H:%M:%S%z').replace('+0800', '+08:00'),'title': f'"{post["title"]}"','description': post.get('description', ''),'tags': post.get('tags', []),'slug': post.get('abbrlink', ''),'featured': True}# 构建修改后的frontmatter文本new_frontmatter = '---\n'for key, value in post.items():new_frontmatter += f'{key}: {value}\n'new_frontmatter += '---\n'# 将修改后的内容写入输出文件with open(output_file_path, 'w', encoding='utf-8') as output_file:output_file.write(new_frontmatter + content[len(frontmatter_match.group(0)):])
碎碎念:以后还是尽量用基本markdown语法吧,很多语法,例如toggle,好用倒是非常好用,但是一旦迁移框架的时候简直是蛋疼🤣