给网易云曲库套一个桌面播放器外壳(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 修复外不再更新新功能。

仓库创建于 2020-10-09,最近一次提交是 2026-10-10,Star 33356

它怎么做到的

整体链路是:前端发起请求 → 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 反馈均为提交者自述,未获项目方确认。

项目来源与说明

开源项目:qier222(qier222)

本文由诀.com 编辑基于该项目的公开信息独立撰写,属原创解读,不是对项目文档的翻译或转载;文中提到的功能与参数以官方仓库为准,代码与文档版权归原作者所有。

查看项目仓库