Skip to content

Repository files navigation

LX Music CF

LX Music 的浏览器端移植版,基于 lx-music-desktop v2.12.2 的交互、数据处理思路与音源协议重新实现。项目采用 Vue 3、Vite 和 Cloudflare Workers,面向桌面浏览器优先设计。

本项目不是 Electron 渲染进程的直接搬运:浏览器端仅保留适合 Web 的播放、列表和在线内容能力,设置和列表默认存储在浏览器 IndexedDB 中,不依赖账号或自建数据库。

功能

  • 支持主流在线音乐平台的歌曲搜索、歌单搜索、歌单广场、歌单详情和排行榜。
  • 支持播放、暂停、切歌、进度拖动、音量、静音、播放模式、倍速、保持音调、歌词副标题与 Media Session。
  • 播放 URL 采用直连优先、Worker 代理回退和 URL 刷新恢复策略,并支持 Range 流式播放。
  • 支持音频可视化、10 段均衡器、EQ 预设和卷积混响效果。
  • 支持默认试听列表、喜欢列表、自建列表、曲目多选、排序、重复项处理、在线歌单收藏更新与列表导入导出。
  • 支持浏览器下载;MP3 支持写入标题、歌手、专辑和歌词等 ID3 信息。
  • 支持导入自定义音源。自定义脚本在 iframe 沙箱中执行,当前以获取 musicUrl 为主要兼容目标。

技术架构

技术 职责
前端 Vue 3、Vue Router 页面、交互、播放器与本地数据
构建 Vite 开发、构建与 Workers 集成
Worker Cloudflare Workers 静态托管、健康检查、代理与访问探测
本地数据 IndexedDB 设置、列表、曲目和相关缓存
播放器 HTMLAudioElement、Web Audio API 播放、频谱、均衡器与混响

Worker 提供以下接口:

接口 说明
GET /api/health 返回服务状态和可用接口
GET, POST /api/proxy 请求及媒体流代理,支持必要的 Range 请求头转发
GET /api/probe?url=<target> 探测目标地址的可访问性、媒体类型和 Range 支持情况

本地开发

环境要求

  • Node.js 22 或更高版本
  • npm
  • Cloudflare 账号(仅部署时需要)

安装与运行

git clone https://github.com/Sytle1116/lx-music-cf.git
cd lx-music-cf
npm ci

# 启动开发服务器:http://localhost:5173
npm run dev

检查与构建

# Vue 与 TypeScript 类型检查
npm run typecheck

# 生产构建
npm run build

# 本地预览构建产物
npm run preview

部署到 Cloudflare Workers

项目通过 wrangler.jsonc 配置 Worker 入口和静态资源绑定,无需配置 D1、KV、R2 或必填环境变量。

# 首次登录 Cloudflare,会打开浏览器完成授权
npx wrangler login

# 构建并部署
npm run deploy

修改 wrangler.jsonc 的绑定或 Workers 配置后,可更新类型定义:

npm run cf-typegen

部署前请在 Cloudflare 控制台确认 Worker 名称、域名和访问策略。公开部署时尤其应限制代理接口的使用范围。

数据与隐私

  • 设置、列表和曲目数据保存在当前浏览器的 IndexedDB;清除站点数据会清除这些内容。
  • 音乐播放、搜索和封面歌词请求会访问相应的第三方服务。
  • 项目不提供账号系统、云端同步或云端歌单存储。

当前限制

  • 平台接口、签名、风控和媒体地址可能变化;搜索结果可用不代表音频 URL 一定能够播放。
  • 不支持 Range 的音频地址可能无法拖动进度。
  • 自定义源当前主要兼容 musicUrl;依赖 Node.js crypto、文件系统或其他 Node 专属 API 的脚本可能无法运行。
  • 下载不包含任务中心、并发队列、断点续传或独立下载页;除 MP3 外主要按原始内容保存。
  • .lxmc 列表导入导出依赖浏览器的 CompressionStreamDecompressionStream
  • 当前不包含桌面端窗口/托盘/全局热键、独立桌面歌词、本地音乐扫描、原生下载管线、自动更新、SQLite、系统代理、变调和 3D 环绕等能力。
  • 移动端适配、PWA、离线缓存、多端同步和云端账号属于后续工作。

安全提示

/api/proxy/api/probe 用于处理跨域、媒体流和自定义源请求。当前项目尚未提供生产级鉴权、限流、目标白名单或响应体积限制。

请勿将默认配置直接作为公开通用代理服务部署。 在公开域名部署前,应至少补充目标域名白名单、访问控制、限流和滥用监控,避免 Worker 被用作开放代理出口。

免责声明

本项目仅供技术学习与交流使用。请遵守所在地法律法规、第三方服务条款和音乐版权要求,支持正版音乐。项目不保证第三方接口、媒体链接或内容长期可用;使用者应自行承担部署和使用风险。

许可证

本项目使用 Apache License 2.0

About

可在 Cloudflare 上托管的 LX Music Web 移植版 | A lx-music-desktop adaptation that is compatible with Cloudflare serverless environment

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Contributors

Languages