README.md
Rama main · réplica de lectura del repositorio original.
# MusicFlow
轻量级音乐搜索下载入库工具:Web 端搜索歌曲、一键下载,自动补全 ID3 标签/封面/歌词,落盘到曲库目录,实现"即搜、即下、即听"。

- 后端:Rust (axum) + [melodl](https://github.com/pingfury108/melodl)(musicdl 的 Rust 复刻:网易/QQ/酷狗/酷我/咪咕等多源)
- 前端:单页 HTML,支持批量选择下载、任务状态实时跟踪
- 下载:串行队列,自动写入 ID3/封面/歌词(.lrc)
- 入库:下载文件直接落盘到曲库目录,由外部播放器(Navidrome 等)自行扫描
## 本地开发
```bash
cargo run
```
访问 http://localhost:8000
## 部署(runpulse)
```bash
cargo build --release
runpulse start ./target/release/musicflow --name musicflow \
--cwd "$(pwd)" \
--env MUSIC_DIR=/path/to/music --env PORT=8099 --env RUST_LOG=info
```
> 注意:通过 `MUSIC_DIR` 指定音乐库目录(与播放器服务共享)。
> 服务无鉴权,请勿暴露公网。
## 环境变量
| 变量 | 默认值 | 说明 |
| --- | --- | --- |
| `MUSIC_DIR` | `./music` | 音乐保存目录 |
| `MUSIC_SOURCES` | 咪咕/网易/QQ/酷我/千千 | 启用的音源,逗号分隔(兼容 musicdl 命名;melodl 未实现的源如千千会自动跳过) |
| `SEARCH_SIZE` | `10` | 每个音源返回的结果数 |
| `SEARCH_TIMEOUT` | `30` | 搜索总时长上限(秒),超时源放弃并返回其余结果 |
| `META_TTL` | `3600` | 曲库元数据(榜单/歌单/专辑)缓存秒数 |
| `MATCH_THRESHOLD` | `0.45` | 批量下载自动匹配阈值(低于则标记未匹配) |
| `CACHE_TTL` | `1800` | 搜索结果缓存秒数(过期需重新搜索) |
## 声明
仅供学习研究使用,请尊重各音乐平台版权与条款;musicdl 采用 PolyForm Noncommercial 协议,禁止商用。