pull/2319/merge
14K 2025-07-20 03:37:54 +08:00 committed by GitHub
commit 473fe5277b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
11 changed files with 60 additions and 5 deletions

View File

@ -655,6 +655,7 @@
"sync__overwrite_label": "Overwrite", "sync__overwrite_label": "Overwrite",
"sync__overwrite_tip": "Overwrite: ", "sync__overwrite_tip": "Overwrite: ",
"sync_status_disabled": "not connected", "sync_status_disabled": "not connected",
"tag__low_quality": "LQ",
"tag__high_quality": "HQ", "tag__high_quality": "HQ",
"tag__lossless": "SQ", "tag__lossless": "SQ",
"tag__lossless_24bit": "24bit", "tag__lossless_24bit": "24bit",

View File

@ -655,6 +655,7 @@
"sync__overwrite_label": "覆盖", "sync__overwrite_label": "覆盖",
"sync__overwrite_tip": "覆盖:", "sync__overwrite_tip": "覆盖:",
"sync_status_disabled": "未连接", "sync_status_disabled": "未连接",
"tag__low_quality": "LQ",
"tag__high_quality": "HQ", "tag__high_quality": "HQ",
"tag__lossless": "SQ", "tag__lossless": "SQ",
"tag__lossless_24bit": "24bit", "tag__lossless_24bit": "24bit",

View File

@ -655,6 +655,7 @@
"sync__overwrite_label": "覆寫", "sync__overwrite_label": "覆寫",
"sync__overwrite_tip": "覆寫:", "sync__overwrite_tip": "覆寫:",
"sync_status_disabled": "未連線", "sync_status_disabled": "未連線",
"tag__low_quality": "LQ",
"tag__high_quality": "HQ", "tag__high_quality": "HQ",
"tag__lossless": "SQ", "tag__lossless": "SQ",
"tag__lossless_24bit": "24bit", "tag__lossless_24bit": "24bit",

View File

