1. 项目结构
|
|
2. 核心功能和主要类
BlogProcessor
类 (blog_processor.py):create_new_post()
- 创建新的Hugo文章process_markdown_files()
- 处理Markdown文件转换list_published_markdowns()
- 列出已发布的文章set_publish_false()
- 设置文章为未发布状态unpublish_article()
- 取消发布文章preview_site()
- 预览博客站点deploy_to_repos()
- 部署到GitHub仓库
FrontMatter
类 (front_matter.py):- 管理文章前置数据
- 处理标签和分类
- 提供标准化的数据访问接口
支持模块:
- config_manager.py: 配置管理
- obsidian_image_handler.py: 图片处理
- image_processor.py: 图片处理工具
3. 程序流程图
graph TD
A[开始] --> B{检查命令行参数}
B -->|--preview| C[预览模式]
B -->|--unpublish| D[取消发布]
B -->|--republish| E[重新发布]
B -->|默认发布| F[发布流程]
C --> C1[启动Hugo服务器]
C1 --> C2[打开预览页面]
D --> D1[列出已发布文章]
D1 --> D2[选择要取消的文章]
D2 --> D3[更新文章状态]
D3 --> D4[删除Hugo文件]
D4 --> G[部署更新]
E --> E1[找出已发布文章]
E1 --> E2[取消所有发布]
E2 --> E3[重新发布文章]
E3 --> G
F --> F1[处理Markdown文件]
F1 --> F2[处理图片资源]
F2 --> F3[创建Hugo文章]
F3 --> G
G --> G1[更新源码仓库]
G1 --> G2[构建Hugo站点]
G2 --> G3[部署到GitHub Pages]
G3 --> H[结束]
4. 文章处理流程
sequenceDiagram
participant U as 用户
participant BP as BlogProcessor
participant FM as FrontMatter
participant IH as ImageHandler
participant H as Hugo
participant G as Git仓库
U->>BP: 执行发布命令
BP->>FM: 提取YAML和内容
FM->>FM: 处理前置数据
BP->>IH: 处理图片
IH->>IH: 复制并重命名图片
BP->>BP: 创建Hugo文章
BP->>H: 构建站点
BP->>G: 推送源码
BP->>G: 部署页面
G-->>U: 返回部署结果
5. 类关系图
classDiagram
class BlogProcessor {
+source_dir: Path
+hugo_dir: Path
+create_new_post()
+process_markdown_files()
+list_published_markdowns()
+set_publish_false()
+unpublish_article()
+preview_site()
+deploy_to_repos()
}
class FrontMatter {
+data: dict
+title: str
+date: str
+tags: list
+categories: list
+draft: bool
+publish: bool
+to_dict()
+update()
}
class ImageHandler {
+process_obsidian_images()
+copy_image()
+update_links()
}
BlogProcessor --> FrontMatter : 使用
BlogProcessor --> ImageHandler : 使用
6. 部署流程
graph TD
A[开始部署] --> B[更新源码仓库]
B --> C[构建Hugo站点]
C --> D[部署到GitHub Pages]
D --> E[结束]
B --> B1[Git操作]
B1 --> B2[提交更改]
B2 --> B3[推送到源码仓库]
C --> C1[生成静态文件]
C1 --> C2[优化资源]
D --> D1[初始化Pages仓库]
D1 --> D2[提交更改]
D2 --> D3[强制推送到Pages]
7. 配置管理流程
graph LR
A[配置文件] -->|读取| B[Config类]
B -->|解析| C[配置字典]
C -->|获取配置| D[程序模块]
D -->|更新配置| B
B -->|保存| A
8. 主要功能说明
文章处理:
- 支持从Obsidian格式转换到Hugo格式
- 自动处理图片资源
- 维护标签和分类的映射关系
- 支持草稿模式
部署功能:
- 自动更新源码仓库
- 构建Hugo静态站点
- 部署到GitHub Pages
- 支持预览模式
图片处理:
- 自动复制和重命名图片
- 更新文章中的图片链接
- 支持多种图片格式
配置管理:
- 灵活的配置系统
- 支持多环境配置
- 配置验证和错误处理