289 lines
9.1 KiB
JSON
289 lines
9.1 KiB
JSON
{
|
||
"summary": "网易云音乐遥控器:一句话对上云里的内容(每日推荐 / 歌单 / 榜单 / 收藏 / FM / 最近 / 播客)并放出来;播放侧管好本机队列现场(快照 / back / 追加)",
|
||
"useWhen": "用户要放网易云的音乐(每日推荐、指定歌曲/歌手、我喜欢的音乐)、问现在在放什么,或要暂停/切歌/调音量/看歌词/取歌曲封面时",
|
||
"tier": 1,
|
||
"entry": {
|
||
"path": "scripts/netease-music.sh"
|
||
},
|
||
"aliases": [
|
||
"netease",
|
||
"netease-music"
|
||
],
|
||
"commands": [
|
||
{
|
||
"name": "daily",
|
||
"summary": "每日推荐分页入队播放(--limit N / --offset N / --shuffle;JSON 带 total)"
|
||
},
|
||
{
|
||
"name": "play",
|
||
"summary": "播一首或一整张:关键词→最匹配一首;歌单 id/链接→整张(--shuffle)"
|
||
},
|
||
{
|
||
"name": "play-ids",
|
||
"summary": "play-ids <id,id,...> [--start N]:按输入顺序整列替换,1 基起点默认 1;保留重复项,选中歌不可播则保留旧队列;关闭随机"
|
||
},
|
||
{
|
||
"name": "search",
|
||
"summary": "只搜不播:列出 id/歌名/歌手/时长/是否要 VIP(--limit N / --offset N;JSON 带 total)"
|
||
},
|
||
{
|
||
"name": "cover",
|
||
"summary": "cover <歌曲关键词|id> [--download PATH] [--force]:只读查询封面,JSON 为 id/name/artist/cover;下载为 id/cover/file/bytes,最多 10 MB(10000000 字节),覆盖需 --force;所有原语歌曲对象含字符串 cover(缺失为空)"
|
||
},
|
||
{
|
||
"name": "artist",
|
||
"summary": "歌手热门分页入队播放(名字或 id;--limit N / --offset N;JSON 带 total)"
|
||
},
|
||
{
|
||
"name": "album",
|
||
"summary": "专辑按顺序分页入队播放(名字、id 或专辑链接;--limit N / --offset N;JSON 带 total)"
|
||
},
|
||
{
|
||
"name": "albums",
|
||
"summary": "只列不播:歌手的专辑(含老专辑;--limit N / --offset N;JSON 带 total)"
|
||
},
|
||
{
|
||
"name": "liked",
|
||
"summary": "分页播放「我喜欢的音乐」(--limit N / --offset N;JSON 带 total)"
|
||
},
|
||
{
|
||
"name": "liked-ids",
|
||
"summary": "只读喜欢 ID 全表;--json 为 {count,total,ids:[数字,...]};歌曲 JSON 透传可用的布尔 liked,缺字段时用全表按 id 判定"
|
||
},
|
||
{
|
||
"name": "myplaylists",
|
||
"summary": "我的歌单(自建 + 收藏);--limit N / --offset N 分页,collected/own 筛本页;JSON 带 total"
|
||
},
|
||
{
|
||
"name": "pause",
|
||
"summary": "暂停"
|
||
},
|
||
{
|
||
"name": "resume",
|
||
"summary": "继续播放"
|
||
},
|
||
{
|
||
"name": "toggle",
|
||
"summary": "暂停/继续切换"
|
||
},
|
||
{
|
||
"name": "next",
|
||
"summary": "下一首"
|
||
},
|
||
{
|
||
"name": "prev",
|
||
"summary": "上一首"
|
||
},
|
||
{
|
||
"name": "stop",
|
||
"summary": "停止并清空队列"
|
||
},
|
||
{
|
||
"name": "clear",
|
||
"summary": "停止并清空 mpv 和本地队列,收掉保活;配置和快照保留,可重复调用"
|
||
},
|
||
{
|
||
"name": "volume",
|
||
"summary": "读或设音量(0-130)"
|
||
},
|
||
{
|
||
"name": "seek",
|
||
"summary": "跳进度(相对秒数,如 +30)"
|
||
},
|
||
{
|
||
"name": "queue",
|
||
"summary": "看队列(mpv 真值):每首歌名、时长,标出正在放的那首"
|
||
},
|
||
{
|
||
"name": "jump",
|
||
"summary": "跳到队列第 N 首(从 1 开始),并回读状态确认"
|
||
},
|
||
{
|
||
"name": "remove",
|
||
"summary": "remove <index>:按 queue 显示的 1 基序号删除;当前项选下一首,末尾选上一首,删空停止;同步本地文件"
|
||
},
|
||
{
|
||
"name": "status",
|
||
"summary": "当前曲目/进度/音量/队列位置(mpv 真值);repeat_mode 为 off/list/single"
|
||
},
|
||
{
|
||
"name": "lyric",
|
||
"summary": "当前歌曲歌词(默认只显示当前句与下一句,--all 全文)"
|
||
},
|
||
{
|
||
"name": "like",
|
||
"summary": "把当前这首歌加入「我喜欢的音乐」"
|
||
},
|
||
{
|
||
"name": "unlike",
|
||
"summary": "把当前这首歌移出「我喜欢的音乐」"
|
||
},
|
||
{
|
||
"name": "shuffle",
|
||
"summary": "队列随机开/关"
|
||
},
|
||
{
|
||
"name": "repeat",
|
||
"summary": "repeat off|list|single:关闭/整列/单曲循环;on 和无参数 = list;状态追加 repeat_mode,保留旧 repeat 布尔含义"
|
||
},
|
||
{
|
||
"name": "login",
|
||
"summary": "登录(--sms 手机号+验证码两步为主力;不带参数出二维码扫码),cookie 存本机 config"
|
||
},
|
||
{
|
||
"name": "setup",
|
||
"summary": "写配置(--cookie/--quality);不带参数打印登录办法"
|
||
},
|
||
{
|
||
"name": "check",
|
||
"summary": "只读自检:依赖、登录态、mpv 可用性、默认音质"
|
||
},
|
||
{
|
||
"name": "playlist",
|
||
"summary": "放一张歌单:名字/id/链接都行(--limit N / --offset N;JSON 带 total)"
|
||
},
|
||
{
|
||
"name": "playlists",
|
||
"summary": "搜歌单(只列不播):id / 名字 / 曲目数 / 作者 / 是否已收藏;--limit N / --offset N,JSON 带 total"
|
||
},
|
||
{
|
||
"name": "charts",
|
||
"summary": "列排行榜(只列不播):飙升榜 / 新歌榜 / …;--limit N / --offset N,JSON 带 total"
|
||
},
|
||
{
|
||
"name": "chart",
|
||
"summary": "放某个榜单:名字或 id(--limit N / --offset N;JSON 带 total)"
|
||
},
|
||
{
|
||
"name": "myalbums",
|
||
"summary": "我收藏的专辑(只列不播;--limit N / --offset N;JSON 带 total;id 可喂 album)"
|
||
},
|
||
{
|
||
"name": "myartists",
|
||
"summary": "我收藏的歌手(只列不播;--limit N / --offset N;JSON 带 total;id 可喂 artist)"
|
||
},
|
||
{
|
||
"name": "fm",
|
||
"summary": "私人 FM:没听过的歌,整列入队开播(--limit N)"
|
||
},
|
||
{
|
||
"name": "dislike",
|
||
"summary": "dislike [歌曲id]:私人 FM 不喜欢(fm/trash);省略 id 用当前歌曲,只上报,不自动切歌或改队列"
|
||
},
|
||
{
|
||
"name": "recent",
|
||
"summary": "最近播放(只列不播,一周内,含播放次数;--limit N / --offset N;JSON 带 total)"
|
||
},
|
||
{
|
||
"name": "replay",
|
||
"summary": "再放一次最近第 N 首(默认 1 = 最近那首)"
|
||
},
|
||
{
|
||
"name": "podcasts",
|
||
"summary": "我的播客订阅(只列不播;--recommend 看推荐的;--limit N / --offset N;JSON 带 total)"
|
||
},
|
||
{
|
||
"name": "podcast",
|
||
"summary": "放某播客的节目(--limit N 默认 3;--offset N;名字或 id;JSON 带 total)"
|
||
},
|
||
{
|
||
"name": "episode",
|
||
"summary": "放某一期节目(节目 id 从 podcast 输出里抄)"
|
||
},
|
||
{
|
||
"name": "queues",
|
||
"summary": "看本地队列快照(每次换队列会自动留一条「上一条」)"
|
||
},
|
||
{
|
||
"name": "queue-save",
|
||
"summary": "把当前队列存成命名快照(只存歌曲列表,地址回放时重取)"
|
||
},
|
||
{
|
||
"name": "queue-load",
|
||
"summary": "载入某个命名快照(含当时位置与随机状态)"
|
||
},
|
||
{
|
||
"name": "back",
|
||
"summary": "切回上一条队列(含位置);再 back 一次切回来"
|
||
},
|
||
{
|
||
"name": "add",
|
||
"summary": "把一首加到当前队列尾部,不动正在放的那首"
|
||
}
|
||
],
|
||
"errors": [
|
||
"usage",
|
||
"deps",
|
||
"auth",
|
||
"notfound",
|
||
"timeout",
|
||
"external",
|
||
"internal"
|
||
],
|
||
"requires": [
|
||
{
|
||
"kind": "runtime",
|
||
"name": "node",
|
||
"check": "which node",
|
||
"note": "接口客户端与 mpv 控制都是 node 脚本,零 npm 依赖"
|
||
},
|
||
{
|
||
"kind": "runtime",
|
||
"name": "python3",
|
||
"check": "which python3"
|
||
},
|
||
{
|
||
"kind": "binary",
|
||
"name": "mpv",
|
||
"install": "brew install mpv",
|
||
"check": "which mpv",
|
||
"note": "真正的播放器(常驻 + unix socket 控制)"
|
||
},
|
||
{
|
||
"kind": "binary",
|
||
"name": "qrencode",
|
||
"install": "brew install qrencode",
|
||
"check": "which qrencode",
|
||
"note": "只在扫码登录时用"
|
||
}
|
||
],
|
||
"config": [
|
||
{
|
||
"key": "cookie",
|
||
"desc": "登录 cookie(MUSIC_U=…),由 login 命令扫码写入",
|
||
"type": "string",
|
||
"secret": true,
|
||
"required": true,
|
||
"ask": "扫码登录一次:pi-skill netease-music login",
|
||
"note": "只存本机 local/skills/netease-music/config.json,不进共享仓库"
|
||
},
|
||
{
|
||
"key": "quality",
|
||
"desc": "音质级别:standard/higher/exhigh/lossless/hires",
|
||
"type": "enum",
|
||
"values": [
|
||
"standard",
|
||
"higher",
|
||
"exhigh",
|
||
"lossless",
|
||
"hires"
|
||
],
|
||
"default": "lossless"
|
||
}
|
||
],
|
||
"helpListsCommands": true,
|
||
"probeUnknownCommand": true,
|
||
"admin": [
|
||
{
|
||
"path": "scripts/install-cli.sh",
|
||
"runner": "sh",
|
||
"summary": "standalone 安装:不需要 Pi,把入口链接成 netease-music 并检查 node/mpv/python3"
|
||
},
|
||
{
|
||
"path": "scripts/publish.sh",
|
||
"runner": "sh",
|
||
"summary": "发布公开镜像:测试门禁通过后把技能目录整体覆盖到 gitea 镜像仓(生成物,不在镜像仓手改)"
|
||
}
|
||
]
|
||
}
|