@@ -5,7 +5,9 @@ import { isElectron } from '@/utils';
5
5
import request from '@/utils/request' ;
6
6
import requestMusic from '@/utils/request_music' ;
7
7
import { cloneDeep } from 'lodash' ;
8
- import { parseFromGDMusic , getQualityMapping } from './gdmusic' ;
8
+ import { parseFromGDMusic } from './gdmusic' ;
9
+ import type { SongResult } from '@/type/music' ;
10
+ import { searchAndGetBilibiliAudioUrl } from './bilibili' ;
9
11
10
12
const { addData, getData, deleteData } = musicDB ;
11
13
@@ -80,7 +82,7 @@ export const getMusicLrc = async (id: number) => {
80
82
}
81
83
} ;
82
84
83
- export const getParsingMusicUrl = async ( id : number , data : any ) => {
85
+ export const getParsingMusicUrl = async ( id : number , data : SongResult ) => {
84
86
const settingStore = useSettingsStore ( ) ;
85
87
86
88
// 如果禁用了音乐解析功能,则直接返回空结果
@@ -98,7 +100,25 @@ export const getParsingMusicUrl = async (id: number, data: any) => {
98
100
try {
99
101
enabledSources = JSON . parse ( savedSource ) ;
100
102
console . log ( `使用歌曲 ${ id } 自定义音源:` , enabledSources ) ;
103
+ if ( enabledSources . includes ( 'bilibili' ) ) {
104
+ // 构建搜索关键词,依次判断歌曲名称、歌手名称和专辑名称是否存在
105
+ const songName = data ?. name || '' ;
106
+ const artistName = Array . isArray ( data ?. ar ) && data . ar . length > 0 && data . ar [ 0 ] ?. name ? data . ar [ 0 ] . name : '' ;
107
+ const albumName = data ?. al && typeof data . al === 'object' && data . al ?. name ? data . al . name : '' ;
108
+ const name = [ songName , artistName , albumName ] . filter ( Boolean ) . join ( ' ' ) . trim ( ) ;
109
+ console . log ( '开始搜索bilibili音频' , name ) ;
110
+ return {
111
+ data : {
112
+ code : 200 ,
113
+ message : 'success' ,
114
+ data : {
115
+ url : await searchAndGetBilibiliAudioUrl ( name )
116
+ }
117
+ }
118
+ }
119
+ }
101
120
} catch ( e ) {
121
+ console . error ( 'e' , e )
102
122
console . error ( '解析自定义音源失败, 使用全局设置' , e ) ;
103
123
enabledSources = settingStore . setData . enabledMusicSources || [ ] ;
104
124
}
@@ -108,13 +128,11 @@ export const getParsingMusicUrl = async (id: number, data: any) => {
108
128
}
109
129
110
130
// 检查是否选择了GD音乐台解析
131
+
111
132
if ( enabledSources . includes ( 'gdmusic' ) ) {
112
133
// 获取音质设置并转换为GD音乐台格式
113
134
try {
114
- const quality = getQualityMapping ( settingStore . setData . musicQuality || 'higher' ) ;
115
-
116
- // 调用封装的GD音乐台解析服务
117
- const gdResult = await parseFromGDMusic ( id , data , quality ) ;
135
+ const gdResult = await parseFromGDMusic ( id , data , '999' ) ;
118
136
if ( gdResult ) {
119
137
return gdResult ;
120
138
}
0 commit comments