Loading

migrate-hexo-posts-to-hugo

最近实在被hexo的构建速度感动到了,我就几十篇posts就给我卡半天,果断润到hugo了。

但是很多基于hexo Butterfly主题的posts需要重新按照hugo ladder主题的字段进行修改,不然不能正常渲染构建,于是便有了下面的python脚本。

我只修改了frontmatter的部分字段,请按需修改,谨慎使用!

  1. 配置环境
pip install frontmatter
pip install pyyaml
  1. 原神,启动!
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()

        # 使用正则表达式找到frontmatter
        frontmatter_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,好用倒是非常好用,但是一旦迁移框架的时候简直是蛋疼🤣

posted @ 2025-02-26 20:01  ZilongLi  阅读(26)  评论(0)    收藏  举报