mirror of
https://github.com/algerkong/AlgerMusicPlayer.git
synced 2026-07-07 09:47:29 +08:00
refactor(parser): 移除后备接口
This commit is contained in:
+1
-3
@@ -1,4 +1,2 @@
|
||||
# 你的接口地址 (必填)
|
||||
VITE_API = http://127.0.0.1:30488
|
||||
# 音乐破解接口地址 web端
|
||||
VITE_API_MUSIC = ***
|
||||
VITE_API = http://127.0.0.1:30488
|
||||
@@ -5,7 +5,6 @@ import { SongSourceConfigManager } from '@/services/SongSourceConfigManager';
|
||||
import { useSettingsStore } from '@/store';
|
||||
import type { SongResult } from '@/types/music';
|
||||
import { isElectron } from '@/utils';
|
||||
import requestMusic from '@/utils/request_music';
|
||||
|
||||
import type { ParsedMusicResult } from './gdmusic';
|
||||
import { parseFromGDMusic } from './gdmusic';
|
||||
@@ -486,6 +485,18 @@ const getMusicConfig = (id: number, settingsStore?: any) => {
|
||||
return { musicSources, quality };
|
||||
};
|
||||
|
||||
/**
|
||||
* 构造解析失败结果
|
||||
* (原远端后备接口 music_proxy 已停止服务,解析失败时不再回退到远端请求)
|
||||
*/
|
||||
const buildFailedResult = (message: string, code = 404): MusicParseResult => ({
|
||||
data: {
|
||||
code,
|
||||
message,
|
||||
data: undefined
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* 音乐解析器主类
|
||||
*/
|
||||
@@ -500,10 +511,10 @@ export class MusicParser {
|
||||
const startTime = performance.now();
|
||||
|
||||
try {
|
||||
// 非Electron环境直接使用API请求
|
||||
// 非Electron环境不支持本地解析
|
||||
if (!isElectron) {
|
||||
console.log('非Electron环境,使用API请求');
|
||||
return await requestMusic.get<any>('/music', { params: { id } });
|
||||
console.log('非Electron环境,不支持音乐解析');
|
||||
return buildFailedResult('当前环境不支持音乐解析');
|
||||
}
|
||||
|
||||
// 获取设置存储
|
||||
@@ -511,8 +522,8 @@ export class MusicParser {
|
||||
try {
|
||||
settingsStore = useSettingsStore();
|
||||
} catch (error) {
|
||||
console.error('无法获取设置存储,使用后备方案:', error);
|
||||
return await requestMusic.get<any>('/music', { params: { id } });
|
||||
console.error('无法获取设置存储:', error);
|
||||
return buildFailedResult('无法读取设置,音乐解析不可用');
|
||||
}
|
||||
|
||||
// 获取音源配置
|
||||
@@ -541,8 +552,8 @@ export class MusicParser {
|
||||
}
|
||||
|
||||
if (musicSources.length === 0) {
|
||||
console.warn('没有配置可用的音源,使用后备方案');
|
||||
return await requestMusic.get<any>('/music', { params: { id } });
|
||||
console.warn('没有配置可用的音源');
|
||||
return buildFailedResult('没有配置可用的音源');
|
||||
}
|
||||
|
||||
// 获取可用的解析策略
|
||||
@@ -552,8 +563,8 @@ export class MusicParser {
|
||||
);
|
||||
|
||||
if (availableStrategies.length === 0) {
|
||||
console.warn('没有可用的解析策略,使用后备方案');
|
||||
return await requestMusic.get<any>('/music', { params: { id } });
|
||||
console.warn('没有可用的解析策略');
|
||||
return buildFailedResult('没有可用的解析策略');
|
||||
}
|
||||
|
||||
console.log(
|
||||
@@ -583,34 +594,13 @@ export class MusicParser {
|
||||
}
|
||||
}
|
||||
|
||||
console.warn('所有解析策略都失败了,使用后备方案');
|
||||
console.warn('所有解析策略都失败了');
|
||||
} catch (error) {
|
||||
console.error('MusicParser.parseMusic 执行异常,使用后备方案:', error);
|
||||
console.error('MusicParser.parseMusic 执行异常:', error);
|
||||
}
|
||||
|
||||
// 后备方案:使用API请求
|
||||
try {
|
||||
console.log('使用后备方案:API请求');
|
||||
const result = await requestMusic.get<any>('/music', { params: { id } });
|
||||
|
||||
// 如果后备方案成功,也进行缓存
|
||||
if (result?.data?.data?.url) {
|
||||
console.log('后备方案成功,缓存结果');
|
||||
await CacheManager.setCachedMusicUrl(id, result, []);
|
||||
}
|
||||
|
||||
return result;
|
||||
} catch (apiError) {
|
||||
console.error('API请求也失败了:', apiError);
|
||||
const endTime = performance.now();
|
||||
console.log(`总耗时: ${(endTime - startTime).toFixed(2)}ms`);
|
||||
return {
|
||||
data: {
|
||||
code: 500,
|
||||
message: '所有解析方式都失败了',
|
||||
data: undefined
|
||||
}
|
||||
};
|
||||
}
|
||||
const endTime = performance.now();
|
||||
console.log(`总耗时: ${(endTime - startTime).toFixed(2)}ms`);
|
||||
return buildFailedResult('所有解析方式都失败了', 500);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
import axios from 'axios';
|
||||
|
||||
const baseURL = `${import.meta.env.VITE_API_MUSIC}`;
|
||||
const request = axios.create({
|
||||
baseURL,
|
||||
timeout: 10000
|
||||
});
|
||||
|
||||
// 请求拦截器
|
||||
request.interceptors.request.use(
|
||||
(config) => {
|
||||
return config;
|
||||
},
|
||||
(error) => {
|
||||
// 当请求异常时做一些处理
|
||||
return Promise.reject(error);
|
||||
}
|
||||
);
|
||||
|
||||
export default request;
|
||||
Reference in New Issue
Block a user