From ac55c739c34ee579bb735b49103d95a630e5ae57 Mon Sep 17 00:00:00 2001 From: NKXingXh Date: Mon, 15 Apr 2024 00:21:27 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9C=A8=E7=BA=BF=E6=92=AD=E6=94=BE=E6=9B=B4?= =?UTF-8?q?=E9=AB=98=E9=9F=B3=E8=B4=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/lang/zh-cn.json | 2 +- src/renderer/core/music/utils.ts | 42 +++++++++++++++++++------------- 2 files changed, 26 insertions(+), 18 deletions(-) diff --git a/src/lang/zh-cn.json b/src/lang/zh-cn.json index 7e94c4cf..442e1a1f 100644 --- a/src/lang/zh-cn.json +++ b/src/lang/zh-cn.json @@ -519,7 +519,7 @@ "setting__play_media_device_error_tip": "此功能与高级音频功能(音频可视化、音效设置)冲突,你本次启动软件时已启用这些功能,此设置暂不可用,请 关闭这些功能 并 重启 软件后,再来修改此设置。", "setting__play_media_device_tip": "此功能与音频可视化功能冲突,两者无法同时启用,是否将音频可视化关闭 并 应用所选音频输出设置?", "setting__play_power_save_blocker": "播放歌曲时阻止电脑休眠", - "setting__play_quality": "优先播放320K品质的歌曲(如果可用)", + "setting__play_quality": "优先播放更高品质的歌曲(如果可用)", "setting__play_save_play_time": "记住播放进度", "setting__play_startup_auto_play": "启动软件后自动播放音乐", "setting__play_task_bar": "在任务栏上显示当前歌曲播放进度", diff --git a/src/renderer/core/music/utils.ts b/src/renderer/core/music/utils.ts index cc6e631a..51a58a8a 100644 --- a/src/renderer/core/music/utils.ts +++ b/src/renderer/core/music/utils.ts @@ -16,7 +16,7 @@ import { apis } from '@renderer/utils/musicSdk/api-source' const getOtherSourcePromises = new Map() export const existTimeExp = /\[\d{1,2}:.*\d{1,4}\]/ -export const getOtherSource = async(musicInfo: LX.Music.MusicInfo | LX.Download.ListItem, isRefresh = false): Promise => { +export const getOtherSource = async (musicInfo: LX.Music.MusicInfo | LX.Download.ListItem, isRefresh = false): Promise => { if (!isRefresh) { const cachedInfo = await getOtherSourceFromStore(musicInfo.id) if (cachedInfo.length) return cachedInfo @@ -71,7 +71,7 @@ export const getOtherSource = async(musicInfo: LX.Music.MusicInfo | LX.Download. } -export const buildLyricInfo = async(lyricInfo: MakeOptional): Promise => { +export const buildLyricInfo = async (lyricInfo: MakeOptional): Promise => { if (!appSetting['player.isS2t']) { // @ts-expect-error if (lyricInfo.rawlrcInfo) return lyricInfo @@ -117,7 +117,7 @@ export const buildLyricInfo = async(lyricInfo: MakeOptional => { +export const getCachedLyricInfo = async (musicInfo: LX.Music.MusicInfo): Promise => { let lrcInfo = await getStoreLyric(musicInfo) // lrcInfo = {} as unknown as LX.Player.LyricInfo if (existTimeExp.test(lrcInfo.lyric) && lrcInfo.tlyric != null) { @@ -148,7 +148,7 @@ export const getCachedLyricInfo = async(musicInfo: LX.Music.MusicInfo): Promise< return null } -export const getOnlineOtherSourceMusicUrlByLocal = async(musicInfo: LX.Music.MusicInfoLocal, isRefresh: boolean): Promise<{ +export const getOnlineOtherSourceMusicUrlByLocal = async (musicInfo: LX.Music.MusicInfoLocal, isRefresh: boolean): Promise<{ url: string quality: LX.Quality isFromCache: boolean @@ -172,7 +172,7 @@ export const getOnlineOtherSourceMusicUrlByLocal = async(musicInfo: LX.Music.Mus }) } -export const getOnlineOtherSourceLyricByLocal = async(musicInfo: LX.Music.MusicInfoLocal, isRefresh: boolean): Promise<{ +export const getOnlineOtherSourceLyricByLocal = async (musicInfo: LX.Music.MusicInfoLocal, isRefresh: boolean): Promise<{ lyricInfo: LX.Music.LyricInfo isFromCache: boolean }> => { @@ -193,7 +193,7 @@ export const getOnlineOtherSourceLyricByLocal = async(musicInfo: LX.Music.MusicI }) } -export const getOnlineOtherSourcePicByLocal = async(musicInfo: LX.Music.MusicInfoLocal): Promise<{ +export const getOnlineOtherSourcePicByLocal = async (musicInfo: LX.Music.MusicInfoLocal): Promise<{ url: string }> => { if (!await window.lx.apiInitPromise[0]) throw new Error('source init failed') @@ -212,12 +212,20 @@ export const getOnlineOtherSourcePicByLocal = async(musicInfo: LX.Music.MusicInf export const getPlayQuality = (highQuality: boolean, 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 (highQuality) { + let list = qualityList.value[musicInfo.source] + let tryList = ['flac24bit', 'flac', '320k'] + for (let i = 0; i < tryList.length; i++) { + if (highQuality && musicInfo.meta._qualitys[tryList[i] as LX.Quality] && list?.includes(tryList[i] as LX.Quality)) { + type = tryList[i] as LX.Quality + break + } + } + } return type } -export const getOnlineOtherSourceMusicUrl = async({ musicInfos, quality, onToggleSource, isRefresh, retryedSource = [] }: { +export const getOnlineOtherSourceMusicUrl = async ({ musicInfos, quality, onToggleSource, isRefresh, retryedSource = [] }: { musicInfos: LX.Music.MusicInfoOnline[] quality?: LX.Quality onToggleSource: (musicInfo?: LX.Music.MusicInfoOnline) => void @@ -271,7 +279,7 @@ export const getOnlineOtherSourceMusicUrl = async({ musicInfos, quality, onToggl /** * 获取在线音乐URL */ -export const handleGetOnlineMusicUrl = async({ musicInfo, quality, onToggleSource, isRefresh, allowToggleSource }: { +export const handleGetOnlineMusicUrl = async ({ musicInfo, quality, onToggleSource, isRefresh, allowToggleSource }: { musicInfo: LX.Music.MusicInfoOnline quality?: LX.Quality isRefresh: boolean @@ -295,7 +303,7 @@ export const handleGetOnlineMusicUrl = async({ musicInfo, quality, onToggleSourc } return reqPromise.then(({ url, type }: { url: string, type: LX.Quality }) => { return { musicInfo, url, quality: type, isFromCache: false } - }).catch(async(err: any) => { + }).catch(async (err: any) => { console.log(err) if (!allowToggleSource || err.message == requestMsg.tooManyRequests) throw err onToggleSource() @@ -317,7 +325,7 @@ export const handleGetOnlineMusicUrl = async({ musicInfo, quality, onToggleSourc } -export const getOnlineOtherSourcePicUrl = async({ musicInfos, onToggleSource, isRefresh, retryedSource = [] }: { +export const getOnlineOtherSourcePicUrl = async ({ musicInfos, onToggleSource, isRefresh, retryedSource = [] }: { musicInfos: LX.Music.MusicInfoOnline[] onToggleSource: (musicInfo?: LX.Music.MusicInfoOnline) => void isRefresh: boolean @@ -360,7 +368,7 @@ export const getOnlineOtherSourcePicUrl = async({ musicInfos, onToggleSource, is /** * 获取在线歌曲封面 */ -export const handleGetOnlinePicUrl = async({ musicInfo, isRefresh, onToggleSource, allowToggleSource }: { +export const handleGetOnlinePicUrl = async ({ musicInfo, isRefresh, onToggleSource, allowToggleSource }: { musicInfo: LX.Music.MusicInfoOnline onToggleSource: (musicInfo?: LX.Music.MusicInfoOnline) => void isRefresh: boolean @@ -379,7 +387,7 @@ export const handleGetOnlinePicUrl = async({ musicInfo, isRefresh, onToggleSourc } return reqPromise.then((url: string) => { return { musicInfo, url, isFromCache: false } - }).catch(async(err: any) => { + }).catch(async (err: any) => { console.log(err) if (!allowToggleSource) throw err onToggleSource() @@ -400,7 +408,7 @@ export const handleGetOnlinePicUrl = async({ musicInfo, isRefresh, onToggleSourc } -export const getOnlineOtherSourceLyricInfo = async({ musicInfos, onToggleSource, isRefresh, retryedSource = [] }: { +export const getOnlineOtherSourceLyricInfo = async ({ musicInfos, onToggleSource, isRefresh, retryedSource = [] }: { musicInfos: LX.Music.MusicInfoOnline[] onToggleSource: (musicInfo?: LX.Music.MusicInfoOnline) => void isRefresh: boolean @@ -452,7 +460,7 @@ export const getOnlineOtherSourceLyricInfo = async({ musicInfos, onToggleSource, /** * 获取在线歌词信息 */ -export const handleGetOnlineLyricInfo = async({ musicInfo, onToggleSource, isRefresh, allowToggleSource }: { +export const handleGetOnlineLyricInfo = async ({ musicInfo, onToggleSource, isRefresh, allowToggleSource }: { musicInfo: LX.Music.MusicInfoOnline onToggleSource: (musicInfo?: LX.Music.MusicInfoOnline) => void isRefresh: boolean @@ -477,7 +485,7 @@ export const handleGetOnlineLyricInfo = async({ musicInfo, onToggleSource, isRef lyricInfo, isFromCache: false, } : Promise.reject(new Error('failed')) - }).catch(async(err: any) => { + }).catch(async (err: any) => { console.log(err) if (!allowToggleSource) throw err