ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

洛雪音乐助手:7大音乐源聚合搜索的跨平台开源播放器

洛雪音乐助手:7大音乐源聚合搜索的跨平台开源播放器 洛雪音乐助手7大音乐源聚合搜索的跨平台开源播放器【免费下载链接】lx-music-desktop一个基于 Electron 的音乐软件项目地址: https://gitcode.com/GitHub_Trending/lx/lx-music-desktop洛雪音乐助手lx-music-desktop是一款基于 Electron 与 Vue 3 的开源音乐播放器聚合酷狗、酷我、QQ 音乐、网易云、咪咕、虾米等多个平台的搜索源支持 Windows、macOS、Linux 三大平台适合厌倦了会员墙和碎片化曲库的进阶用户与技术爱好者。一个搜索框省掉四个音乐 App 的来回切换听歌场景里最常见的痛点不是没有歌而是歌分散周杰伦在 QQ 音乐某支独立乐队只在网易云老歌曲在咪咕或酷我上才有完整版本。多数人的解法是在手机上装两三个播放器来回切或者忍受各家 App 把曲库锁在会员后面。洛雪音乐助手的思路不同它不绑定任何单一平台的曲库而是把多个平台的公开接口封装成统一模块用户在一个搜索框里输入关键词客户端同时向所有启用的音乐源发起请求把返回结果去重、排序后合并成一份列表。某一家接口挂了或搜不到还有其他源兜底搜索成功率比单源客户端高得多。对想折腾的人它额外提供了开放 API本地 HTTP 服务和可自部署的数据同步服务意味着用脚本控制播放和三台设备歌单一致都不是问题。多音乐源聚合搜索的工作机制打开src/renderer/utils/musicSdk/目录就能看到整个聚合层的实现。每个平台一个独立子目录目录内按能力拆分文件musicSdk/ ├── kw/ # 酷我musicSearch / lyric / songList / tipSearch ├── kg/ # 酷狗musicSearch / comment / pic / leaderboard ├── tx/ # QQ 音乐musicSearch / singer / songList ├── wy/ # 网易云musicSearch / lyric / tipSearch ├── mg/ # 咪咕musicSearch / album / songId ├── bd/ # 百度音乐模块保留默认列表未启用 └── xm.js # 虾米单文件实现各平台接口差异很大加密参数、响应结构、分页方式各不相同但被收敛到同一套约定之下init()、musicSearch.search(keyword, page, limit)、lyric.getLyric()等。新增或修复一个音乐源只需要动对应目录不触碰其他模块。搜索的编排逻辑在src/renderer/store/search/music/action.ts。选全部源时客户端为每个平台各生成一个 Promise用Promise.all并行等待任何一源失败会被.catch捕获并降级为空结果不会拖垮整个搜索。拿到全部结果后做两步处理去重deduplicationList按歌曲名歌手合并重复项同一首歌出现在三个平台只保留一条重排序similar(keyword, 歌名 歌手)计算关键词与歌曲的相似度做插入排序匹配度高的排前面。音质方面每个平台声明自己支持的档位api-source-info.ts中注明了 128k、320k、FLAC、WAV 四档客户端按设置自动选择当前源能提供的最高可用音质。洛雪音乐助手主界面搜索框下即展示多源聚合后的歌曲列表技术栈与代码组织项目当前版本 2.12.2核心依赖在package.json中一目了然技术版本承担的角色Electron40.9.2桌面容器简单说就是用浏览器内核跑本地应用Vue3.3.x界面层Composition API 为主TypeScript5.9主进程与渲染进程共享类型src/common/types/better-sqlite312.x本地数据库存歌单、下载任务、设置WebSocketws / comlink—主进程与 Worker 线程间通信代码按进程边界切分目录结构如下src/ ├── main/ # 主进程窗口、托盘、热键、同步服务、开放 API │ ├── worker/ # Worker 线程里的 SQLite 数据库服务 │ └── modules/ # openApi / sync / winLyric / hotKey 等 ├── renderer/ # 渲染进程页面、组件、store、音乐源 SDK ├── renderer-lyric/ # 桌面歌词独立窗口独立构建 ├── common/ # 两端共享常量、类型、主题资源、工具函数 └── lang/ # zh-cn / zh-tw / en-us 三套 i18n 文案几个值得注意的工程细节数据库读写放在src/main/worker/的 Worker 线程中避免阻塞主进程桌面歌词是完整的第二个 Electron 渲染进程renderer-lyric/有独立的主窗口 IPC 通道core/mainWindowChannel.ts接收播放进度主题图片与配色集中在src/common/theme/createThemes.js负责在构建期生成主题文件。主题定制从换背景到改配色主题系统是洛雪最有辨识度的功能之一。内置主题直接决定了窗口观感——中国风山水主题背景水墨山峦适合作为沉浸式播放界面动漫风格主题背景高饱和配色适合流行与 ACG 曲库主题不只是换图。src/common/theme/index.json描述每个主题的色板colorUtils.js负责颜色空间的推导比如从主色生成按钮、进度条的渐变色utils.js提供透明度与明暗适配。用户在设置里可以直接调主色调、窗口透明度、圆角与毛玻璃效果等于一个轻量级的界面主题引擎。桌面歌词则复用renderer-lyric/这套独立渲染进程深紫色夜空主题背景流星与花瓣元素适合歌词悬浮窗场景歌词窗支持水平/垂直两种滚动方向、字体粗细随行加粗、暂停自动隐藏、置顶循环闪烁锁屏提醒等开关全部通过src/common/defaultSetting.ts中desktopLyric.*前缀的配置项控制。开放 API 与自部署同步服务这两块是给开发者准备的扩展能力。开放 API在设置中开启后主进程会在本地起一个 HTTP 服务src/main/modules/openApi/index.ts默认端口 23330可选绑定局域网。端点覆盖完整的播放控制面GET /status 当前播放状态歌名/歌手/进度… GET /lyric | /lyric-all 当前歌词行 / 全部歌词 GET /play /pause /skip-next /skip-prev 播放控制 GET /seek?offset42 跳转到 42 秒 GET /volume?volume60 / /mute 音量与静音 GET /subscribe-player-status SSE 长连接实时推送播放状态注意它是状态订阅设计而非命令队列/subscribe-player-status走 Server-Sent Events外部脚本只需维护一个连接就能持续拿到进度、歌词行、播放速率的变更做 Home Assistant 集成或桌面歌词同步器都很顺手。数据同步服务src/main/modules/sync/内置了完整的同步服务端默认端口 23332可以直接在自己的服务器上跑客户端填入地址即可用无需依赖作者的公共实例。同步内容是歌单、设置、不喜欢的歌曲等用户数据采用快照增量推送的方式服务端保留最近 5 份快照sync.server.maxSsnapshotNum可回滚。四行命令上手 进阶技巧开发环境要求 Node.js ≥ 22、npm ≥ 8.5.2git clone https://gitcode.com/GitHub_Trending/lx/lx-music-desktop cd lx-music-desktop npm install npm run devnpm run dev会同时拉起主进程、渲染进程与桌面歌词进程的热更新环境。要参与代码重点看两处音乐源模块src/renderer/utils/musicSdk/的接口约定以及src/common/types/下的类型定义这两处约定清楚后加一个源基本是照着抄的活。几条从默认配置里能读出的实用技巧搜索排序列表按歌名歌手与关键词的相似度重排搜周杰伦 晴天比单搜晴天更快命中目标下载并发数默认 3download.maxDownloadNum可勾选嵌入歌词与封面到文件元数据FLAC 走music-metadata库处理音效链SoundEffectBtn组件内置卷积混响预置了 15 种.wavIR见src/renderer/assets/medias/filters/、16 段 Biquad 均衡和变调全本地处理不需要装 LADSPA 之类的系统插件代理网络层支持系统级代理配置network.proxy.*接口访问不畅时可以先查这里。适合谁一句话曲库分散、不想被会员墙绑架、又愿意动手的人。它既是日常能用的音乐播放器三平台安装包齐全也是一份结构清晰的 Electron Vue 3 多源 API 聚合的工程范本。【免费下载链接】lx-music-desktop一个基于 Electron 的音乐软件项目地址: https://gitcode.com/GitHub_Trending/lx/lx-music-desktop创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表