migrate-hexo-posts-to-hugo

news/2025/2/26 20:04:06/文章来源:https://www.cnblogs.com/zlli/p/18739020

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/890272.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

leetcode hot 13

解题思路:本题思路主要是前缀和思想,涉及到子集和问题,前缀和思想有效,两个前缀和的差就等于对应一个子集和。本题可以用哈希表的方式记录每个前缀和的值,核心依靠k = pre[j]-pre[i]转化成pre[j]-k=pre[i],计算pre[i]这个值出现的个数加到res中,最后返回。 class Solutio…

redis - [10] 持久化

redis是一个内存数据库,断电即失。需要持久化到磁盘中。 001 || RDB 在执行的时间间隔内将内存中的数据集快照写入到磁盘(快照),恢复时是将快照文件直接读到内存中。 Redis会单独创建(fork)一个子进程进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束了…

小红书独立开发大赛:让你的宝藏应用被更多人看到

无论你是业余在做一款 passion project 的 builder,还是试图 bootstrapping 自己造血的小团队。小红书发起的首届独立开发大赛都值得你关注。最近越来越多的社区开发者说,他们会选择在小红书冷启动自己的项目,因为这里能获取到友善的初期反馈和精准的早期用户。这些反馈和用…

博客作业:软件缺陷分析与二次开发实践(图书管理系统)

(1)来源 本次分析的代码来源于网络上的一个C++书籍购买系统项目。该项目模拟了不同用户类型(如会员、贵宾、学生等)购买书籍时的折扣计算和购买记录保存功能。原始代码虽能运行,但存在一些设计缺陷和潜在问题。 (2)运行环境+运行结果截图 运行环境: 环境:Windows 11 +…

博客添加看板娘

{% note info flat %} 本文转载自偷掉月亮的阿硕,本博客看板娘基于该教程搭建。 文章作者: 偷掉月亮的阿硕 文章链接: https://moonshuo.cn/posts/16544.html {% endnote %}

预祝2025省选嗨翻天

预祝2025省选嗨翻天\(T1\) A. 单峰序列 \(8pts\)部分分\(8pts\) :枚举每个数在单峰序列的左边还是右边,求次数做法同 luogu P3531 [POI 2012] LIT-Letters 。点击查看代码 int a[500010],b[500010],c[500010],ans[500010],id; vector<int>l,r; struct BIT {int c[50001…

配置github图床+picgo-core上传+jsdelivr

GitHub图床GitHub图床部分参考自教程Github图床+PicGo+JsDelivr+imgbot+automerge-action.imgbot图片压缩图片压缩部分参考自教程Github图床+PicGo+JsDelivr+imgbot+automerge-action.automerge-action最新版地址https://github.com/marketplace/actions/merge-pull-requests-a…

让博客在关键日子弹窗-变灰-放烟花

本文大体上参考自[1],新增了放烟花功能。前置教程 参见[1:1]。 {% note warning flat%}SweetAlert库应该在day.js和lunar.js前面引入!{% endnote %} 放烟花实现SweetAlert2库[2],支持弹窗含有图片,也就是可以弹窗一个放烟花的gif,当然你也可以使用html的visible属性来可视化…

2025中国十大HR SaaS厂商,企业应该如何选择最佳合作伙伴

人力资源软件供应商的价值已远超工具范畴——它们是组织能力的“放大器”、管理革命的“催化剂”。在数字化转型中,企业通过与其深度合作,不仅能实现运营效率的指数级提升,更将人力资本转化为战略资产,构建起适应AI时代的核心竞争力。选择与怎样的供应商同行,将直接决定企…

redis - [09] redis.conf详解

题记部分 配置文件unit单位对大小写不敏感。可以将多个配置文件配置进来绑定ip保护模式 & 端口守护进程,默认是no,需要改成yes如果需要后台运行,需要制定进程文件(pid)指定日志级别,生产环境默认notice。logfile: 日志文件位置名配置数据库的数量,默认16个是否总是…

试用一下Qexo这个Hexo博客内容管理系统

本文由Qexo书写并发布。Qexo介绍 Qexo | 一个美观、强大的在线 静态博客 管理器 (oplog.cn) 本文就不详细介绍Qexo了,官方文档写的很清晰了2333测试样式 测试一下github markdown样式是否正确显示。 This README can be used as a reference for github-flavored-markdown sty…