AlgerMusicPlayer 技术架构:Electron + Vue3 + 本地服务的组合
技术栈总览
AlgerMusicPlayer 采用 Electron + Vue 3 的经典桌面应用组合,配合 TypeScript 和 Vite 做工程化。
| 层级 | 技术 | 作用 |
|---|---|---|
| 桌面壳 | Electron | 跨平台桌面容器(Windows / macOS / Linux) |
| 前端 | Vue 3 + TypeScript | UI 框架,组合式 API |
| 构建 | Vite | 开发服务器 + 生产构建 |
| UI 组件库 | Naive UI | Vue 3 原生组件库 |
| 自动化更新 | electron-updater | v5.1.0 起替代手动下载模式 |
| 数据源 | netease-cloud-music-api | 网易云音乐本地 API 封装 |
| 灰色解析 | unblockneteasemusic | 多音源替换模块 |
| Android | 原生 Android 壳 + Web 内核 | 安卓版 |
| Web 端 | 同前端代码 + 服务端适配 | mc.alger.fun 网页版 |
本地服务架构(关键设计)
与大多数第三方播放器直接请求远程 API 不同,AlgerMusicPlayer 把 netease-cloud-music-api 作为本地模块运行。
数据流向:
AlgerMusicPlayer 前端组件
↕ IPC 通信
Electron 主进程
↕ HTTP(本地回环地址)
netease-cloud-music-api(本地 Node.js 进程)
↕ HTTPS
网易云官方接口
本地监听地址:v5.1.0 明确收紧为仅监听 localhost(回环地址),防止外部网络访问本地服务进程。
灰色歌曲解析机制
unblockneteasemusic 模块在网易云返回灰色歌曲后自动介入:
- 检测到网易云接口返回
blocked状态 - 按预设优先级依次尝试其他音源:QQ → 酷我 → 酷狗 → 百度 → 虾米 → 咕咪 → JOOX
- 找到可用音源后,替换播放地址返回给播放器
- 所有音源都失败则提示解析失败
跨平台适配
- 桌面端:Electron 一套代码三平台,自动检测系统架构下载对应安装包
- 安卓端:原生 Android 壳嵌入 Web 内核,共用前端代码
- 网页端:部署在 mc.alger.fun,访问即播放,无需安装
- 移动端 Web:v5.1.0 优化了移动端适配和 UI 布局
安全设计
- 本地音乐 API 仅监听回环地址(v5.1.0)
- LX Music 脚本执行隔离到 Worker 沙箱
- 源码开源可审计(MIT 协议)