# MusicFlow 轻量级音乐搜索下载入库工具:Web 端搜索歌曲、一键下载,自动补全 ID3 标签/封面/歌词,落盘到曲库目录,实现"即搜、即下、即听"。 ![screenshot](docs/screenshot.png) - 后端: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 协议,禁止商用。