fix
This commit is contained in:
parent
e246d4224d
commit
ef6dc31ec2
@ -162,9 +162,9 @@ export const getPlayQuality = (musicInfo: LX.Music.MusicInfoOnline): LX.Quality
|
|||||||
return '128k'
|
return '128k'
|
||||||
}
|
}
|
||||||
|
|
||||||
export const getOnlineOtherSourceMusicUrl = async({ musicInfos, quality, onToggleSource, isRefresh, retryedSource = [] }: {
|
export const getOnlineOtherSourceMusicUrl = async({ musicInfos, quality = '128k', onToggleSource, isRefresh, retryedSource = [] }: {
|
||||||
musicInfos: LX.Music.MusicInfoOnline[]
|
musicInfos: LX.Music.MusicInfoOnline[]
|
||||||
quality?: LX.Quality | null
|
quality?: LX.Quality
|
||||||
onToggleSource: (musicInfo?: LX.Music.MusicInfoOnline) => void
|
onToggleSource: (musicInfo?: LX.Music.MusicInfoOnline) => void
|
||||||
isRefresh: boolean
|
isRefresh: boolean
|
||||||
retryedSource?: LX.OnlineSource[]
|
retryedSource?: LX.OnlineSource[]
|
||||||
@ -175,22 +175,21 @@ export const getOnlineOtherSourceMusicUrl = async({ musicInfos, quality, onToggl
|
|||||||
isFromCache: boolean
|
isFromCache: boolean
|
||||||
}> => {
|
}> => {
|
||||||
let musicInfo: LX.Music.MusicInfoOnline | null = null
|
let musicInfo: LX.Music.MusicInfoOnline | null = null
|
||||||
let itemQuality: LX.Quality | null = null
|
|
||||||
// eslint-disable-next-line no-cond-assign
|
// eslint-disable-next-line no-cond-assign
|
||||||
while (musicInfo = (musicInfos.shift() as LX.Music.MusicInfoOnline)) {
|
while (musicInfo = (musicInfos.shift() as LX.Music.MusicInfoOnline)) {
|
||||||
if (retryedSource.includes(musicInfo.source)) continue
|
if (retryedSource.includes(musicInfo.source)) continue
|
||||||
retryedSource.push(musicInfo.source)
|
retryedSource.push(musicInfo.source)
|
||||||
if (!assertApiSupport(musicInfo.source)) continue
|
if (!assertApiSupport(musicInfo.source)) continue
|
||||||
itemQuality = quality ?? getPlayQuality(musicInfo)
|
if (!musicInfo.meta._qualitys[quality]) continue
|
||||||
if (!musicInfo.meta._qualitys[itemQuality]) continue
|
|
||||||
|
|
||||||
console.log('try toggle to: ', musicInfo.source, musicInfo.name, musicInfo.singer, musicInfo.interval)
|
console.log('try toggle to: ', musicInfo.source, musicInfo.name, musicInfo.singer, musicInfo.interval)
|
||||||
onToggleSource(musicInfo)
|
onToggleSource(musicInfo)
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!musicInfo || !itemQuality) {
|
if (!musicInfo) {
|
||||||
if (appSetting['player.autoLowerQualityOnError'] && quality && quality != '128k') {
|
if (appSetting['player.autoLowerQualityOnError'] && quality != '128k') {
|
||||||
const rangeType = sliceQualityList(quality, true)
|
const rangeType = sliceQualityList(quality, true)
|
||||||
const type = rangeType[0]
|
const type = rangeType[0]
|
||||||
if (rangeType.length > 0 && type) return getOnlineOtherSourceMusicUrl({ musicInfos, quality: type, onToggleSource, isRefresh, retryedSource: [] })
|
if (rangeType.length > 0 && type) return getOnlineOtherSourceMusicUrl({ musicInfos, quality: type, onToggleSource, isRefresh, retryedSource: [] })
|
||||||
@ -198,12 +197,12 @@ export const getOnlineOtherSourceMusicUrl = async({ musicInfos, quality, onToggl
|
|||||||
throw new Error(window.i18n.t('toggle_source_failed'))
|
throw new Error(window.i18n.t('toggle_source_failed'))
|
||||||
}
|
}
|
||||||
|
|
||||||
const cachedUrl = await getStoreMusicUrl(musicInfo, itemQuality)
|
const cachedUrl = await getStoreMusicUrl(musicInfo, quality)
|
||||||
if (cachedUrl && !isRefresh) return { url: cachedUrl, musicInfo, quality: itemQuality, isFromCache: true }
|
if (cachedUrl && !isRefresh) return { url: cachedUrl, musicInfo, quality, isFromCache: true }
|
||||||
|
|
||||||
let reqPromise
|
let reqPromise
|
||||||
try {
|
try {
|
||||||
reqPromise = musicSdk[musicInfo.source].getMusicUrl(toOldMusicInfo(musicInfo), itemQuality).promise
|
reqPromise = musicSdk[musicInfo.source].getMusicUrl(toOldMusicInfo(musicInfo), quality).promise
|
||||||
} catch (err: any) {
|
} catch (err: any) {
|
||||||
reqPromise = Promise.reject(err)
|
reqPromise = Promise.reject(err)
|
||||||
}
|
}
|
||||||
@ -215,7 +214,7 @@ export const getOnlineOtherSourceMusicUrl = async({ musicInfos, quality, onToggl
|
|||||||
}).catch((err: any) => {
|
}).catch((err: any) => {
|
||||||
if (err.message == requestMsg.tooManyRequests) throw err
|
if (err.message == requestMsg.tooManyRequests) throw err
|
||||||
console.log(err)
|
console.log(err)
|
||||||
return getOnlineOtherSourceMusicUrl({ musicInfos, quality: quality ?? itemQuality, onToggleSource, isRefresh, retryedSource })
|
return getOnlineOtherSourceMusicUrl({ musicInfos, quality, onToggleSource, isRefresh, retryedSource })
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -275,7 +274,7 @@ export const handleGetOnlineMusicUrl = async({ musicInfo, quality, onToggleSourc
|
|||||||
return getOnlineOtherSourceMusicUrl({
|
return getOnlineOtherSourceMusicUrl({
|
||||||
musicInfos: [...otherSource],
|
musicInfos: [...otherSource],
|
||||||
onToggleSource,
|
onToggleSource,
|
||||||
quality: rawQuality ?? quality,
|
quality: rawQuality ?? targetQuality,
|
||||||
isRefresh,
|
isRefresh,
|
||||||
retryedSource: [musicInfo.source],
|
retryedSource: [musicInfo.source],
|
||||||
})
|
})
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user