WolfGenerals/ncm-player0

ncm-player

网易云音乐浮窗播放器:支持歌单/歌词/歌词翻译/播放队列/账号登录,适配皮肤主题

AI 分析

在 DSH Web 界面中嵌入可拖拽的网易云音乐播放器,支持扫码登录和歌词同步。适合希望在工作区内直接听歌娱乐的 Web 端用户。

包名
ncm-player
版本
1.0.3
许可证
MIT
最近更新
2026年8月14日

安装

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:WolfGenerals/ncm-player

ncm-player — 网易云音乐浮窗

一个运行在 DeepSeek Harness (DSH) Web 界面里的网易云音乐浮窗:可拖拽、可折叠, 支持歌单/歌曲/专辑浏览、同步歌词与翻译、播放队列、扫码登录自己账号。

功能

  • 🎵 播放:播放/暂停、上一首/下一首、进度拖拽、音量、顺序/单曲循环/随机、封面
  • 📃 歌单页:发现(搜索歌曲/歌单 + 热门歌单)/ 我的(创建的歌单 / 收藏的歌单 / 我喜欢的音乐 / 收藏的专辑)
  • 📝 歌词:逐行同步高亮、点击跳转、歌词翻译(有翻译时显示)、迷你模式显示歌词
  • 🔄 队列:管理/清空,自动持久化(重启后恢复队列、进度、模式、音量)
  • 👤 账号:扫码登录(App 扫一扫)或粘贴 Cookie;登录后可用"我的音乐"与收藏
  • 🪟 浮窗:可拖拽、收起为迷你条(可拖、显示歌词)、隐藏为右下角音符按钮;颜色跟随 DSH 皮肤主题

安装

方式一:dsh 命令(推荐)

dsh plugin --profile web add github:WolfGenerals/ncm-player

该命令会在 web profile 中安装依赖,并把 ncm-player 加入 dsh.profile.bundles 列表(见 $DSH_HOME/profiles/web/package.json)。

方式二:手动编辑 profile

// $DSH_HOME/profiles/web/package.json
{
  "dependencies": { "ncm-player": "github:WolfGenerals/ncm-player" },
  "dsh": { "profile": { "bundles": [ /* ... */, "ncm-player" ] } }
}
cd "$DSH_HOME/profiles/web" && pnpm install

本地开发

git clone https://github.com/WolfGenerals/ncm-player.git
# 或用 link: 指向本地目录
"ncm-player": "link:C:/Projects/DSH/ncm-player"

重启 DSH Web 后生效。插件的 cordis.patch.yml 会在 boot 时把 ncm-player 行插入组合;client 半部通过 dsh.client.inject 组合进 Web 客户端 bundle。

工作原理

  • Host 半部 (index.mjs):cordis 插件,通过 subprocess 派生 node -e 子进程 完成对 music.163.com 的 HTTP 请求(DSH 沙箱内没有 fetch;weapi 加密在子进程内用 Node crypto 实现)。注册 webServer 路由 /ncm/api 供浏览器调用。
  • Client 半部 (client/src.js,构建产物 lib/client.js):浏览器 bundle,同源 fetch('/ncm/api') 触发 API 操作;浮窗 UI 注册在 shell.overlay 槽位。构建: node scripts/build.mjs(无依赖,纯拼接包装)。
  • 数据:账号 Cookie 与播放队列合并保存在本机 ~/.dsh/ncmply-settings(单个文件)。

数据文件格式 (~/.dsh/ncmply-settings)

{
  "account": { "cookie": "...", "uid": 123, "nickname": "..." },
  "state": {
    "queue": [ { "id": 1, "name": "...", "artists": "...", "album": "...", "cover": "...", "duration": 0 } ],
    "index": -1, "mode": "order", "vol": 0.8, "quality": 320000, "time": 0
  }
}

注意事项

  • 依赖本机 PATH 上的 Node.js 运行时,以及可访问 music.163.com 的网络。
  • 登录 Cookie 只用于请求 music.163.com,不发送给任何第三方。
  • 收藏(点❤️)受网易云账号风控影响,失败时会有提示,属正常现象。
  • 部分歌曲受版权/会员限制无法播放;歌词翻译仅当歌曲有翻译数据时显示。
  • 仅供个人学习使用,请遵守网易云音乐服务条款与当地法律法规。

开发

# 结构
#   index.mjs           Host 半部(cordis 插件, webServer 路由 + node 子进程网络)
#   client/src.js       Client 半部源码(纯 JS + React.createElement,无 JSX/TS)
#   lib/client.js       Client 半部构建产物(scripts/build.mjs 生成)
#   scripts/build.mjs   无依赖构建脚本
#   cordis.patch.yml    组合 patch 层

Host 依赖 os/path 计算跨平台路径(Windows 用 C:\,其余用 /),settings 文件路径始终为 /.dsh/ncmply-settings

License

MIT