在线播放更高音质

This commit is contained in:
NKXingXh 2024-04-15 00:21:27 +08:00
parent 87852acb14
commit ac55c739c3
2 changed files with 26 additions and 18 deletions

View File

@ -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": "在任务栏上显示当前歌曲播放进度",

View File

@ -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<LX.Music.MusicInfoOnline[]> => {
export const getOtherSource = async (musicInfo: LX.Music.MusicInfo | LX.Download.ListItem, isRefresh = false): Promise<LX.Music.MusicInfoOnline[]> => {
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<LX.Player.LyricInfo, 'rawlrcInfo'>): Promise<LX.Player.LyricInfo> => {
export const buildLyricInfo = async (lyricInfo: MakeOptional<LX.Player.LyricInfo, 'rawlrcInfo'>): Promise<LX.Player.LyricInfo> => {
if (!appSetting['player.isS2t']) {
// @ts-expect-error
if (lyricInfo.rawlrcInfo) return lyricInfo
@ -117,7 +117,7 @@ export const buildLyricInfo = async(lyricInfo: MakeOptional<LX.Player.LyricInfo,
return lyricInfo.rawlrcInfo ? lyricInfo : { ...lyricInfo, rawlrcInfo: { ...lyricInfo } }
}
export const getCachedLyricInfo = async(musicInfo: LX.Music.MusicInfo): Promise<LX.Player.LyricInfo | null> => {
export const getCachedLyricInfo = async (musicInfo: LX.Music.MusicInfo): Promise<LX.Player.LyricInfo | null> => {
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