From cb2baeadf5ea89cb4cddefeffb8b7dea6ee483ba Mon Sep 17 00:00:00 2001 From: alger Date: Sat, 11 Oct 2025 20:23:54 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E9=80=90=E5=AD=97=E6=AD=8C=E8=AF=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/renderer/api/music.ts | 2 +- src/renderer/api/musicParser.ts | 5 +- src/renderer/components/lyric/MusicFull.vue | 154 ++++++- .../components/lyric/MusicFullMobile.vue | 135 +++++- .../components/player/MobilePlayBar.vue | 2 +- src/renderer/hooks/MusicHook.ts | 163 +++++++- src/renderer/hooks/MusicListHook.ts | 286 ------------- src/renderer/store/modules/player.ts | 95 +++-- src/renderer/types/music.ts | 14 + src/renderer/utils/yrcParser.ts | 388 ++++++++++++++++++ 10 files changed, 877 insertions(+), 367 deletions(-) delete mode 100644 src/renderer/hooks/MusicListHook.ts create mode 100644 src/renderer/utils/yrcParser.ts diff --git a/src/renderer/api/music.ts b/src/renderer/api/music.ts index edabfa8..4a928a5 100644 --- a/src/renderer/api/music.ts +++ b/src/renderer/api/music.ts @@ -65,7 +65,7 @@ export const getMusicLrc = async (id: number) => { } // 获取新的歌词数据 - const res = await request.get('/lyric', { params: { id } }); + const res = await request.get('/lyric/new', { params: { id } }); // 只有在成功获取新数据后才删除旧缓存并添加新缓存 if (res?.data) { diff --git a/src/renderer/api/musicParser.ts b/src/renderer/api/musicParser.ts index d169afb..73f0970 100644 --- a/src/renderer/api/musicParser.ts +++ b/src/renderer/api/musicParser.ts @@ -90,10 +90,11 @@ export class CacheManager { musicSources?: string[] ): Promise { try { + // 深度克隆数据,确保可以被 IndexedDB 存储 await saveData('music_url_cache', { id, - data: result, - musicSources: musicSources || [], + data: cloneDeep(result), + musicSources: cloneDeep(musicSources || []), createTime: Date.now() }); console.log(`缓存音乐URL成功: ${id}`); diff --git a/src/renderer/components/lyric/MusicFull.vue b/src/renderer/components/lyric/MusicFull.vue index 37d8051..9ca038d 100644 --- a/src/renderer/components/lyric/MusicFull.vue +++ b/src/renderer/components/lyric/MusicFull.vue @@ -119,7 +119,22 @@ :class="{ 'now-text': index === nowIndex, 'hover-text': item.text }" @click="setAudioTime(index)" > - {{ item.text }} + +
+ + {{ word.text }} + +
+ + {{ item.text }}
{{ item.trText }}
@@ -144,7 +159,7 @@