给网易云曲库套一个桌面播放器外壳(YesPlayMusic)
YesPlayMusic 是一个用 Vue.js 与 Electron 写的第三方网易云音乐播放器,也能部署成网页版,依赖自建的 NeteaseCloudMusicApi 取数据。这篇拆它的数据链路、多端交付方式和音源替换机制,列出功能清单与部署命令,并对照两个同类播放器,帮读者判断自己的机器条件和账号风险是否适合用它。
YesPlayMusic 是用 Vue.js 与 Electron 开发的第三方网易云音乐播放器,登录账号后可播放歌曲、查看歌词与歌单,提供 Windows、macOS、Linux 桌面端和网页端。
曲库、歌单、每日推荐、歌词这些内容不由本项目提供,来自另一个开源项目 Binaryify/NeteaseCloudMusicApi。YesPlayMusic 负责的是外壳:界面、播放控制、歌词展示,以及桌面端的封装。想用它,得先把这个 API 服务跑起来,再让前端指向它,这是整套结构的前提。
仓库创建于 2020-10-09,最近一次提交是 2026-10-10,Star 33356、Fork 4656、Watcher 224,开放 Issue 648 条,采用 MIT 许可证,主要语言为 Vue,占语言构成的 52.5%,仓库地址是 https://github.com/qier222/YesPlayMusic。README 写明 2.0 Alpha 测试版已经发布,当前版本进入维护模式,除重大 bug 修复外不再更新新功能。
它怎么做到的
整体链路是:前端发起请求 → NeteaseCloudMusicApi 带着登录态去网易云取数 → 返回歌曲地址、歌单与歌词 → 前端用 Vuex 管理播放状态、用 vue-router 切换页面 → Electron 外壳补上托盘、全局快捷键、Mpris 这些浏览器给不了的能力。
请求发往哪个地址由构建时的环境变量 VUE_APP_NETEASE_API_URL 决定,本地开发填 http://localhost:3000,用 Nginx 反向代理时填 /api。构建产物落在 /dist,Electron 打包产物落在 /dist_electron。API 服务自己的实现细节,README 没有展开说明,只给出了上游项目链接。
主要功能
- 账号登录:支持扫码、手机、邮箱三种登录方式,登录后才能使用音乐库、云盘与每日推荐。
- 播放与歌词:支持 MV 播放、歌词滚动显示,提供私人 FM 与每日推荐歌曲。
- 海外播放:README 注明海外用户可直接播放,前提是登录网易云账号。
- 音源替换:支持 UnblockNeteaseMusic,自动用各类音源替换变灰歌曲链接。这一项网页版不支持;YouTube 音源需要自行安装
yt-dlp。 - 主题与外观:Light/Dark Mode 自动切换。v0.4.11 新增「主题颜色」选项,除原始颜色外提供日落、海洋、森林三种渐变配色,同时加入托盘图标颜色设置。
- Touch Bar 歌词:在配备 Touch Bar 的 MacBook 上,播放时 Touch Bar 中间实时显示当前歌词,原有的前进/后退、搜索和播放列表按钮已被移除,以留出显示空间。
- PWA:在 Chrome/Edge 里点击地址栏右边的 ➕ 可以安装到电脑。
- 周边能力:Last.fm Scrobble、音乐云盘、自定义快捷键与全局快捷键、Mpris 支持,README 明确写了无任何社交功能。
README 的特性列表里,「每日自动签到」这一条已被划掉,不再作为可用特性列出,仓库里没有说明该能力当前由什么替代。
几个关键设计
前后端分离,数据全靠外部 API
前端只承担界面与播放控制,所有内容请求都指向 VUE_APP_NETEASE_API_URL 指定的地址。README 提醒,如果 API 和网页不在同一域名下(跨域),会出现一些 bug,所以建议用 Nginx 把 API 路径映射为 /api。这套拆分意味着 YesPlayMusic 的仓库里没有服务端逻辑,接口稳定性、可用性都跟着上游 API 项目走。
一套代码,多种交付形态
同一份 Vue 代码可以产出 Electron 桌面客户端、PWA、Docker 镜像和 Vercel 站点。桌面端可以直接从 Releases 页面下载安装包,也能自己打包:
yarn electron:build --windows nsis:ia32
yarn electron:build --windows nsis:arm64
yarn electron:build --linux deb:armv7l
yarn electron:build --macos dir:arm64
四条命令分别对应 Windows 32 位、Windows ARM、Debian armv7l(树莓派等)、macOS ARM,打包出来的文件在 /dist_electron 目录下。网页形态走 yarn run build,把 /dist 上传到 Web 服务器;容器形态走 docker build -t yesplaymusic . 加 docker run -d --name YesPlayMusic -p 80:80 yesplaymusic,也可以用 docker-compose up -d。
音源替换做成独立能力
变灰歌曲由 UnblockNeteaseMusic 处理,它会自动用各类音源替换掉失效的歌曲链接。README 明确写了这条能力网页版不支持,只在桌面端生效,YouTube 音源还需要用户自行安装 yt-dlp。Docker 部署时有人反馈第三方选项里找不到 UnblockNeteaseMusic 开关,这个是 Issue 里记录过的情况。
这样设计的代价
多出一个得自己维护的服务。网页端和自建服务器形态都要先部署 NeteaseCloudMusicApi,本地开发还需要 yarn netease_api:run 把 API 跑在 3000 端口。不想碰命令行的人,这一步就是门槛。
账号存在风控风险。Issue 里有用户反馈网易云多次要求修改密码,也有人报告账号被冻结。那条「现在还会不会封号」的讨论到目前仍是待解决状态,仓库没有给出结论。
项目当前处于维护模式。README 说当前版本除重大 bug 修复外不再更新新功能,新能力往 2.0 Alpha 走。开放 Issue 累计 648 条,遇到问题多半指望社区修复。
部署环境有硬性约束。README 提到 Replit 个人版限制内存 1G(教育版 3G),构建过程中可能会失败,需要重跑安装命令。跨域没配好也会引出一些 bug。
同类播放器的横向对照
| 项目 | 适合谁 | 部署方式 | 主要限制 | 什么情况下选它更合适 | 项目地址 |
|---|---|---|---|---|---|
| YesPlayMusic | 想要桌面客户端形态、愿意自己部署一份网易云 API 的人 | Releases 下载安装包;也支持 docker build/docker run、docker-compose、Vercel、宝塔面板 Docker 应用商店 | 需要自备 NeteaseCloudMusicApi;网页版不支持音源替换;当前版本进入维护模式,不再加新功能 | —— | YesPlayMusic |
| nini22P/omp | 音乐文件放在 OneDrive、想在浏览器里直接播放的人 | 仓库没有说明 | 未逐一核实 | 曲库在 OneDrive 或网盘上,需要一个网页端播放器,不需要接入网易云账号 | nini22P/omp |
| dufu1991/simple-cloud-music | 想用轻量第三方网易云播放器、不在意桌面客户端形态的人 | 仓库没有说明 | 未逐一核实 | 只想在浏览器里听网易云歌单,不需要 Electron 客户端和多平台安装包 | dufu1991/simple-cloud-music |
只想打开网页听歌的话,YesPlayMusic 反而更麻烦,它要求先部署一份 NeteaseCloudMusicApi,跨域没处理好还会出 bug,dufu1991/simple-cloud-music 这类项目在这一点上更省事。曲库放在 OneDrive 或网盘的人,nini22P/omp 直接读网盘就行,不必经过网易云账号,也就没有账号风控的顾虑。愿意接受账号风险、又要一套完整桌面端体验的人,才轮到 YesPlayMusic。
对你的实际影响
桌面端最省事:访问 Releases 页面下载安装包,macOS 可以用 brew install --cask yesplaymusic,Windows 可以用 scoop install extras/yesplaymusic。源码运行需要 Node.js 和 Yarn,yarn install 装依赖,cp .env.example .env 建本地环境变量,然后 yarn serve 跑网页端、yarn electron:serve 跑 Electron。网页端自建的话,要额外准备一台能跑 Node 或 Docker 的机器,或者直接用 Vercel 免费额度,但 API 仍然得单独部署一次。Docker 形态最省心,映射 80 端口后访问 http://localhost 即可。
适合谁:想在桌面端获得接近现代流媒体播放器体验、愿意自己折腾一次 API 部署、能接受账号被风控可能性的人。有 ARM 设备或 Linux 桌面的用户还可以自己按上面的命令打一个包,仓库里没有说明是否提供全部平台的现成安装包,需要到 Releases 页面确认。
不适合谁:只想打开浏览器听歌、不想部署任何服务的人;把音乐文件放在本地或者网盘、需要本地播放功能的人,这个需求在 Issue 里仍然标记为待解决;对账号安全格外敏感、不能承担被冻结后果的人。
合规边界要写清楚。这类第三方客户端通过非官方接口读取账号数据,本项目 README 也写明仅供个人学习研究使用,禁止用于商业及非法用途。只应在自己拥有或已获授权的账号上使用,不要拿它做批量抓取、内容分发或任何商业用途;账号被冻结、密码被要求反复重设这类后果,Issue 里已经有真实记录。
焚评:这个项目的量化评分
本项目的选题来自 焚.com(一个按公开公式给 GitHub 项目打分的站)。焚评当前总分 9.2 分(满分 10)。下表是各维度的得分:
| 评分维度 | 得分 |
|---|---|
| 热度动量(权重 25%) | 10.0 / 10 |
| 开发活跃(权重 25%) | 10.0 / 10 |
| 社区响应(权重 15%) | 8.1 / 10 |
| 文档质量(权重 15%) | 6.3 / 10 |
| 发布节奏(权重 10%) | 10.0 / 10 |
| 风险控制(权重 10%) | 10.0 / 10 |
评分口径、权重与计算方式见焚.com 的评分方法页;数据随 GitHub 指标刷新,具体数值以焚.com 当前页面为准。本文正文为诀.com 独立撰写,评分数据由焚.com 授权引用。
内容核验说明
这篇把 YesPlayMusic 的数据链路、多端交付和音源替换拆开讲,并对照两个同类播放器给取舍,判断部署门槛和账号风险时省得自己翻仓库。适合愿意自建 NeteaseCloudMusicApi、要桌面客户端的人;只想开网页听歌或需要本地播放的,它并不合适。仓库已进入维护模式,Issue 里的封号讨论只是用户自述,项目方没有给出结论。
仓库指标、维护模式说明与功能清单来自 GitHub 公开数据和原项目 README,焚评得分来自焚.com,诀.com 未独立验证;部署命令和播放表现未做实测,结果不保证复现。文中提及的 Issue 反馈均为提交者自述,未获项目方确认。用户反馈摘要
根据仓库 Issue 来看,讨论集中在登录与账号风控:有人给出提取网页 Cookie 的登录办法,该问题状态为已解决;也有提交者报告扫码提示设备不安全、错误码 8810,状态为待解决。账号被反复要求改密码的报告已解决,但「现在还会不会封号」的询问仍待解决,仓库无结论。另有播放报 EBADF、0.4.8 白屏、音乐库加载失败、Mac 无法正常退出等报告,多数标注已解决并附临时方案;本地播放功能与 v0.4.9 仅提供源代码的疑问仍待解决。
基于该仓库公开 Issue 整理,只反映提交者报告的现象与诉求,不代表诀.com 立场,也不代表问题已被确认。项目来源与说明
开源项目:qier222(qier222)
本文由诀.com 编辑基于该项目的公开信息独立撰写,属原创解读,不是对项目文档的翻译或转载;文中提到的功能与参数以官方仓库为准,代码与文档版权归原作者所有。
查看项目仓库