Hugo 文章转 Hexo
通过 Python 脚本,将 Hugo 文章的头文件转换成 Hexo 框架支持。
前言
将博客换成了 Hexo
,因此 Front Matter
信息需要修改,使用 ChatGPT
写了一个简单的 Python
更改脚本,修改的项目可以自己更改。
使用
新建一个 Python
文件,写入以下代码,将需要更改的文件放入一个文件夹,然后将文件夹路径填入代码对应位置,运行即可,需要提前安装 pyyaml
模块。
代码中将 cover
更改为 index_img
,具体可以自己更改。
1import os
2import re
3import yaml
4
5def modify_frontmatter(frontmatter, modifications):
6 frontmatter = frontmatter.copy()
7 for key, value in modifications.items():
8 if key == '_add':
9 frontmatter.update(value) # 添加键值对
10 elif key == '_delete':
11 for k in value:
12 frontmatter.pop(k, None) # 删除键
13 elif key in frontmatter:
14 if value['new_key'] is not None: # 修改键名
15 frontmatter[value['new_key']] = frontmatter.pop(key)
16 if value['new_value'] is not None: # 修改键值
17 frontmatter[key if value['new_key'] is None else value['new_key']] = value['new_value']
18 return frontmatter
19
20def convert_frontmatter(folder_path, modifications):
21 for root, dirs, files in os.walk(folder_path):
22 for file in files:
23 if file.endswith('.md'):
24 file_path = os.path.join(root, file)
25 with open(file_path, 'r', encoding='utf8') as f:
26 content = f.read()
27 frontmatter_str = re.search(r'(?s)^---.*?---', content).group()
28 frontmatter = yaml.safe_load(frontmatter_str[3:-3])
29 modified_frontmatter = modify_frontmatter(frontmatter, modifications)
30 modified_frontmatter_str = yaml.dump(modified_frontmatter, allow_unicode=True)
31 content = re.sub(r'(?s)^---.*?---', r'---\n' + modified_frontmatter_str + r'---', content, count=1)
32 with open(file_path, 'w', encoding='utf8') as f:
33 f.write(content)
34
35# 修改文件夹路径
36folder_path = r"D:\GitHub\hexo-blog\source\_posts"
37# 添加、删除、修改的键及其对应的值
38modifications = {
39 'cover': {'new_key': 'index_img', 'new_value': None}, # 修改键名
40 # '_add': {'author': 'leon'}, # 添加新键
41 # '_add': {'tag': ['Python', 'Markdown']}, # 添加新键
42 # '_delete': ['math'], # 删除键
43}
44convert_frontmatter(folder_path, modifications)
最后修改于 2024-04-17