From 781eba126c645e574212dc221ad58ca3011feb7d Mon Sep 17 00:00:00 2001 From: 14Kay <619113277@qq.com> Date: Wed, 19 Mar 2025 18:33:57 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=98=BE=E7=A4=BA=E5=BD=93=E5=89=8D?= =?UTF-8?q?=E6=92=AD=E6=94=BE=E7=9A=84=E5=9C=A8=E7=BA=BF=E6=AD=8C=E6=9B=B2?= =?UTF-8?q?=E7=9A=84=E9=9F=B3=E8=B4=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/lang/en-us.json | 1 + src/lang/zh-cn.json | 1 + src/lang/zh-tw.json | 1 + .../layout/PlayBar/FullWidthProgress.vue | 5 ++++- .../layout/PlayBar/MiddleWidthProgress.vue | 4 +++- .../layout/PlayBar/MiniWidthProgress.vue | 7 ++++++- .../components/layout/PlayBar/Quality.vue | 18 ++++++++++++++++++ src/renderer/core/player/action.ts | 2 ++ src/renderer/store/player/action.ts | 17 +++++++++++++++-- src/renderer/store/player/state.ts | 5 +++++ src/renderer/types/player.d.ts | 4 ++++ 11 files changed, 60 insertions(+), 5 deletions(-) create mode 100644 src/renderer/components/layout/PlayBar/Quality.vue diff --git a/src/lang/en-us.json b/src/lang/en-us.json index 0de3267b..7b470fb8 100644 --- a/src/lang/en-us.json +++ b/src/lang/en-us.json @@ -650,6 +650,7 @@ "sync__overwrite_label": "Overwrite", "sync__overwrite_tip": "Overwrite: ", "sync_status_disabled": "not connected", + "tag__low_quality": "LQ", "tag__high_quality": "HQ", "tag__lossless": "SQ", "tag__lossless_24bit": "24bit", diff --git a/src/lang/zh-cn.json b/src/lang/zh-cn.json index 6a9152ab..febb0b5f 100644 --- a/src/lang/zh-cn.json +++ b/src/lang/zh-cn.json @@ -650,6 +650,7 @@ "sync__overwrite_label": "覆盖", "sync__overwrite_tip": "覆盖:", "sync_status_disabled": "未连接", + "tag__low_quality": "LQ", "tag__high_quality": "HQ", "tag__lossless": "SQ", "tag__lossless_24bit": "24bit", diff --git a/src/lang/zh-tw.json b/src/lang/zh-tw.json index c43ba08b..41587236 100644 --- a/src/lang/zh-tw.json +++ b/src/lang/zh-tw.json @@ -650,6 +650,7 @@ "sync__overwrite_label": "覆寫", "sync__overwrite_tip": "覆寫:", "sync_status_disabled": "未連線", + "tag__low_quality": "LQ", "tag__high_quality": "HQ", "tag__lossless": "SQ", "tag__lossless_24bit": "24bit", diff --git a/src/renderer/components/layout/PlayBar/FullWidthProgress.vue b/src/renderer/components/layout/PlayBar/FullWidthProgress.vue index d92d968f..ba4fec71 100644 --- a/src/renderer/components/layout/PlayBar/FullWidthProgress.vue +++ b/src/renderer/components/layout/PlayBar/FullWidthProgress.vue @@ -9,7 +9,7 @@
- {{ title }} + {{ title }}
{{ statusText }}
@@ -48,6 +48,8 @@ import { computed } from '@common/utils/vueTools' import { useRouter } from '@common/utils/vueRouter' import { clipboardWriteText } from '@common/utils/electron' import ControlBtns from './ControlBtns.vue' +import Quality from './Quality.vue' + // import PlayProgress from './PlayProgress' import usePlayProgress from '@renderer/utils/compositions/usePlayProgress' // import { lyric } from '@renderer/core/share/lyric' @@ -71,6 +73,7 @@ export default { name: 'CorePlayBar', components: { ControlBtns, + Quality, // PlayProgress, }, setup() { diff --git a/src/renderer/components/layout/PlayBar/MiddleWidthProgress.vue b/src/renderer/components/layout/PlayBar/MiddleWidthProgress.vue index f996a332..2e21816e 100644 --- a/src/renderer/components/layout/PlayBar/MiddleWidthProgress.vue +++ b/src/renderer/components/layout/PlayBar/MiddleWidthProgress.vue @@ -6,7 +6,7 @@
- {{ title }} + {{ title }}
{{ statusText }}
@@ -48,6 +48,7 @@ import { computed } from '@common/utils/vueTools' import { useRouter } from '@common/utils/vueRouter' import { clipboardWriteText } from '@common/utils/electron' import ControlBtns from './ControlBtns.vue' +import Quality from './Quality.vue' // import PlayProgress from './PlayProgress' import usePlayProgress from '@renderer/utils/compositions/usePlayProgress' // import { lyric } from '@renderer/core/share/lyric' @@ -71,6 +72,7 @@ export default { name: 'CorePlayBar', components: { ControlBtns, + Quality, // PlayProgress, }, setup() { diff --git a/src/renderer/components/layout/PlayBar/MiniWidthProgress.vue b/src/renderer/components/layout/PlayBar/MiniWidthProgress.vue index 668e9a8b..8d0c17d0 100644 --- a/src/renderer/components/layout/PlayBar/MiniWidthProgress.vue +++ b/src/renderer/components/layout/PlayBar/MiniWidthProgress.vue @@ -6,7 +6,7 @@
- {{ title }} + {{ title }}
{{ statusText }}
@@ -51,6 +51,7 @@ import { useRouter } from '@common/utils/vueRouter' import { clipboardWriteText } from '@common/utils/electron' import ControlBtns from './ControlBtns.vue' import PlayProgress from './PlayProgress.vue' +import Quality from './Quality.vue' import usePlayProgress from '@renderer/utils/compositions/usePlayProgress' // import { lyric } from '@renderer/core/share/lyric' import { @@ -74,6 +75,7 @@ export default { components: { ControlBtns, PlayProgress, + Quality, }, setup() { const router = useRouter() @@ -118,6 +120,8 @@ export default { : '' }) + const quality = computed(() => playMusicInfo.quality) + // onBeforeUnmount(() => { // window.eventHub.emit(eventPlayerNames.setTogglePlay) // }) @@ -140,6 +144,7 @@ export default { playPrev, handleToMusicLocation, isShowPlayerDetail, + quality, } }, } diff --git a/src/renderer/components/layout/PlayBar/Quality.vue b/src/renderer/components/layout/PlayBar/Quality.vue new file mode 100644 index 00000000..4e111753 --- /dev/null +++ b/src/renderer/components/layout/PlayBar/Quality.vue @@ -0,0 +1,18 @@ + + + diff --git a/src/renderer/core/player/action.ts b/src/renderer/core/player/action.ts index 6c0e3eca..7e06d4f0 100644 --- a/src/renderer/core/player/action.ts +++ b/src/renderer/core/player/action.ts @@ -5,6 +5,7 @@ import { clearPlayedList, clearTempPlayeList, setPlayMusicInfo, + setPlayMusicInfoQuality, addPlayedList, setMusicInfo, setAllStatus, @@ -133,6 +134,7 @@ export const setMusicUrl = (musicInfo: LX.Music.MusicInfo | LX.Download.ListItem void getMusicPlayUrl(musicInfo, isRefresh).then((url) => { if (!url) return setResource(url) + setPlayMusicInfoQuality(musicInfo) }).catch((err: any) => { console.log(err) setAllStatus(err.message) diff --git a/src/renderer/store/player/action.ts b/src/renderer/store/player/action.ts index 87977fc1..085f5166 100644 --- a/src/renderer/store/player/action.ts +++ b/src/renderer/store/player/action.ts @@ -13,15 +13,16 @@ import { playedList, tempPlayList, } from './state' +import { appSetting } from '@renderer/store/setting' import { getListMusicsFromCache } from '@renderer/store/list/action' import { downloadList } from '@renderer/store/download/state' import { setProgress } from './playProgress' import { playNext } from '@renderer/core/player' +import { getPlayQuality } from '@renderer/core/music/utils' import { LIST_IDS } from '@common/constants' import { toRaw } from '@common/utils/vueTools' import { arrPush, arrUnshift } from '@common/utils/common' - type PlayerMusicInfoKeys = keyof typeof musicInfo 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() } } - +/** + * 设置当前播放歌曲的音质(如果是在线歌曲) + * @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对象 diff --git a/src/renderer/store/player/state.ts b/src/renderer/store/player/state.ts index 48aea238..2868d716 100644 --- a/src/renderer/store/player/state.ts +++ b/src/renderer/store/player/state.ts @@ -53,10 +53,15 @@ export const playMusicInfo = shallowReactive<{ * 是否属于 “稍后播放” */ isTempPlay: boolean + /** + * 当前播放音质 + */ + quality?: LX.Quality }>({ listId: null, musicInfo: null, isTempPlay: false, + quality: undefined, }) export const playInfo = shallowReactive({ playIndex: -1, diff --git a/src/renderer/types/player.d.ts b/src/renderer/types/player.d.ts index f627e71f..c23b4c15 100644 --- a/src/renderer/types/player.d.ts +++ b/src/renderer/types/player.d.ts @@ -14,6 +14,10 @@ declare namespace LX { * 是否属于 “稍后播放” */ isTempPlay: boolean + /** + * 当前播放音质 + */ + quality?: LX.Quality } interface PlayInfo {