允许设置其他优先播放的歌曲音质 (#1839)

* 在线播放更高音质

* 修改对应翻译

* 设置-播放设置-优先播放320k音质选项改为“优先播放的音质”

* 修复拼写

* 优化

---------

Co-authored-by: lyswhut <lyswhut@qq.com>
This commit is contained in:
NKXingXh
2024-04-15 19:46:28 +08:00
committed by GitHub
co-authored by lyswhut
parent 87852acb14
commit ab3f118588
11 changed files with 43 additions and 54 deletions
+1 -1
View File
@@ -51,7 +51,7 @@ export const getMusicUrl = async({ musicInfo, quality, isRefresh, allowToggleSou
// // return Promise.reject(new Error('该歌曲没有可播放的音频'))
// }
const targetQuality = quality ?? getPlayQuality(appSetting['player.highQuality'], musicInfo)
const targetQuality = quality ?? getPlayQuality(appSetting['player.playQuality'], musicInfo)
const cachedUrl = await getStoreMusicUrl(musicInfo, targetQuality)
if (cachedUrl && !isRefresh) return cachedUrl
+14 -5
View File
@@ -210,10 +210,19 @@ export const getOnlineOtherSourcePicByLocal = async(musicInfo: LX.Music.MusicInf
})
}
export const getPlayQuality = (highQuality: boolean, musicInfo: LX.Music.MusicInfoOnline): LX.Quality => {
export const TRY_QUALITYS_LIST = ['flac24bit', 'flac', '320k'] as const
type TryQualityType = typeof TRY_QUALITYS_LIST[number]
export const getPlayQuality = (highQuality: LX.Quality, musicInfo: LX.Music.MusicInfoOnline): LX.Quality => {
let type: LX.Quality = '128k'
let list = qualityList.value[musicInfo.source]
if (highQuality && musicInfo.meta._qualitys['320k'] && list?.includes('320k')) type = '320k'
if (TRY_QUALITYS_LIST.includes(highQuality as TryQualityType)) {
let list = qualityList.value[musicInfo.source]
let t = TRY_QUALITYS_LIST
.slice(TRY_QUALITYS_LIST.indexOf(highQuality as TryQualityType))
.find(q => musicInfo.meta._qualitys[q] && list?.includes(q))
if (t) type = t
}
return type
}
@@ -238,7 +247,7 @@ export const getOnlineOtherSourceMusicUrl = async({ musicInfos, quality, onToggl
if (retryedSource.includes(musicInfo.source)) continue
retryedSource.push(musicInfo.source)
if (!assertApiSupport(musicInfo.source)) continue
itemQuality = quality ?? getPlayQuality(appSetting['player.highQuality'], musicInfo)
itemQuality = quality ?? getPlayQuality(appSetting['player.playQuality'], musicInfo)
if (!musicInfo.meta._qualitys[itemQuality]) continue
console.log('try toggle to: ', musicInfo.source, musicInfo.name, musicInfo.singer, musicInfo.interval)
@@ -285,7 +294,7 @@ export const handleGetOnlineMusicUrl = async({ musicInfo, quality, onToggleSourc
}> => {
if (!await window.lx.apiInitPromise[0]) throw new Error('source init failed')
// console.log(musicInfo.source)
const targetQuality = quality ?? getPlayQuality(appSetting['player.highQuality'], musicInfo)
const targetQuality = quality ?? getPlayQuality(appSetting['player.playQuality'], musicInfo)
let reqPromise
try {
+8 -8
View File
@@ -1,17 +1,17 @@
import { toRaw, markRawList } from '@common/utils/vueTools'
import { qualityList } from '@renderer/store'
// import { qualityList } from '@renderer/store'
import { clearPlayedList } from '@renderer/store/player/action'
import { appSetting } from '@renderer/store/setting'
import { dislikeInfo } from '@renderer/store/dislikeList'
import { setPowerSaveBlocker as setPowerSaveBlockerRemote } from '@renderer/utils/ipc'
export const getPlayType = (highQuality: boolean, musicInfo: LX.Music.MusicInfo | LX.Download.ListItem): LX.Quality | null => {
if ('progress' in musicInfo || musicInfo.source == 'local') return null
let type: LX.Quality = '128k'
let list = qualityList.value[musicInfo.source]
if (highQuality && musicInfo.meta._qualitys['320k'] && list?.includes('320k')) type = '320k'
return type
}
// export const getPlayType = (highQuality: boolean, musicInfo: LX.Music.MusicInfo | LX.Download.ListItem): LX.Quality | null => {
// if ('progress' in musicInfo || musicInfo.source == 'local') return null
// let type: LX.Quality = '128k'
// let list = qualityList.value[musicInfo.source]
// if (highQuality && musicInfo.meta._qualitys['320k'] && list?.includes('320k')) type = '320k'
// return type
// }
/**
* 过滤列表中已播放的歌曲