Skip to content

Commit

Permalink
Merge pull request #47 from algerkong/fix/player-freeze-recovery-46
Browse files Browse the repository at this point in the history
✨ feat: 优化播放体验 优化代码 优化歌词缓存
  • Loading branch information
algerkong authored Jan 16, 2025
2 parents 7efeb94 + f652932 commit 041aad3
Show file tree
Hide file tree
Showing 14 changed files with 438 additions and 3,891 deletions.
3 changes: 0 additions & 3 deletions src/main/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ import { app, ipcMain, nativeImage } from 'electron';
import { join } from 'path';

import { loadLyricWindow } from './lyric';
import { initializeCacheManager } from './modules/cache';
import { initializeConfig } from './modules/config';
import { initializeFileManager } from './modules/fileManager';
import { initializeShortcuts, registerShortcuts } from './modules/shortcuts';
Expand All @@ -27,8 +26,6 @@ let mainWindow: Electron.BrowserWindow;
function initialize() {
// 初始化配置管理
initializeConfig();
// 初始化缓存管理
initializeCacheManager();
// 初始化文件管理
initializeFileManager();
// 初始化窗口管理
Expand Down
38 changes: 24 additions & 14 deletions src/renderer/api/music.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
import { musicDB } from '@/hooks/MusicHook';
import store from '@/store';
import type { ILyric } from '@/type/lyric';
import { isElectron } from '@/utils';
import request from '@/utils/request';
import requestMusic from '@/utils/request_music';

const { addData, getData, deleteData } = musicDB;

// 获取音乐音质详情
export const getMusicQualityDetail = (id: number) => {
return request.get('/song/music/detail', { params: { id } });
Expand Down Expand Up @@ -37,24 +40,31 @@ export const getMusicDetail = (ids: Array<number>) => {

// 根据音乐Id获取音乐歌词
export const getMusicLrc = async (id: number) => {
if (isElectron) {
// 先尝试从缓存获取
const cachedLyric = await window.api.invoke('get-cached-lyric', id);
console.log('cachedLyric', cachedLyric);
if (cachedLyric) {
return { data: cachedLyric };
const TEN_DAYS_MS = 10 * 24 * 60 * 60 * 1000; // 10天的毫秒数

try {
// 尝试获取缓存的歌词
const cachedLyric = await getData('music_lyric', id);
if (cachedLyric?.createTime && Date.now() - cachedLyric.createTime < TEN_DAYS_MS) {
return { ...cachedLyric };
}
}

// 如果缓存中没有,则从服务器获取
const res = await request.get<ILyric>('/lyric', { params: { id } });
// 获取新的歌词数据
const res = await request.get<ILyric>('/lyric', { params: { id } });

// 缓存完整的响应数据
if (isElectron && res) {
await window.api.invoke('cache-lyric', id, res.data);
}
// 只有在成功获取新数据后才删除旧缓存并添加新缓存
if (res?.data) {
if (cachedLyric) {
await deleteData('music_lyric', id);
}
addData('music_lyric', { id, data: res.data, createTime: Date.now() });
}

return res;
return res;
} catch (error) {
console.error('获取歌词失败:', error);
throw error; // 向上抛出错误,让调用者处理
}
};

export const getParsingMusicUrl = (id: number, data: any) => {
Expand Down
Loading

0 comments on commit 041aad3

Please sign in to comment.