🚀 现代化PT资源发布助手 - 重构版本
本版本是对原项目的全面重构,在完全保持向后兼容性的同时,大幅提升了代码质量和开发体验:
🏗️ 现代化架构 - 模块化设计,符合Python最佳实践
⚙️ 智能配置 - 分层配置系统,支持环境变量覆盖
📝 专业日志 - 彩色输出,结构化记录
🛡️ 类型安全 - 完整的异常体系和类型检查
🧪 测试保证 - 完整的测试框架和代码覆盖
🔧 开发工具 - 自动化代码质量保证
- 🎬 自动获取PT-Gen简介信息 - 支持多个API源 + 备用接口
- 📋 MediaInfo信息提取 - 智能媒体分析
- 📸 自动截图生成 - 可配置截图参数
- 🖼️ 缩略图制作 - 自动生成预览图
- ☁️ 图床上传 - 支持多种图床服务(多线程并发上传)
- 🏷️ 智能命名 - 根据模板自动生成标题和文件名
- 📁 文件整理 - 自动创建目录结构
- 🌱 种子制作 - 一键生成torrent文件
- 🖌️ 海报下载 - 自动下载并上传豆瓣海报
- 💻 交互式CLI -
python src/main_cli.py命令行一键发布工作流
- 📺 剧集批量处理 - 支持批量重命名和分集处理
- 🔗 硬链接支持 - 节省存储空间
- 🎭 短剧特殊处理 - 专门的短剧命名和简介生成
- 🚀 API接口 - 完整的RESTful API(可选Bearer鉴权 + CORS白名单)
- 🐳 Docker支持 - 容器化部署
# 克隆项目
git clone https://github.com/bjdbjd/publish-helper.git
cd publish-helper
# 安装依赖
pip install -r requirements.txt
# 配置环境(可选)
cp .env.example .env
# 编辑 .env 文件配置你的API密钥本项目使用 pymediainfo 提取视频信息,需要 libmediainfo 库支持。
Windows & macOS: 无需手动安装,pymediainfo 已打包所需库文件。
Linux: 需要手动安装 libmediainfo:
# Debian/Ubuntu
apt install libmediainfo0v5
# CentOS/RHEL/Fedora
yum install libmediainfo # 或 dnf install libmediainfo
# Arch Linux
pacman -S libmediainfo如果在 Linux 服务器上运行时中文显示为方块或乱码,需要安装中文字体:
# Debian/Ubuntu
apt install fonts-wqy-zenhei fonts-wqy-microhei
# 或使用 Noto CJK 字体(更全面)
apt install fonts-noto-cjk
# CentOS/RHEL/Fedora
yum install wqy-zenhei-fonts
# Arch Linux
pacman -S wqy-zenhei
# 刷新字体缓存
fc-cache -f -v# GUI模式
python src/main_gui.py
# API模式
python src/main_api.py
# CLI模式(交互式命令行)
python src/main_cli.py统一镜像内含 Vue 前端 + Flask API + nginx(同一个容器),前端由镜像自行构建, 无需预先打包。镜像已发布到 GHCR:
# 拉取官方镜像启动(推荐,无需源码)
docker run -d --name publish-helper \
-p 15373:15373 \
-v ./volume/static:/app/static \
-v ./volume/media:/app/media \
ghcr.io/bjdbjd/publish-helper:latest
# 访问 http://localhost:15373用 compose(docs/publish-helper.yml 为拉取式,deploy/docker-compose.yml 为本地构建式):
docker compose -f deploy/docker-compose.yml up -d从源码构建统一镜像时,context 必须是两个仓库的公共父目录(前端是独立仓库 publish-helper-vue,与后端同级):
cd .. # 进入同时包含 publish-helper/ 与 publish-helper-vue/ 的目录
docker build -f publish-helper/deploy/Dockerfile -t publish-helper:local .
# 或在后端目录直接 make docker-build(会自动切到父目录)只需暴露 15373(nginx,同时提供界面与
/api反代);15372 是容器内的 Flask, 默认不对外暴露。旧文档里的docker build -f deploy/Dockerfile .已不再适用。
创建 .env 文件:
# API配置
API_PORT=15372
API_DEBUG=false
# PT-Gen配置(留空则用 static/settings.json 中的默认地址)
PTGEN_API_URL=
# 图床配置
IMAGE_HOST_TYPE=freeimage
IMAGE_HOST_API_KEY=your_image_host_key
# 日志配置
LOG_LEVEL=INFO
LOG_FILE=logs/app.log- 薄荷图床 - 需要API密钥
# 安装开发依赖
pip install -r requirements-dev.txt
# 安装pre-commit钩子
pre-commit install
# 运行测试
pytest tests/ -v --cov=src# 代码格式化
black src/ tests/
isort src/ tests/
# 代码检查
flake8 src/ tests/
mypy src/
# 或使用Makefile
make format # 格式化代码
make lint # 代码检查
make test # 运行测试publish-helper/
├── src/
│ ├── config/ # 配置管理
│ │ ├── __init__.py
│ │ └── settings.py
│ ├── utils/ # 工具模块
│ │ ├── logger.py # 日志系统
│ │ ├── exceptions.py # 异常定义
│ │ └── file_utils.py # 文件工具
│ ├── core/ # 核心功能(按领域拆分:data/text/video/torrent/picturebed/ptgen/...)
│ ├── gui/ # GUI界面
│ ├── api/ # API接口
│ ├── tools/ # 独立调试脚本(debug_ptgen.py)
│ ├── main_gui.py # GUI入口
│ ├── main_api.py # API入口
│ └── main_cli.py # CLI入口(交互式命令行)
├── libs/ # 跨平台二进制(deb/、macos/、pinyin/)
├── tests/ # 测试代码
├── docs/ # 文档
├── deploy/ # Dockerfile + docker-compose.yml
├── requirements.txt # 生产依赖
├── requirements-dev.txt # 开发依赖
- 📖 开发者指南 - 详细的开发文档
- 🧭 业务逻辑与测试要点 - 核心模块契约、API 路由、GUI/CLI 流程与测试覆盖矩阵(写测试先读这份)
- 📡 API 接口文档 - 28 个 REST 接口的参数、请求/响应结构与状态码(调用方先读这份)
- 🔧 重构说明 - 重构内容和改进说明(历史快照,见文首状态标注)
- 🐳 Docker部署 - 容器化部署指南
- ⚙️ 配置参考 - 完整的配置选项
欢迎贡献代码!请遵循以下步骤:
- Fork 项目
- 创建功能分支 (
git checkout -b feature/amazing-feature) - 提交更改 (
git commit -m 'Add amazing feature') - 推送到分支 (
git push origin feature/amazing-feature) - 创建 Pull Request
- 遵循 PEP 8 代码风格
- 使用 Black 进行代码格式化
- 添加类型注解
- 编写测试用例
- 更新文档
- 现代化项目架构
- 分层配置管理系统
- 专业日志框架
- 完整的异常处理体系
- 自动化开发工具链
- 完整的测试框架
- 代码质量大幅提升
- 更好的错误处理
- 改进的Docker配置
- 完善的文档系统
- 完全向后兼容
- 保持所有原有功能
- 现有配置自动迁移
在 v2.0.0 架构重构基础上持续迭代的稳定性与安全增强:
- 交互式 CLI -
python src/main_cli.py命令行一键发布工作流 - 豆瓣海报自动下载上传
- API 可选鉴权 + CORS 白名单(
API_AUTH_TOKEN/API_CORS_ORIGINS,默认关闭、向后兼容) - API 安全加固 - media 目录越权读写、
/api/getFile路径逃逸等 S1-S17 系列缺陷修复 - 核心层缺陷修复 - 中文转数字万进位、PT-Gen 分辨率误判、重命名重复追加扩展名等
- 截图多线程上传 - 结果按顺序回填、修复乱序与线程生命周期崩溃(
0xC0000409) - 多平台打包发布流水线 - Windows/macOS/Linux 三平台 PyInstaller 产物 + GitHub Release 自动化
- 打包版数据目录修正 - 用户设置不再因 onefile 临时目录重置,随包静态资源播种
本项目基于 GNU General Public License v3.0 开源。
- bjdbjd - 原作者和主要维护者
- Pixel-LH - 核心贡献者
- EasonWong0603 - 功能开发
- sertion1126 - Docker支持
- TommyMerlin - 功能改进
感谢所有为项目贡献代码、报告问题、提供建议的开发者和用户!
如果这个项目对你有帮助,请给我们一个 ⭐ Star!