Modrinth下载器 - 技术文档
项目架构
本项目由两个核心模块组成:
-
modrinth_downloader.py - 核心功能模块
- 负责与Modrinth API交互
- 实现搜索、版本获取和下载功能
- 提供命令行界面
-
modrinth_gui.py - 图形用户界面模块
- 基于tkinter构建
- 调用核心模块的功能
- 提供更友好的用户交互体验
Modrinth API集成
API端点使用
项目使用以下Modrinth API端点:
-
搜索模组:
GET https://api.modrinth.com/v2/search?query={query}
-
获取模组版本:
GET https://api.modrinth.com/v2/project/{id}/version
请求处理
- 使用
requests
库发送HTTP请求 - 默认User-Agent设置为
"ModrinthDownloader/1.0"
- 错误处理:
- 网络错误
- API返回错误
- JSON解析错误
核心功能实现
搜索功能 (search_mods()
)
- 构造搜索URL
- 发送GET请求
- 解析返回的JSON数据
- 返回格式化结果
版本获取 (get_project_versions()
)
- 使用模组ID构造版本请求URL
- 发送GET请求
- 解析并排序版本数据
- 返回版本列表
文件下载 (download_file()
)
- 创建
downloads
目录(如果不存在) - 发送流式GET请求
- 使用
tqdm
显示下载进度 - 保存文件到本地
- 返回保存路径
GUI设计与实现
主窗口结构
ModrinthDownloaderGUI
├── search_frame (搜索框和按钮)
├── results_tree (搜索结果列表)
├── details_frame
│ ├── desc_text (模组描述)
│ └── versions_tree (版本列表)
└── download_button (下载按钮)
事件处理流程
-
搜索事件 (
on_search()
)- 获取搜索词
- 调用
search_mods()
- 更新结果列表
-
模组选择 (
on_mod_select()
)- 获取选中模组ID
- 调用
get_project_versions()
- 更新详情和版本列表
-
下载事件 (
on_download()
)- 获取选中版本
- 调用
download_file()
- 显示下载结果
扩展指南
添加新功能
-
支持更多模组信息:
- 修改
search_mods()
返回更多字段 - 更新GUI显示更多信息
- 修改
-
多文件下载:
- 修改版本选择逻辑
- 实现批量下载功能
-
本地模组管理:
- 添加本地模组数据库
- 实现已下载模组列表
修改现有功能
-
更改下载目录:
- 修改
download_file()
中的保存路径
- 修改
-
添加代理支持:
- 在请求函数中添加代理参数
-
改进错误处理:
- 添加更详细的错误提示
常见问题
搜索无结果
可能原因:
- 网络连接问题
- API服务不可用
- 搜索词不匹配任何模组
解决方案:
- 检查网络连接
- 尝试不同的搜索词
- 稍后重试
下载失败
可能原因:
- 文件URL失效
- 磁盘空间不足
- 权限问题
解决方案:
- 检查保存路径权限
- 确保磁盘有足够空间
- 尝试其他版本
开发建议
-
使用虚拟环境:
python -m venv venv source venv/bin/activate # Linux/Mac venv\Scripts\activate # Windows
-
安装开发依赖:
pip install -e .
-
打包发布:
pyinstaller --onefile modrinth_gui.py