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