Upload Paper Module
Upload Paper Module
Overview
upload_file_main.py 是一个自动化上传论文笔记到 Jekyll 博客仓库的模块。
主要功能:
- 自动从arxiv URL提取论文年份
- 自动复制markdown中的本地图片到papers目录
- 生成Jekyll兼容的frontmatter
核心函数
upload_paper() - 主函数
将本地 Markdown 文件上传为博客 post,自动处理图片和元数据。
参数:
md_path(str, 必需): 源 markdown 文件的完整路径who(str, 必需): 编辑者标识,如 “ZKY”, “SQA”, “JZC”tags(list, 必需): 标签列表,用于分类论文paper_link(str, 可选): 论文的 arxiv/PDF 链接(支持自动提取paper_year)title(str, 可选): 论文标题(不提供则自动提取)paper_year(str, 可选): 论文年份(不提供则尝试从arxiv提取)time(str, 可选): 发布日期,格式”YYYY-MM-DD”,默认当前日期
返回值: 生成的 post 文件的完整路径
处理流程:
- 读取源 markdown 文件
- 复制markdown中的本地图片到
papers/{post_id}/目录 - 更新markdown中的图片路径
- 从arxiv URL提取论文年份(严格格式验证)
- 自动生成编号和文件名
- 生成Jekyll frontmatter
- 保存到
_posts/目录
extract_arxiv_year() - arxiv年份提取
从arxiv URL格式 https://arxiv.org/pdf/YYMM.XXXXX 提取四位数年份。
示例:
extract_arxiv_year("https://arxiv.org/pdf/2503.09641") # Returns "2025"
extract_arxiv_year("https://arxiv.org/pdf/2410.10733") # Returns "2024"
错误处理: URL不符合格式时抛出ValueError异常
copy_images() - 图片处理
复制markdown中的本地图片,更新路径为相对路径。
支持格式:
- Markdown:
 - HTML:
<img src="path/to/image.png">
get_next_number() - 编号生成
根据编辑者标识获取下一个递增编号。
generate_frontmatter() - Frontmatter生成
生成符合Jekyll标准的YAML frontmatter。
使用示例
基础用法
import upload_file_main
upload_file_main.upload_paper(
md_path="D:/Desktop/texts/笔记/算法/T2I_Papers.md",
paper_link="https://arxiv.org/pdf/2503.09641",
who="ZKY",
tags=["MultiModal", "Diffusion"],
)
自动生成:
- Post文件:
_posts/2026-01-09-ZKY002.md - 图片目录:
papers/ZKY002/ - Paper year:
2025(从arxiv URL提取)
输出文件
Post文件结构
文件: _posts/2026-01-09-ZKY001.md
---
title: ZKY001
paper: "SANA"
paper_url: "https://arxiv.org/pdf/2503.09641"
paper_year: 2025
tags:
- "MultiModal"
- "Diffusion"
layout: post
---
## SANA
sana 是一个工业界模型...

目录结构
Hidden-Hyperparameter.github.io/
├── _posts/
│ ├── 2026-01-09-ZKY001.md
│ ├── 2026-01-10-SQA020.md
│ └── ...
├── papers/
│ ├── ZKY001/
│ │ ├── image1.png
│ │ └── image2.png
│ ├── SQA020/
│ └── ...
└── utils/
├── upload_file_main.py
└── uploader.py
文件命名规则
Post文件名: YYYY-MM-DD-{who}{003d}.md
- 示例:
2026-01-09-ZKY001.md
图片目录: papers/{who}{003d}/
- 示例:
papers/ZKY001/
图片相对路径: papers/{who}{003d}/{filename}
- 示例:
papers/ZKY001/image.png
错误处理
arxiv URL格式验证
正确格式:
extract_arxiv_year("https://arxiv.org/pdf/2503.09641") # OK
extract_arxiv_year("https://arxiv.org/abs/2501.17161") # OK
错误格式会抛出ValueError:
try:
extract_arxiv_year("https://example.com/paper.pdf")
except ValueError as e:
# Error: Invalid arxiv URL format
图片处理
- 缺失的本地图片:产生警告,保留原路径
- HTTP图片链接:自动跳过
- markdown格式错误:正确识别并处理
技术细节
arxiv年份转换
arxiv ID格式: YYMM.XXXXX
- 前两位是年份后两位:
25→2025,24→2024 - 支持1900-2099年范围
图片路径处理
- 识别markdown和HTML中的图片
- 解析相对或绝对路径
- 复制文件到目标目录
- 更新markdown中的引用为相对路径