mvsep-cli 0.1.6

CLI tool for MVSEP music separation API
# MVSEP CLI

命令行工具,用于与 MVSEP (Music Vocal Separation) API 交互,进行音轨分离。

## 安装

```bash
cargo install mvsep-cli
```

或编译安装:

```bash
cargo build --release
```

## 快速开始

```bash
# 1. 设置 API Token
mvsep-cli config set-token <your_token>

# 2. 测试连接
mvsep-cli test

# 3. 查看可用算法
mvsep-cli list

# 4. 创建任务
mvsep-cli create audio.wav -t 49 --opt1 5 -o ./output

# 5. 等待完成并下载 (或使用 run 命令)
mvsep-cli run audio.wav -t 49 --opt1 5 -o ./output
```

## 命令

### 基础命令

| 命令 | 说明 |
|------|------|
| `test` | 测试 API 连接 |
| `version` | 显示版本信息 |
| `list` | 列出算法组和算法 |
| `query -a <id>` | 查询算法名称 |
| `query -a <id> -m <model_id>` | 查询模型名称 |
| `queue` | 查看队列信息 |

### 任务命令

| 命令 | 说明 |
|------|------|
| `create <file>` | 创建分离任务 |
| `run <file>` | 完整流程(创建 + 等待 + 下载) |
| `status <hash>` | 查看任务状态 |
| `wait <hash>` | 等待任务完成 |
| `download <hash>` | 下载结果 |

### 配置命令

| 命令 | 说明 |
|------|------|
| `config show` | 显示配置 |
| `config set-token <token>` | 设置 API Token |
| `config set-mirror <main\|mirror>` | 设置镜像服务器 |
| `config set-proxy-mode <system\|manual\|none>` | 设置代理模式 |
| `config set-proxy-host <host>` | 设置代理主机 |
| `config set-proxy-port <port>` | 设置代理端口 |
| `config set-output-dir <dir>` | 设置输出目录 |
| `config set-output-format <id>` | 设置默认输出格式 |
| `config set-interval <seconds>` | 设置轮询间隔 |

## 搜索系统

### 层级结构

- **Level 1**: 算法组 (如 "Vocals / Instrumental", "Drums, Bass and Synth")
- **Level 2**: 具体算法 (如 "MVSep Karaoke", "MDX-B Karaoke")  
- **Level 3**: 模型选项 (--opt1, --opt2, --opt3)

### list 命令

```bash
# 列出所有算法组和算法
mvsep-cli list

# 搜索算法
mvsep-cli list -k karaoke

# 查看特定算法(含模型选项)
mvsep-cli list -a 49 -r

# 显示输出格式
mvsep-cli list --formats
```

| 参数 | 说明 |
|------|------|
| `-k, --keywords` | 搜索关键词 |
| `-a, --algorithm` | 查看特定算法 ID |
| `-r, --recursive` | 显示所有子层级(模型选项) |
| `--formats` | 显示输出格式 |

### query 命令

```bash
# 查询算法名称
mvsep-cli query -a 49

# 查询模型名称
mvsep-cli query -a 49 -m 5
```

| 参数 | 说明 |
|------|------|
| `-a, --algorithm` | 算法 ID (必需) |
| `-m, --model` | 模型 ID (可选) |

## 使用示例

### 查看算法

```bash
# 列出所有算法组
mvsep-cli list

# 搜索 "karaoke" 相关算法
mvsep-cli list -k karaoke

# 查看算法 49 的详细信息和模型选项
mvsep-cli list -a 49 -r

# 查询算法名称
mvsep-cli query -a 49

# 查询模型名称
mvsep-cli query -a 49 -m 5
```

### 创建任务

```bash
# 基本用法
mvsep-cli create audio.wav -t 49 --opt1 5

# 指定输出格式
mvsep-cli create audio.wav -t 49 --opt1 5 -f 1

# 发布到演示页面
mvsep-cli create audio.wav -t 49 --opt1 5 --demo

# 设置轮询间隔
mvsep-cli create audio.wav -t 49 --opt1 5 -i 10

# 指定输出目录
mvsep-cli create audio.wav -t 49 --opt1 5 -o ./output
```

### 等待完成并下载

```bash
# 方式1: 使用 run 命令 (推荐)
mvsep-cli run audio.wav -t 49 --opt1 5 -o ./output

# 方式2: 分步执行
mvsep-cli create audio.wav -t 49 --opt1 5
# 输出: Task created! Hash: xxx
# Use: mvsep-cli status xxx
# Or:  mvsep-cli wait xxx
# Or:  mvsep-cli run <file> ...

mvsep-cli wait <hash>
mvsep-cli download <hash> -o ./output
```

### 下载特定文件

```bash
# 下载所有结果
mvsep-cli download <hash> -o ./output

# 下载指定索引的文件 (0, 1, 2...)
mvsep-cli download <hash> -n 0 -o ./output
```

## 输出格式

| ID | 格式 |
|----|------|
| 0 | MP3 (320 kbps) |
| 1 | WAV (16 bit) |
| 2 | FLAC (16 bit) |
| 3 | M4A (lossy) |
| 4 | WAV (32 bit) |
| 5 | FLAC (24 bit) |

## 配置优先级

环境变量 > 配置文件 (~/.mvsep_cli_config)

### 环境变量

- `MVSEP_API_TOKEN` - API Token
- `MVSEP_API_URL` - API 地址
- `MVSEP_OUTPUT_DIR` - 输出目录
- `MVSEP_POLL_INTERVAL` - 轮询间隔
- `PROXY_HOST` - 代理主机
- `HTTP_PROXY_PORT` / `HTTPS_PROXY_PORT` - 代理端口

### 代理模式

| 模式 | 说明 |
|------|------|
| `system` | 使用系统代理 (默认) |
| `manual` | 使用手动设置的代理 |
| `none` | 不使用代理 |

```bash
# 设置代理模式
mvsep-cli config set-proxy-mode none    # 不使用代理
mvsep-cli config set-proxy-mode manual  # 手动代理
mvsep-cli config set-proxy-host 127.0.0.1
mvsep-cli config set-proxy-port 7897
```

## 注意事项

1. 使用 `--opt1` 指定模型(可通过 `list -a <id> -r` 查看可用模型)
2. 某些算法没有额外选项,无需指定 `--opt1`

## 构建

```bash
cargo build --release
# 输出: target/release/mvsep-cli
```

## License

MIT