允许设置其他优先播放的歌曲音质 (#1839)
* 在线播放更高音质 * 修改对应翻译 * 设置-播放设置-优先播放320k音质选项改为“优先播放的音质” * 修复拼写 * 优化 --------- Co-authored-by: lyswhut <lyswhut@qq.com>
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
// }
|
||||
|
||||
/**
|
||||
* 过滤列表中已播放的歌曲
|
||||
|
||||
@@ -19,12 +19,19 @@ dd
|
||||
base-checkbox(id="setting_player_lyric_s2t" :model-value="appSetting['player.isS2t']" :label="$t('setting__play_lyric_s2t')" @update:model-value="updateSetting({'player.isS2t': $event})")
|
||||
.gap-top
|
||||
base-checkbox(id="setting_player_lyric_play_lxlrc" :model-value="appSetting['player.isPlayLxlrc']" :label="$t('setting__play_lyric_lxlrc')" @update:model-value="updateSetting({'player.isPlayLxlrc': $event})")
|
||||
.gap-top
|
||||
base-checkbox(id="setting_player_highQuality" :model-value="appSetting['player.highQuality']" :label="$t('setting__play_quality')" @update:model-value="updateSetting({'player.highQuality': $event})")
|
||||
.gap-top
|
||||
base-checkbox(id="setting_player_showTaskProgess" :model-value="appSetting['player.isShowTaskProgess']" :label="$t('setting__play_task_bar')" @update:model-value="updateSetting({'player.isShowTaskProgess': $event})")
|
||||
.gap-top
|
||||
base-checkbox(id="setting_player_isMediaDeviceRemovedStopPlay" :model-value="appSetting['player.isMediaDeviceRemovedStopPlay']" :label="$t('setting__play_mediaDevice_remove_stop_play')" @update:model-value="updateSetting({'player.isMediaDeviceRemovedStopPlay': $event})")
|
||||
|
||||
dd
|
||||
h3#basic_play_quality {{ $t('setting__play_playQuality') }}
|
||||
div
|
||||
base-checkbox.gap-left(
|
||||
v-for="item in playQualityList" :id="`setting_play_quality_${item}`" :key="item"
|
||||
name="setting_play_quality" need :model-value="appSetting['player.playQuality']" :value="item" :label="item"
|
||||
@update:model-value="updateSetting({'player.playQuality': $event})")
|
||||
|
||||
dd(:aria-label="$t('setting__play_mediaDevice_title')")
|
||||
h3#play_mediaDevice {{ $t('setting__play_mediaDevice') }}
|
||||
div
|
||||
@@ -39,12 +46,14 @@ import { useI18n } from '@renderer/plugins/i18n'
|
||||
import { appSetting, updateSetting } from '@renderer/store/setting'
|
||||
import { setPowerSaveBlocker } from '@renderer/core/player/utils'
|
||||
import { isPlay } from '@renderer/store/player/state'
|
||||
import { TRY_QUALITYS_LIST } from '@renderer/core/music/utils'
|
||||
|
||||
|
||||
export default {
|
||||
name: 'SettingPlay',
|
||||
setup() {
|
||||
const t = useI18n()
|
||||
const playQualityList = [...TRY_QUALITYS_LIST, '128k'].reverse()
|
||||
|
||||
const mediaDevices = ref([])
|
||||
const getMediaDevice = async() => {
|
||||
@@ -105,6 +114,7 @@ export default {
|
||||
mediaDeviceId,
|
||||
handleMediaDeviceIdChnage,
|
||||
handleUpdatePowerSaveBlocker,
|
||||
playQualityList,
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user