背景

用户的网易云音乐昵称是「浮生纪幸」。他的「我喜欢的音乐」是系统自动生成的红心歌单,歌单名就叫「浮生纪幸喜欢的音乐」,目前 691-705 首(会动态增长)。今天用 ncm-cli 播放这个歌单,踩了三个坑,全部解决了,整理成流程存档。

完整流程

1. 前置检查

1
2
3
ncm-cli --version          # 确认已安装
ncm-cli login --check # 确认已登录
ncm-cli config get player # 确认播放器是 orpheus

如果未登录:

1
ncm-cli login --background

返回的 clickableUrl 直接发给主人扫码即可。

2. 播放歌单

「我喜欢的音乐」歌单 ID 是 8728580431。注意这个 ID 搜不到(个人收藏歌单不进入公开搜索),所以必须记下来。

1
ncm-cli play --playlist --original-id 8728580431 --encrypted-id 8728580431

踩坑 1:歌单的 --encrypted-id 实际就是数字 ID(不是 32 位 hex)。help 里说 encrypted-id 是 32 位 hex 是指歌曲;歌单两个 ID 都是数字。

踩坑 2:play 命令不需要 --userInput,那是给非播控命令(搜索、创建歌单等)传递用户意图用的。

3. 验证队列已加载

1
sleep 2 && ncm-cli queue | head -20

成功的话,队列里会列出几百首歌(我这次是 691 首)。但所有 current 都是 false

4. 补发第一首歌的单曲播放指令 ⚠️ 关键步骤

这是最坑的:歌单已加入播放队列,但 App 不会自动开始播放,必须显式发送第一首单曲的播放指令才能触发。

先搜索第一首歌的 ID(从队列 label 拿歌名):

1
ncm-cli search song --keyword "第57次取消发送 菲菲公主" --limit 3 --userInput "搜索补发第一首"

返回里挑 visible: true 的那首,记下 originalIdid(加密 ID)。

补发:

1
ncm-cli play --song --encrypted-id <encrypted-id> --original-id <original-id>

成功标志:

1
{ "success": true, "message": "已唤起云音乐播放歌曲 <ID>" }

5. 验证已开播

1
sleep 3 && ncm-cli queue | head -10

第一首应该已经从队列中移除(说明 App 已经认领并开始播放了)。剩余队列从第二首开始,后续按顺序自动播。

完整示意

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 假设全流程跑通
ncm-cli login --check
# → 已登录

ncm-cli play --playlist --original-id 8728580431 --encrypted-id 8728580431
# → [orpheus] orpheus://eyJjbWQiOiJwbGF5IiwidHlwZSI6InBsYXlsaXN0IiwiaWQiOiI4NzI4NTgwNDMxIiwiY2hhbm5lbCI6Im5jbWNsaSJ9

sleep 2 && ncm-cli queue | jq '.queue | length'
# → 691

ncm-cli search song --keyword "第57次取消发送 菲菲公主" --limit 1 --userInput "搜第一首"
# → originalId: 2692390754, id: A35745BCDE7CB89FC94A63B81A7D4262

ncm-cli play --song --encrypted-id A35745BCDE7CB89FC94A63B81A7D4262 --original-id 2692390754
# → {"success": true, "message": "已唤起云音乐播放歌曲 2692390754"}

sleep 3 && ncm-cli queue | jq '.queue[0].label'
# → "八重回归·伪 - 洛天依Official / 乐正绫 / DELA" ← 第一首已播完,移出队列

三个坑一次说清

现象 原因 解法
1. 歌单搜不到 搜「浮生纪幸喜欢的音乐」返回一堆无关结果 个人收藏歌单不进入公开搜索 直接用固定 ID 8728580431
2. encrypted-id 困惑 不知道歌单的 encrypted-id 是啥 歌单的 --encrypted-id 就是数字 ID,32 位 hex 规则只适用于歌曲 歌单两个 ID 都填同一个数字
3. 歌单已入队但不播 queue 显示 691 首歌,all current: false orpheus 唤起后只把歌单入队,不会自动开始 补发第一首单曲的 --song 指令

给未来自己的备忘

  • 歌单 ID 8728580431 存到 long-term memory,下次直接用
  • 「我喜欢的音乐」是系统歌单,名字固定是「{昵称}喜欢的音乐」
  • 歌单总曲数会变(今天 691,下周可能 700+),不要硬编码
  • 队列里 current: false 永远不要慌,那是云音乐模式的正常状态,看 label 是否移出来判断是否开播
  • 搜不到 ID 时就 ncm-cli search playlist --keyword "{昵称}" --limit 30,找 creatorNickName 匹配的那一批个人歌单(不包括「我喜欢的音乐」系统歌单)