LX Music 桌面版:免费聚合 6 大音乐源搜索的跨平台播放器完整指南
【免费下载链接】lx-music-desktop一个基于 Electron 的音乐软件项目地址: https://gitcode.com/GitHub_Trending/lx/lx-music-desktop
LX Music 桌面版(lx-music-desktop)是一款免费开源、基于 Electron 与 Vue 3 的跨平台音乐播放器,在一个客户端内聚合酷我、酷狗、QQ 音乐、网易云、咪咕、虾米 6 个音乐源的搜索与播放,并附带本地 HTTP 开放 API。本文写给想摆脱多平台切换、愿意自己动手配置的技术用户。
为什么需要多音乐源聚合搜索
你的歌单里有一首歌只在某一家平台能搜到,另一首只在别家——大多数播放器的困境是:切来切去,登录三个账号,还得为 VIP 内容妥协。LX Music 的做法是反过来的:你只面对一个搜索框,它在后台同时向所有启用的音乐源发请求,把结果合并成一份列表给你。当前版本为 v2.12.2,支持 Linux、macOS 和 Windows 7 及以上系统。
多源聚合搜索的实现:源码在哪、怎么去重
6 个音乐源的实现在 src/renderer/utils/musicSdk/ 下,每个源一个目录:
| 源 | 目录 | 模块内可见的接口文件 |
|---|---|---|
| 酷我 | musicSdk/kw/ | musicSearch、lyric、leaderboard、songList、tipSearch |
| 酷狗 | musicSdk/kg/ | musicSearch、album、comment、lyric、singer |
| QQ 音乐 | musicSdk/tx/ | musicSearch、musicInfo、comment、lyric |
| 网易云 | musicSdk/wy/ | musicSearch、musicDetail、singer、songList |
| 咪咕 | musicSdk/mg/ | musicInfo、comment、lyric、songId |
| 虾米 | musicSdk/xm.js | 单文件实现 |
入口 musicSdk/index.js 定义了聚合逻辑,值得看两处:
并行请求。searchMusic用Promise.all同时向所有源发起搜索,每源取前 25 条,单个源失败(.catch(_ => null))不会拖垮整体。注意虾米被显式排除了聚合(excludeSource = ['xm']),它是独立使用的源。
去重与匹配。findMusic把多源结果按一套规则排序合并:先把歌名、歌手、专辑名统一清洗(去空格、标点、括号、转小写),时长按"5 秒误差"判等,歌手多人名按分隔符拆分排序后比较;然后按"歌手+歌名+时长全等 > 歌名+歌手+专辑等 > …"的优先级分层挑选,把最像同一首歌的结果归到一起。这套逻辑就是它在 List/MusicList/ 里给本地列表歌曲"自动找到在线源"的基础。
音质选项定义在 src/common/constants.ts 的QUALITYS:flac24bit、flac、wav、ape、320k、192k、128k。
从克隆到跑起来:上手路径与首次体验
环境要求写在 package.json 的engines:Node ≥ 22、npm ≥ 8.5.2。
git clone https://gitcode.com/GitHub_Trending/lx/lx-music-desktop cd lx-music-desktop npm install npm run dev首次启动建议先通读一遍设置页(views/Setting/)。README 明确说了:默认设置和 UI 操作"不以新手友好为目标",需要自己按习惯调。几个高频项:
- 搜索:搜索源可在"全部"与单个源之间切换(
search.source默认'all'),见 SettingSearch.vue - 音质与代理:网络与音质选项在 SettingNetwork.vue
- 快捷键:全局热键在 SettingHotKey.vue 配置,默认绑定见 src/common/defaultHotKey.ts
本地数据用 better-sqlite3 存储,目录为:Linux~/.config/lx-music-desktop、macOS~/Library/Application Support/lx-music-desktop、Windows%APPDATA%/lx-music-desktop;Windows 上若程序目录存在portable文件夹,则自动改用该目录存数据(v1.17.0+)。
同类播放器怎么选:LX Music 的差异点
| 能力 | LX Music | 平台官方 App | 一般开源播放器 |
|---|---|---|---|
| 跨平台多源聚合搜索 | 6 源并行 + 去重合并 | 单一源 | 少数 |
| 本地 HTTP 控制接口(v2.7.0+) | 内置,见下文 | 无 | 少数 |
| 可自部署的数据同步服务(v2.2.0+) | 支持 | 账号体系 | 少见 |
| Windows 便携模式 | 自动检测portable目录 | 无 | 少见 |
| 分发格式 | Win 安装包/绿色版、Linux deb/rpm/AppImage/pacman、macOS dmg(含 arm64) | — | 通常 1~2 种 |
| 授权 | Apache-2.0 开源 | 闭源 | 视项目 |
构建矩阵可以直接在 package.json 的pack:*脚本里核对,例如pack:linux一次产出 deb(amd64/arm64/armv7l)、appImage、rpm、pacman 四种包。
进阶:本地开放 API、自部署同步与自定义源
开放 API(v2.7.0+):在设置中开启后,主进程在 src/main/modules/openApi/ 启动一个本地 HTTP 服务,默认端口23330(defaultSetting.ts 中openAPI.port),默认只绑定 127.0.0.1,可勾选openAPI.bindLan绑定 0.0.0.0 供局域网调用。路由直接看handleStartServer:/play、/pause、/skip-next、/skip-prev、/seek?offset=秒、/volume?volume=0-100、/mute、/collect,查询类有/status(支持filter参数挑字段)、/lyric、/lyric-all,/subscribe-player-status用 SSE 持续推送歌名、进度、当前歌词行等。写个脚本让 Home Assistant 或桌面歌词软件读播放状态,调几个 GET 就行。
自部署数据同步(v2.2.0+):同步服务是独立项目,有服务器的人可部署为私人多端同步。客户端侧实现分布在 src/main/modules/sync/(client/与server/两套模块),同步列表、设置等内容;不想自部署则用软件内置的公共同步服务,入口在 SettingSync/。
注册自定义源:搜索的"源"机制在 musicSdk/api-source.js——按{源id}_api_{平台id}从allApi取接口,且当apiSource以user_api开头时直接返回userApi.apis[source],即指向你自己服务器的远程 API 列表。在设置里填好自定义源地址,各平台的搜索、歌词、榜单请求就会改走你的接口,这也是官方对"音频链接来源不可校验"这一问题的解耦方式。新源接入流程:在 musicSdk/ 建目录、实现同名接口、在 api-source-info.ts 注册并声明supportQualitys。
主题与桌面歌词:主题素材在 src/common/theme/images/,createThemes.js 负责生成主题配置;桌面歌词是独立渲染进程,代码在 src/renderer-lyric/,由 main/modules/winLyric/ 管理窗口。
适合谁,以及边界在哪
- 适合:愿意花 20 分钟调设置、想要多源聚合 + 本地 API 折腾空间的用户;有服务器、想数据自己掌控的人
- 不适合:开箱即用型用户——官方自己声明 UI 不以新手友好为目标;纯听正版会员内容的用户
- 音频准确性不保证:README 协议明确,项目本身"没有获取某个音频数据的能力",播放什么取决于你配置的源返回的链接,可能出现歌曲与内容不对应或无法播放
- 版权约束:协议要求使用者在 24 小时内清除使用过程中产生的版权数据,且仅限非商业用途
- 维护动态:README 顶部提示项目有"发展调整与新项目计划"(issue #1912),选型前建议确认仓库近期提交是否活跃
小结
LX Music 的价值点很具体:6 源并行聚合搜索加基于时长/歌手/歌名的去重合并、v2.7.0 起默认 23330 端口的本地开放 API、v2.2.0 起可自部署的同步服务,再加 Apache-2.0 授权和覆盖 deb/rpm/AppImage/pacman 的全平台打包。它把"能不能用"的答案写在源码里,而不是宣传页里——去读 musicSdk/index.js 比读任何评测都直接。参与方式:克隆仓库后切到dev分支开发并向该分支提 PR,新功能建议先开 Issue 讨论。
【免费下载链接】lx-music-desktop一个基于 Electron 的音乐软件项目地址: https://gitcode.com/GitHub_Trending/lx/lx-music-desktop
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考