新增播放错误时自动切换歌曲设置

This commit is contained in:
lyswhut
2022-03-25 15:52:33 +08:00
parent 1f97af6ff1
commit 9fd9449eca
10 changed files with 28 additions and 11 deletions
@@ -2,8 +2,10 @@ import { onBeforeUnmount, useI18n } from '@renderer/utils/vueTools'
import { player as eventPlayerNames } from '@renderer/event/names'
import { wait, waitCancel } from '@renderer/utils/tools'
import { musicInfo, musicInfoItem, playMusicInfo } from '@renderer/core/share/player'
import { setStop, isEmpty } from '@renderer/plugins/player'
export default ({
setting,
playNext,
setAllStatus,
setUrl,
@@ -50,7 +52,7 @@ export default ({
const handleLoadstart = () => {
if (global.isPlayedStop) return
startLoadingTimeout()
if (setting.value.player.autoSkipOnError) startLoadingTimeout()
setAllStatus(t('player__loading'))
}
@@ -79,6 +81,7 @@ export default ({
if (!musicInfo.songmid) return
clearLoadingTimeout()
if (global.isPlayedStop) return
if (!isEmpty()) setStop()
if (playMusicInfo.listId != 'download' && errCode !== 1 && retryNum < 2) { // 若音频URL无效则尝试刷新2次URL
// console.log(this.retryNum)
retryNum++
@@ -87,8 +90,10 @@ export default ({
return
}
setAllStatus(t('player__error'))
addDelayNextTimeout()
if (setting.value.player.autoSkipOnError) {
setAllStatus(t('player__error'))
addDelayNextTimeout()
}
}
const handleSetPlayInfo = () => {
@@ -31,7 +31,7 @@ export default ({ setting, playNext }) => {
if (skipTime > playProgress.maxPlayTime) skipTime = (playProgress.maxPlayTime - currentTime) / 2
if (skipTime - mediaBuffer.playTime < 1 || playProgress.maxPlayTime - skipTime < 1) {
mediaBuffer.playTime = 0
playNext()
if (setting.value.player.autoSkipOnError) playNext()
return
}
startBuffering()
@@ -87,12 +87,14 @@ export default ({ setting }) => {
const { addDelayNextTimeout, clearDelayNextTimeout } = useDelayNextTimeout({ playNext, timeout: 5000 })
const { addDelayNextTimeout: addLoadTimeout, clearDelayNextTimeout: clearLoadTimeout } = useDelayNextTimeout({ playNext, timeout: 123000 })
let isGettingUrl = false
const setUrl = (targetSong, isRefresh, isRetryed = false) => {
let type = getPlayType(setting.value.player.highQuality, targetSong)
// this.musicInfo.url = await getMusicUrl(targetSong, type)
setAllStatus(t('player__geting_url'))
addLoadTimeout()
if (setting.value.player.autoSkipOnError) addLoadTimeout()
isGettingUrl = true
return getUrl({
musicInfo: targetSong,
type,
@@ -113,10 +115,11 @@ export default ({ setting }) => {
if (err.message == requestMsg.cancelRequest) return
if (!isRetryed) return setUrl(targetSong, isRefresh, true)
setAllStatus(err.message)
addDelayNextTimeout()
if (setting.value.player.autoSkipOnError) addDelayNextTimeout()
return Promise.reject(err)
}).finally(() => {
clearLoadTimeout()
if (targetSong === musicInfoItem.value) isGettingUrl = false
})
}
const setImg = ({ listId, musicInfo: targetSong }) => {
@@ -162,6 +165,7 @@ export default ({ setting }) => {
usePlayProgress({ setting, playNext })
useMediaSessionInfo({ playPrev, playNext })
usePlayEvent({
setting,
playNext,
setAllStatus,
setUrl,
@@ -313,10 +317,10 @@ export default ({ setting }) => {
}
return
}
setResource(filePath)
if (!isGettingUrl) setResource(filePath)
} else {
// if (!this.assertApiSupport(this.targetSong.source)) return this.playNext()
setUrl(musicInfoItem.value)
if (!isGettingUrl) setUrl(musicInfoItem.value)
}
return
}