批量生成博客草稿文件到对应月份文件夹
Table of Contents
真是万万没想到,在日记博我都可以写这个。之前我还纠结到底怎么在手机上写,得嘞,现在一了百了,我把草稿文件全都创建了,就算临时要在手机写,打开手机 Github 直接编辑对应文档,最后把 draft
值改了就行。
但执行这个创建文件的命令还是要在电脑搞的,以下:
##
创建 docker container folder
在 Github 博客 repo 中创建 codespace,在根目录新建 .devcontainer
文件夹,在此文件夹中创建 devcontainer.json
文件,内容如下(name
当然可以随便取):
{
"name": "Fragment Blog",
"image": "mcr.microsoft.com/vscode/devcontainers/python:3.9",
"customizations": {
"vscode": {
"settings": {
"terminal.integrated.shell.linux": "/bin/bash"
}
}
}
}
##
新建 generate_md_files.py
文件
generate_md_files.py
文件
import os
from datetime import datetime, timedelta
# Define the number of files and the starting date, 文件数和起始时间自己改
num_files = 10
start_date = datetime(2025, 1, 1)
# Template content with placeholders for title and date
template_content = """---
title: "{date}"
date: "{date}"
tags:
- Daily
draft: true
hidden: false
disable_feed: false
---
"""
# Generate files
for i in range(num_files):
date = start_date + timedelta(days=i)
date_str = date.strftime('%Y-%m-%d')
year_month = date.strftime('%Y-%m')
output_dir = os.path.join('posts_folder', year_month)
# posts_folder 的地址是在 codespace 中 博客内容对应的file path,右击 `posts`文件夹 copy path 即可
os.makedirs(output_dir, exist_ok=True)
filename = os.path.join(output_dir, f"{date_str}.md")
content = template_content.format(date=date_str)
with open(filename, 'w') as new_file:
new_file.write(content)
print(f'{num_files} Markdown files generated successfully in their respective directories.')
##
运行脚本
在 terminal 中运行
python generate_md_files.py
##
最终结果
批量生成带 metadata 的 markdown 文件到以“年+月”格式命名的文件夹。
万一到年底有的日期没写就筛一遍把 draft
为 false 的文件全删了就行!
一开始我一口气生成了 2025 整年的文件在 posts
文件夹下但看着实在是有点让人头晕,于是又写了个脚本把这些文件挪到对应的新建月份文件夹去,再把原始脚本改了改。接着发现这样一来岂不是过去的文章又要生成一遍 RSS?虽然我很怀疑到底谁订阅了,但还是又搞了个脚本把已发表的文件统统加了个 disable_feed
property 并且设置为 True
。说真的没有 AI 我可怎么办啊, 其实心里有点担忧,我是不是该认真学学 python 不然离了 AI 我就真成弱智了……