5a624a5d606e585414d81e4c8afb0f65377a8132
AM Downloader
独立的音乐搜索与下载 Web 服务,使用 AM 音乐 API 解析资源,并可选同步到 WebDAV/NAS。
特性
- 多用户登录、角色与权限隔离(admin / privileged / user)
- 积分账户、预扣、成功扣除、失败退款
- 兑换码批次生成、使用、撤销与审计
- 音乐搜索与分页
- 下载队列、用户任务去重、跨用户媒体资源去重、失败重试
- 自动识别实际音频格式,避免错误扩展名
- 标记解析后的音质与实际音质
- WebDAV/NAS 同步
- 可配置同曲低音质版本清理策略
- 可配置上传成功后的本地文件清理策略
- Docker Compose 部署
架构
9540 提供 Downloader Web/API;音乐解析服务通过配置的 AM_API_URL 访问,默认指向本机 9530。
运行时数据库和下载文件不会进入 Git 仓库。
快速部署
git clone <your-gitea-repository>
cd am-downloader
docker compose up -d --build
默认访问:http://127.0.0.1:9540
配置
Docker Compose 中只保存非敏感的运行参数。WebDAV 凭据通过 Web UI 的设置页面写入运行时数据库,不要将数据库提交到 Git。
可配置:
PORT:Web 服务端口,默认9540DB_PATH:SQLite 数据库路径DOWNLOAD_DIR:下载目录AM_API_URL:AM 音乐 API 地址WORKERS:下载 worker 数量
首次部署后进入设置页面填写 WebDAV 地址、用户名、密码和远程目录。
数据与安全
以下内容属于运行时数据,默认被 .gitignore 排除:
data/downloads/*.db- 日志、临时文件和本地环境文件
提交前应检查 Git diff,确认没有密码、Token、Cookie、私有密钥或个人环境配置。
开发
go test ./...
go build -o am-downloader .
前端为单页静态界面,由 Go 服务直接提供。
API
认证:
POST /api/auth/loginPOST /api/auth/logoutPOST /api/auth/passwordGET /api/auth/me
用户功能:
GET /api/searchGET /api/tasksPOST /api/tasksPOST /api/tasks/:id/retryDELETE /api/tasks/:idGET /api/creditsPOST /api/redeemGET/PUT /api/webdav/configPOST /api/webdav/test
管理员功能:
GET/POST /api/admin/usersPUT /api/admin/users/:idGET /api/admin/redeemPOST /api/admin/redeemPOST /api/admin/redeem/:id/revokeGET /api/admin/auditGET/PUT /api/admin/settingsPOST /api/admin/webdav/test
数据库迁移注意事项
首次从旧版本升级时,启动过程会自动执行 GORM schema migration,并将旧任务归属到首次创建的管理员账号;同时把旧的全局任务唯一索引改为按用户隔离的唯一索引,并创建共享媒体资源表。
升级前仍建议先备份 data/downloader.db。Docker 部署时不要把 data/ 或 downloads/ 加入 Git。
当前版本不会主动删除旧媒体文件;媒体资源记录缺失本地文件时会在下一次请求中重新取得资源。
Languages
Go
61.5%
HTML
38.2%
Dockerfile
0.3%