Ctrl K
ComunidadGuías…

README.md

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
# 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 协议,禁止商用。