{ "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 [--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 :按 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 镜像仓(生成物,不在镜像仓手改)" } ] }