@ -9,7 +9,7 @@
</div> </div>
<div :class="$style.infoContent"> <div :class="$style.infoContent">
<div :class="$style.title" :aria-label="title + $t('copy_tip')" @click="handleCopy(title)"> <div :class="$style.title" :aria-label="title + $t('copy_tip')" @click="handleCopy(title)">
{{ title }} {{ title }} <quality />
</div> </div>
<div :class="$style.status">{{ statusText }}</div> <div :class="$style.status">{{ statusText }}</div>
</div> </div>
@ -48,6 +48,8 @@ import { computed } from '@common/utils/vueTools'
import { useRouter } from '@common/utils/vueRouter' import { useRouter } from '@common/utils/vueRouter'
import { clipboardWriteText } from '@common/utils/electron' import { clipboardWriteText } from '@common/utils/electron'
import ControlBtns from './ControlBtns.vue' import ControlBtns from './ControlBtns.vue'
import Quality from './Quality.vue'
// import PlayProgress from './PlayProgress' // import PlayProgress from './PlayProgress'
import usePlayProgress from '@renderer/utils/compositions/usePlayProgress' import usePlayProgress from '@renderer/utils/compositions/usePlayProgress'
// import { lyric } from '@renderer/core/share/lyric' // import { lyric } from '@renderer/core/share/lyric'
@ -71,6 +73,7 @@ export default {
name: 'CorePlayBar', name: 'CorePlayBar',
components: { components: {
ControlBtns, ControlBtns,
Quality,
// PlayProgress, // PlayProgress,
}, },
setup() { setup() {

View File

@ -6,7 +6,7 @@
</div> </div>
<div :class="$style.infoContent"> <div :class="$style.infoContent">
<div :class="$style.title" :aria-label="title + $t('copy_tip')" @click="handleCopy(title)"> <div :class="$style.title" :aria-label="title + $t('copy_tip')" @click="handleCopy(title)">
{{ title }} {{ title }} <quality />
</div> </div>
<div :class="$style.status">{{ statusText }}</div> <div :class="$style.status">{{ statusText }}</div>
</div> </div>
@ -48,6 +48,7 @@ import { computed } from '@common/utils/vueTools'
import { useRouter } from '@common/utils/vueRouter' import { useRouter } from '@common/utils/vueRouter'
import { clipboardWriteText } from '@common/utils/electron' import { clipboardWriteText } from '@common/utils/electron'
import ControlBtns from './ControlBtns.vue' import ControlBtns from './ControlBtns.vue'
import Quality from './Quality.vue'
// import PlayProgress from './PlayProgress' // import PlayProgress from './PlayProgress'
import usePlayProgress from '@renderer/utils/compositions/usePlayProgress' import usePlayProgress from '@renderer/utils/compositions/usePlayProgress'
// import { lyric } from '@renderer/core/share/lyric' // import { lyric } from '@renderer/core/share/lyric'
@ -71,6 +72,7 @@ export default {
name: 'CorePlayBar', name: 'CorePlayBar',
components: { components: {
ControlBtns, ControlBtns,
Quality,
// PlayProgress, // PlayProgress,
}, },
setup() { setup() {

View File

@ -6,7 +6,7 @@
</div> </div>
<div :class="$style.infoContent"> <div :class="$style.infoContent">
<div :class="$style.title" :aria-label="title + $t('copy_tip')" @click="handleCopy(title)"> <div :class="$style.title" :aria-label="title + $t('copy_tip')" @click="handleCopy(title)">
{{ title }} {{ title }} <quality />
</div> </div>
<div :class="$style.status">{{ statusText }}</div> <div :class="$style.status">{{ statusText }}</div>
</div> </div>
@ -51,6 +51,7 @@ import { useRouter } from '@common/utils/vueRouter'
import { clipboardWriteText } from '@common/utils/electron' import { clipboardWriteText } from '@common/utils/electron'
import ControlBtns from './ControlBtns.vue' import ControlBtns from './ControlBtns.vue'
import PlayProgress from './PlayProgress.vue' import PlayProgress from './PlayProgress.vue'
import Quality from './Quality.vue'
import usePlayProgress from '@renderer/utils/compositions/usePlayProgress' import usePlayProgress from '@renderer/utils/compositions/usePlayProgress'
// import { lyric } from '@renderer/core/share/lyric' // import { lyric } from '@renderer/core/share/lyric'
import { import {
@ -74,6 +75,7 @@ export default {
components: { components: {
ControlBtns, ControlBtns,
PlayProgress, PlayProgress,
Quality,
}, },
setup() { setup() {
const router = useRouter() const router = useRouter()
@ -118,6 +120,8 @@ export default {
: '' : ''
}) })
const quality = computed(() => playMusicInfo.quality)
// onBeforeUnmount(() => { // onBeforeUnmount(() => {
// window.eventHub.emit(eventPlayerNames.setTogglePlay) // window.eventHub.emit(eventPlayerNames.setTogglePlay)
// }) // })
@ -140,6 +144,7 @@ export default {
playPrev, playPrev,
handleToMusicLocation, handleToMusicLocation,
isShowPlayerDetail, isShowPlayerDetail,
quality,
} }
}, },
} }

View File

@ -0,0 +1,18 @@
<template>
<span v-if="playMusicInfo.quality === 'flac24bit'" class="no-select badge badge-theme-primary">{{ $t('tag__lossless_24bit') }}</span>
<span v-else-if="playMusicInfo.quality === 'ape' || playMusicInfo.quality === 'flac' || playMusicInfo.quality === 'wav'" class="no-select badge badge-theme-primary">{{ $t('tag__lossless') }}</span>
<span v-else-if="playMusicInfo.quality === '320k'" class="no-select badge badge-theme-secondary">{{ $t('tag__high_quality') }}</span>
<span v-else-if="playMusicInfo.quality === '128k'" class="no-select badge badge-theme-tertiary">{{ $t('tag__low_quality') }}</span>
</template>
<script>
import { playMusicInfo } from '@renderer/store/player/state'
export default {
setup() {
return {
playMusicInfo,
}
},
}
</script>

View File

@ -5,6 +5,7 @@ import {
clearPlayedList, clearPlayedList,
clearTempPlayeList, clearTempPlayeList,
setPlayMusicInfo, setPlayMusicInfo,
setPlayMusicInfoQuality,
addPlayedList, addPlayedList,
setMusicInfo, setMusicInfo,
setAllStatus, setAllStatus,
@ -133,6 +134,7 @@ export const setMusicUrl = (musicInfo: LX.Music.MusicInfo | LX.Download.ListItem
void getMusicPlayUrl(musicInfo, isRefresh).then((url) => { void getMusicPlayUrl(musicInfo, isRefresh).then((url) => {
if (!url) return if (!url) return
setResource(url) setResource(url)
setPlayMusicInfoQuality(musicInfo)
}).catch((err: any) => { }).catch((err: any) => {
console.log(err) console.log(err)
setAllStatus(err.message) setAllStatus(err.message)

View File

@ -13,15 +13,16 @@ import {
playedList, playedList,
tempPlayList, tempPlayList,
} from './state' } from './state'
import { appSetting } from '@renderer/store/setting'
import { getListMusicsFromCache } from '@renderer/store/list/action' import { getListMusicsFromCache } from '@renderer/store/list/action'
import { downloadList } from '@renderer/store/download/state' import { downloadList } from '@renderer/store/download/state'
import { setProgress } from './playProgress' import { setProgress } from './playProgress'
import { playNext } from '@renderer/core/player' import { playNext } from '@renderer/core/player'
import { getPlayQuality } from '@renderer/core/music/utils'
import { LIST_IDS } from '@common/constants' import { LIST_IDS } from '@common/constants'
import { toRaw } from '@common/utils/vueTools' import { toRaw } from '@common/utils/vueTools'
import { arrPush, arrUnshift } from '@common/utils/common' import { arrPush, arrUnshift } from '@common/utils/common'
type PlayerMusicInfoKeys = keyof typeof musicInfo type PlayerMusicInfoKeys = keyof typeof musicInfo
const musicInfoKeys: PlayerMusicInfoKeys[] = Object.keys(musicInfo) as PlayerMusicInfoKeys[] const musicInfoKeys: PlayerMusicInfoKeys[] = Object.keys(musicInfo) as PlayerMusicInfoKeys[]
@ -196,7 +197,19 @@ export const setPlayMusicInfo = (listId: string | null, musicInfo: LX.Download.L
window.app_event.musicToggled() window.app_event.musicToggled()
} }
} }
/**
* (线)
* @param musicInfo
*/
export const setPlayMusicInfoQuality = (musicInfo: LX.Music.MusicInfo | LX.Download.ListItem) => {
if (!('progress' in musicInfo)) {
playMusicInfo.quality = musicInfo.source !== 'local'
? getPlayQuality(appSetting['player.playQuality'], musicInfo)
: undefined
} else {
playMusicInfo.quality = undefined
}
}
/** /**
* *
* @param playMusicInfo playMusicInfo * @param playMusicInfo playMusicInfo

View File

@ -53,10 +53,15 @@ export const playMusicInfo = shallowReactive<{
* *
*/ */
isTempPlay: boolean isTempPlay: boolean
/**
*
*/
quality?: LX.Quality
}>({ }>({
listId: null, listId: null,
musicInfo: null, musicInfo: null,
isTempPlay: false, isTempPlay: false,
quality: undefined,
}) })
export const playInfo = shallowReactive<LX.Player.PlayInfo>({ export const playInfo = shallowReactive<LX.Player.PlayInfo>({
playIndex: -1, playIndex: -1,

View File

@ -14,6 +14,10 @@ declare namespace LX {
* *
*/ */
isTempPlay: boolean isTempPlay: boolean
/**
*
*/
quality?: LX.Quality
} }
interface PlayInfo { interface PlayInfo {