81 lines
5.7 KiB
Markdown
81 lines
5.7 KiB
Markdown
# netease-music
|
||
|
||
网易云音乐遥控器:一句话对上云里的内容(每日推荐 / 歌单 / 榜单 / 收藏 / FM / 最近 / 播客)并放出来;播放侧管好本机队列现场(快照 / back / 追加)
|
||
|
||
以 Pi package(技能形态)发布;同一个源还有 CLI 出口 `netease-music-cli`。技能本体在 `skills/netease-music/`。
|
||
|
||
- 平台:macOS
|
||
- 许可:GPL-3.0-or-later(全文见 [LICENSE](LICENSE))
|
||
|
||
## 安装
|
||
|
||
```sh
|
||
pi install git:gitea.vhkd.top/pi-hub/netease-music.git@v0.1.6
|
||
```
|
||
|
||
装完 `pi-skill list` 能看到 `netease-music`,`pi-skill netease-music check` 会告诉还缺什么。
|
||
|
||
## 先准备什么
|
||
|
||
- `node`(运行环境),接口客户端与 mpv 控制都是 node 脚本,零 npm 依赖
|
||
- `python3`(运行环境)
|
||
- `mpv`(命令),安装:brew install mpv;真正的播放器(常驻 + unix socket 控制)
|
||
- `qrencode`(命令),安装:brew install qrencode;只在扫码登录时用
|
||
|
||
## 常用命令
|
||
|
||
| 命令 | 说明 |
|
||
|---|---|
|
||
| `daily` | 每日推荐分页入队播放(--limit N / --offset N / --shuffle;JSON 带 total) |
|
||
| `play` | 播一首或一整张:关键词→最匹配一首;歌单 id/链接→整张(--shuffle) |
|
||
| `play-ids` | play-ids <id,id,...> [--start N]:按输入顺序整列替换,1 基起点默认 1;保留重复项,选中歌不可播则保留旧队列;关闭随机 |
|
||
| `search` | 只搜不播:列出 id/歌名/歌手/时长/是否要 VIP(--limit N / --offset N;JSON 带 total) |
|
||
| `cover` | cover <歌曲关键词|id> [--download PATH] [--force]:只读查询封面,JSON 为 id/name/artist/cover;下载为 id/cover/file/bytes,最多 10 MB(10000000 字节),覆盖需 --force;所有原语歌曲对象含字符串 cover(缺失为空) |
|
||
| `artist` | 歌手热门分页入队播放(名字或 id;--limit N / --offset N;JSON 带 total) |
|
||
| `album` | 专辑按顺序分页入队播放(名字、id 或专辑链接;--limit N / --offset N;JSON 带 total) |
|
||
| `albums` | 只列不播:歌手的专辑(含老专辑;--limit N / --offset N;JSON 带 total) |
|
||
| `liked` | 分页播放「我喜欢的音乐」(--limit N / --offset N;JSON 带 total) |
|
||
| `liked-ids` | 只读喜欢 ID 全表;--json 为 {count,total,ids:[数字,...]};歌曲 JSON 透传可用的布尔 liked,缺字段时用全表按 id 判定 |
|
||
| `myplaylists` | 我的歌单(自建 + 收藏);--limit N / --offset N 分页,collected/own 筛本页;JSON 带 total |
|
||
| `pause` | 暂停 |
|
||
| `resume` | 继续播放 |
|
||
| `toggle` | 暂停/继续切换 |
|
||
| `next` | 下一首 |
|
||
| `prev` | 上一首 |
|
||
| `stop` | 停止并清空队列 |
|
||
| `clear` | 停止并清空 mpv 和本地队列,收掉保活;配置和快照保留,可重复调用 |
|
||
| `volume` | 读或设音量(0-130) |
|
||
| `seek` | 跳进度(相对秒数,如 +30) |
|
||
| `queue` | 看队列(mpv 真值):每首歌名、时长,标出正在放的那首 |
|
||
| `jump` | 跳到队列第 N 首(从 1 开始),并回读状态确认 |
|
||
| `remove` | remove <index>:按 queue 显示的 1 基序号删除;当前项选下一首,末尾选上一首,删空停止;同步本地文件 |
|
||
| `status` | 当前曲目/进度/音量/队列位置(mpv 真值);repeat_mode 为 off/list/single |
|
||
| `lyric` | 当前歌曲歌词(默认只显示当前句与下一句,--all 全文) |
|
||
| `like` | 把当前这首歌加入「我喜欢的音乐」 |
|
||
| `unlike` | 把当前这首歌移出「我喜欢的音乐」 |
|
||
| `shuffle` | 队列随机开/关 |
|
||
| `repeat` | repeat off|list|single:关闭/整列/单曲循环;on 和无参数 = list;状态追加 repeat_mode,保留旧 repeat 布尔含义 |
|
||
| `login` | 登录(--sms 手机号+验证码两步为主力;不带参数出二维码扫码),cookie 存本机 config |
|
||
| `setup` | 写配置(--cookie/--quality);不带参数打印登录办法 |
|
||
| `check` | 只读自检:依赖、登录态、mpv 可用性、默认音质 |
|
||
| `playlist` | 放一张歌单:名字/id/链接都行(--limit N / --offset N;JSON 带 total) |
|
||
| `playlists` | 搜歌单(只列不播):id / 名字 / 曲目数 / 作者 / 是否已收藏;--limit N / --offset N,JSON 带 total |
|
||
| `charts` | 列排行榜(只列不播):飙升榜 / 新歌榜 / …;--limit N / --offset N,JSON 带 total |
|
||
| `chart` | 放某个榜单:名字或 id(--limit N / --offset N;JSON 带 total) |
|
||
| `myalbums` | 我收藏的专辑(只列不播;--limit N / --offset N;JSON 带 total;id 可喂 album) |
|
||
| `myartists` | 我收藏的歌手(只列不播;--limit N / --offset N;JSON 带 total;id 可喂 artist) |
|
||
| `fm` | 私人 FM:没听过的歌,整列入队开播(--limit N) |
|
||
| `dislike` | dislike [歌曲id]:私人 FM 不喜欢(fm/trash);省略 id 用当前歌曲,只上报,不自动切歌或改队列 |
|
||
| `recent` | 最近播放(只列不播,一周内,含播放次数;--limit N / --offset N;JSON 带 total) |
|
||
| `replay` | 再放一次最近第 N 首(默认 1 = 最近那首) |
|
||
| `podcasts` | 我的播客订阅(只列不播;--recommend 看推荐的;--limit N / --offset N;JSON 带 total) |
|
||
| `podcast` | 放某播客的节目(--limit N 默认 3;--offset N;名字或 id;JSON 带 total) |
|
||
| `episode` | 放某一期节目(节目 id 从 podcast 输出里抄) |
|
||
| `queues` | 看本地队列快照(每次换队列会自动留一条「上一条」) |
|
||
| `queue-save` | 把当前队列存成命名快照(只存歌曲列表,地址回放时重取) |
|
||
| `queue-load` | 载入某个命名快照(含当时位置与随机状态) |
|
||
| `back` | 切回上一条队列(含位置);再 back 一次切回来 |
|
||
| `add` | 把一首加到当前队列尾部,不动正在放的那首 |
|
||
|
||
用法与对外契约见技能内的 `SKILL.md` 与 `REFERENCE.md`。
|