From c1ad24aacea909fb9345773ad8bcc4a7ec190fe2 Mon Sep 17 00:00:00 2001 From: Jocay <1579649885@qq.com> Date: Sun, 11 Oct 2026 12:11:36 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=85=A8=E5=B1=8F=E3=80=8C=E6=AD=A3?= =?UTF-8?q?=E5=9C=A8=E6=92=AD=E6=94=BE=E3=80=8D=E9=A1=B5=E4=B8=8E=E8=B7=A8?= =?UTF-8?q?=E5=B9=B3=E5=8F=B0=E5=85=9C=E5=BA=95=E6=92=AD=E6=94=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - NowPlaying:参考 Apple Music tvOS —— 模糊封面铺底、大号逐行歌词(按距离渐隐 / 模糊、逐行跟随)、接下来列表、可拖动进度条,静置后隐藏控件;Esc 收起、←/→ 快退 / 快进 - 播放兜底链:曲库文件 → 原平台 → 另一个平台的同名歌曲,出错时依次切换并保留进度,合并为一条提示 - 新增 /api/:source/stream-alt:按歌名、歌手、时长在另一个平台匹配同一首歌并代理播放 Co-Authored-By: Claude Opus 5.5 --- CLAUDE.md | 4 +- README.md | 2 +- fb.png | Bin 0 -> 63269 bytes server/src/routes/api.ts | 8 +- server/src/stream.ts | 49 ++ web/src/App.vue | 16 + web/src/components/Icon.vue | 1 + web/src/components/NowPlaying.vue | 975 ++++++++++++++++++++++++++++++ web/src/components/PlayerBar.vue | 20 +- web/src/lib/api.ts | 3 + web/src/lib/player.ts | 57 +- 11 files changed, 1123 insertions(+), 12 deletions(-) create mode 100644 fb.png create mode 100644 web/src/components/NowPlaying.vue diff --git a/CLAUDE.md b/CLAUDE.md index 2e85993..f3fcd4a 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -23,11 +23,11 @@ - QQ:`qq/client.ts` 的 `musicu()` 在 comm 中带 `uin` + `authst` 并附 Cookie —— 缺这一步拿不到 VIP 音源 - `queue.ts` — 任务存 SQLite `tasks` 表,进度只在内存,经 `events.ts` 的 bus 推送;`routes/api.ts` 的 `/api/events` 是 SSE - `playlists.ts` — 自建歌单(`playlists` / `playlist_items` 表);条目要么是在线曲目(source + track_id)要么是曲库文件(path),`item_key` 去重。读取时给在线曲目补 `localFile`、给文件补 `missing`。`importPlaylist` 经 `resolveLink` 把网易云 / QQ 歌单或专辑链接导入为新歌单(`POST /api/playlists/import`) - - `accounts.ts`(Cookie 用 `secret.ts` AES-GCM 加密存储)、`settings.ts`(运行时设置)、`auth.ts`(可选访问密码)、`library.ts`(曲库工具)、`stream.ts`(在线播放代理,音质取设置 `playQuality`) + - `accounts.ts`(Cookie 用 `secret.ts` AES-GCM 加密存储)、`settings.ts`(运行时设置)、`auth.ts`(可选访问密码)、`library.ts`(曲库工具)、`stream.ts`(在线播放代理,音质取设置 `playQuality`;`/:source/stream-alt` 按歌名 + 歌手 + 时长到另一个平台找同一首歌) - `db.ts` — `node:sqlite`;history / tasks / settings / playlists / playlist_items 表 - `web/` — Vite 8 + Vue 3.5 + Vue Router 5,无 UI 库 - `lib/store.ts` 全局状态 + SSE;`lib/api.ts` 类型与请求 - - `lib/player.ts` 播放器:单个 `