29 lines
987 B
TypeScript
29 lines
987 B
TypeScript
import { httpFetch } from '../request.ts'
|
|
import getSongId from './songId.ts'
|
|
|
|
export default {
|
|
async getPicUrl(songId, tryNum = 0) {
|
|
let requestObj = httpFetch(`http://music.migu.cn/v3/api/music/audioPlayer/getSongPic?songId=${songId}`, {
|
|
headers: {
|
|
Referer: 'http://music.migu.cn/v3/music/player/audio?from=migu',
|
|
},
|
|
})
|
|
requestObj.promise.then(({ body }) => {
|
|
if (body.returnCode !== '000000') {
|
|
if (tryNum > 5) return Promise.reject(new Error('图片获取失败'))
|
|
let tryRequestObj = (this as any).getPic(songId, ++tryNum)
|
|
requestObj.cancelHttp = tryRequestObj.cancelHttp.bind(tryRequestObj)
|
|
return tryRequestObj.promise
|
|
}
|
|
let url = body.largePic || body.mediumPic || body.smallPic
|
|
if (!/https?:/.test(url)) url = 'http:' + url
|
|
return url
|
|
})
|
|
return requestObj
|
|
},
|
|
async getPic(songInfo) {
|
|
const songId = await getSongId(songInfo)
|
|
return this.getPicUrl(songId)
|
|
},
|
|
}
|