Files
LoveLiveMusicPlayer-Next/README.md
2026-08-08 18:34:12 +08:00

87 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# LoveLiveMusicPlayer · 桌面端Apple 风格重构版)
基于最新 **electron-vite** 脚手架重构的 LoveLive! 音乐播放器 PC 端,复刻原 Electron 项目全部功能,
UI 采用 **Apple / macOS 风格**毛玻璃、圆角、SF 字体、系统色板、深浅色)。
> 设计目标之一:**为后续移动端Flutter重构预留最大兼容性与可扩展性**。
> 双端联动协议被抽取为独立、框架无关的共享模块 `src/shared/protocol`,移动端可直接对照复用。
## 技术栈
| 维度 | 选型 |
|------|------|
| 框架 | Electron 43 + Vite 7 + React 19 + TypeScript |
| 脚手架 | electron-vite |
| 状态管理 | Zustand |
| 样式 | Tailwind CSS 3 + 自研 Apple 设计系统(`src/renderer/src/styles/index.css` |
| 本地数据库 | better-sqlite3表结构与移动端 SQLite 对齐) |
| 配置存储 | electron-store |
| 局域网通信 | wsWebSocket 服务端)+ expressHTTP 文件服务),**运行在主进程** |
| 二维码 | qrcode.react |
| 音频转码 | ffmpeg-staticiOS flac→wav跨平台免编译 |
| 图标 | lucide-react |
## 目录结构
```
src/
├── shared/ # ★ 双端共享(协议 + 领域模型 + IPC 通道常量)
│ ├── protocol/ # 命令枚举 / 类型 / 端口 / 版本协商(移动端可复用)
│ ├── models/ # Album/Music/Menu/Love/History/Lyric对齐移动端实体
│ └── ipc/channels.ts
├── main/ # 主进程
│ ├── index.ts # 入口(单例锁、生命周期)
│ ├── window/ # 主窗口 + 桌面歌词窗口
│ ├── ipc/ # IPC 注册
│ └── services/ # store / database / fileServer / musicServer(4388)
│ # / dataServer(4389) / transcode / network / lanInfo
├── preload/ # 类型安全的 window.api 桥接
└── renderer/ # 渲染进程React
└── src/
├── components/ # TitleBar / Sidebar / PlayerBar / MusicList / ...
├── pages/ # Home / Albums / AlbumDetail / Favorites / Playlists
│ # / History / Lyric / Transfer / Sync / Settings / DesktopLyric
├── stores/ # uiStore / playerStore / libraryStoreZustand
└── lib/ # repositoryDB 访问)/ lrc歌词解析/ const
```
## 已复刻的 PC 端功能
- 音乐馆(按企划分组)、专辑、专辑详情
- 播放器(顺序/列表循环/单曲/随机、进度、音量、媒体会话、上一首/下一首)
- 我喜欢、歌单PC id≤100 / 手机 id>100、最近播放
- 三语歌词(日/中/罗马音)+ 桌面歌词独立窗口
- **WiFi 传歌**(二维码配对 + WebSocket 4388 + HTTP 文件下载)
- **数据同步**(我喜欢/歌单双向WebSocket 4389
- 本地 HTTP 文件服务(端口探测、可配置)
- iOS flac→wav 转码
- 设置曲库目录、HTTP 端口、主题(深/浅/跟随系统)、强调色
- 无边框窗口 + Apple 质感Windows 自定义控制按钮 / macOS 红绿灯位)
## 与移动端的兼容性设计
- **协议单一来源**`src/shared/protocol/commands.ts` 定义所有命令字(枚举,禁止裸字符串),
字符串值与旧移动端保持一致,保证新 PC 端可直接与现有 App 联动。
- **版本协商**`version.ts` 在保留 `transVer=1` 兼容的同时引入 `minCompatVer` + `capabilities`
支持向后兼容与能力位扩展。
- **数据结构对齐**:领域模型与移动端 Floor 实体一致,降低同步映射成本。
- 移动端重构时可把 `src/shared` 作为协议对照,甚至用代码生成同步。
## 开发与构建
```bash
npm install # 安装依赖postinstall 会为 Electron 重建原生模块)
npm run dev # 开发模式
npm run build # 类型检查 + 打包
npm run build:win # 打 Windows 安装包
```
> 首次如遇 `Electron uninstall`,执行 `node node_modules/electron/install.js` 下载 Electron 二进制;
> 原生模块better-sqlite3如报 ABI 不匹配,执行 `npx electron-builder install-app-deps`。
## 待接入(占位/后续)
- OSS `data.json` 曲库元数据拉取入库(`main/services/network.ts` 已备 `fetchJson`UI 触发待接)
- 断点续传 / 完整性校验 / 配对 token 鉴权(协议 `capabilities` 已预留)
- 自动更新electron-updater 接线)、导出 Excel、托盘