Files
miaosic/cmd/miaosic/README.md
2025-06-27 04:20:58 +08:00

271 lines
5.7 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# miaosic 命令行工具
> 注意: 改文档由deepseek生成实例可能会有错误
`miaosic` 是一个功能强大的音乐信息命令行工具支持多种音乐平台提供者可以搜索音乐、获取媒体信息、获取播放URL、下载歌词以及进行二维码登录等操作。
## 功能特性
- 🎵 搜索音乐(支持分页)
- 获取媒体详细信息
- 🔗 获取媒体播放URL支持指定音质
- 📜 获取歌词(支持多语言)
- 🔑 二维码登录支持
- 📋 列出所有支持的提供者及登录状态
- 💾 会话管理(跨命令保存登录状态)
## 使用指南
### 基本命令结构
```bash
miaosic [全局参数] <命令> [命令参数] [命令标志]
```
### 全局参数
| 参数 | 缩写 | 描述 |
|------|------|------|
| `--session-file` | `-s` | 指定会话文件路径(用于保存登录状态) |
### 命令列表
#### 1. 搜索音乐:`search`
搜索指定提供者的音乐。
```bash
./miaosic search <provider> <keyword> [flags]
```
**参数:**
- `<provider>`: 音乐提供者(如 netease, qq 等)
- `<keyword>`: 搜索关键词
**标志:**
- `-p, --page`: 页码默认1
- `--page-size`: 每页结果数默认10
**示例:**
```bash
./miaosic search netease "周杰伦" -p 1 --page-size 5
```
**输出示例:**
```
Page.01 for "周杰伦"
1. 屋顶 - 周杰伦,温岚 - 男女情歌对唱冠军全记录 - 5257138
2. 想你就写信 (Live) - 周杰伦,李硕,张鑫 - 中国新歌声第二季 第13期 - 509781655
3. 布拉格广场 - 蔡依林,周杰伦 - 看我72变 - 210049
4. 默 (Live) - 李荣浩,周杰伦 - 2021中国好声音 第1期 - 1888354230
5. 因为爱情 (Live) - 周杰伦,那英 - 中国新歌声第二季 第1期 - 490595315
```
#### 2. 获取媒体信息:`info`
获取指定URI的媒体信息。
```bash
./miaosic info <provider> <uri>
```
**参数:**
- `<provider>`: 音乐提供者
- `<uri>`: 媒体URIURL 或 ID
**示例:**
```bash
./miaosic info netease 1827600686
```
**输出示例:**
```
Title: 还是会想你
Artist: 林达浪,h3R3
Album: 还是会想你
Cover https://p1.music.126.net/9FhSEQtMhP-JP3_U84YfWQ==/109951165798773745.jpg
Provider: netease
Identifier: 1827600686
```
#### 3. 获取媒体URL`url`
获取指定URI的媒体播放URL。(部分歌源可能需要登陆)
```bash
miaosic url <provider> <uri> [flags]
```
**参数:**
- `<provider>`: 音乐提供者
- `<uri>`: 媒体URI
**标志:**
- `--quality`: 音质偏好128k, 192k, 256k, 320k, hq, sq
**示例:**
```bash
miaosic url netease 1827600686
```
**输出示例:**
```
URL 1:
Quality: 320k
URL: http://example.com/audio.mp3
Headers:
User-Agent: Mozilla/5.0
Referer: http://example.com
```
#### 4. 获取歌词:`lyric`
获取指定URI的歌词。
```bash
miaosic lyric <provider> <uri> [flags]
```
**参数:**
- `<provider>`: 音乐提供者
- `<uri>`: 媒体URI
**标志:**
- `-o, --output`: 指定输出文件
- `--save`: 自动保存歌词文件名格式歌名_歌手名.lrc
**示例:**
```bash
# 控制台输出歌词
miaosic lyric netease 1827600686
# 保存歌词到指定文件
miaosic lyric netease 1827600686 -o lyrics.txt
# 自动保存歌词
miaosic lyric netease 1827600686 --save
```
**输出示例(控制台):**
```
Language: zh
-----
[00:00.00]歌曲名:晴天
[00:05.00]歌手:周杰伦
...
-----
Language: en
-----
[00:00.00]Song: Qing Tian
[00:05.00]Artist: Jay Chou
...
-----
```
#### 5. 二维码登录:`qrlogin`
提供二维码登录相关操作。
##### 获取登录二维码:`getqrcode`
```bash
miaosic qrlogin getqrcode <provider>
```
**参数:**
- `<provider>`: 支持登录的音乐提供者
**示例:**
```bash
miaosic qrlogin getqrcode netease
```
**输出示例:**
```
Scan this QR code to login:
[显示二维码图片]
Key: 1234567890abcdef
URL: https://login.example.com/qrcode?key=1234567890abcdef
```
##### 验证登录:`verify`
```bash
miaosic qrlogin verify <provider> <key>
```
**参数:**
- `<provider>`: 音乐提供者
- `<key>`: 从 getqrcode 命令获取的 key
**示例:**
```bash
miaosic qrlogin verify netease 1234567890abcdef
```
**输出示例:**
```
Login successful!
Session: <session_string>
```
#### 6. 列出提供者:`providers`
列出所有注册的提供者及其登录状态。
```bash
miaosic providers
```
**输出示例:**
```
- bilibili-video: Not supported
- kugou: Not logged in
- kugou-instr: Not supported
- kuwo: Not supported
- netease: Logged in
```
## 配置文件
使用 `--session-file` 参数指定会话文件路径,以便在不同命令之间保持登录状态:
```bash
miaosic --session-file ~/.miaosic_session.json providers
```
会话文件格式为 JSON
```json
{
"netease": "session_string_here",
"qq": "another_session_string"
}
```
## 支持的提供者
| 提供者 | 搜索 | 媒体信息 | 播放URL | 歌词 | 登录 |
|----------------|------|----------|---------|------|------|
| netease | ✓ | ✓ | ✓ | ✓ | ✓ |
| kuwo | ✓ | ✓ | ✓ | ✓ | ✗ |
| kugou | ✓ | ✓ | ✓ | ✓ | ✓ |
| bilibili-video | ✓ | ✓ | ✓ | ✓ | ✗ |
## 常见问题
### 如何保存登录状态?
使用 `--session-file` 参数指定会话文件路径:
```bash
miaosic --session-file ~/.miaosic_session.json qrlogin getqrcode netease
miaosic --session-file ~/.miaosic_session.json qrlogin verify netease <key>
```
### 为什么二维码在我的终端不显示?
确保您使用的终端支持显示图片(如 iTerm2、Windows Terminal 等)。如果不支持,可以考虑使用其他终端或使用文本模式的二维码实现。
### 如何添加新的音乐提供者?
1. 实现 `miaosic.MediaProvider` 接口