在线播放更高音质
This commit is contained in:
parent
87852acb14
commit
ac55c739c3
@ -519,7 +519,7 @@
|
|||||||
"setting__play_media_device_error_tip": "此功能与高级音频功能(音频可视化、音效设置)冲突,你本次启动软件时已启用这些功能,此设置暂不可用,请 关闭这些功能 并 重启 软件后,再来修改此设置。",
|
"setting__play_media_device_error_tip": "此功能与高级音频功能(音频可视化、音效设置)冲突,你本次启动软件时已启用这些功能,此设置暂不可用,请 关闭这些功能 并 重启 软件后,再来修改此设置。",
|
||||||
"setting__play_media_device_tip": "此功能与音频可视化功能冲突,两者无法同时启用,是否将音频可视化关闭 并 应用所选音频输出设置?",
|
"setting__play_media_device_tip": "此功能与音频可视化功能冲突,两者无法同时启用,是否将音频可视化关闭 并 应用所选音频输出设置?",
|
||||||
"setting__play_power_save_blocker": "播放歌曲时阻止电脑休眠",
|
"setting__play_power_save_blocker": "播放歌曲时阻止电脑休眠",
|
||||||
"setting__play_quality": "优先播放320K品质的歌曲(如果可用)",
|
"setting__play_quality": "优先播放更高品质的歌曲(如果可用)",
|
||||||
"setting__play_save_play_time": "记住播放进度",
|
"setting__play_save_play_time": "记住播放进度",
|
||||||
"setting__play_startup_auto_play": "启动软件后自动播放音乐",
|
"setting__play_startup_auto_play": "启动软件后自动播放音乐",
|
||||||
"setting__play_task_bar": "在任务栏上显示当前歌曲播放进度",
|
"setting__play_task_bar": "在任务栏上显示当前歌曲播放进度",
|
||||||
|
|||||||
@ -16,7 +16,7 @@ import { apis } from '@renderer/utils/musicSdk/api-source'
|
|||||||
const getOtherSourcePromises = new Map()
|
const getOtherSourcePromises = new Map()
|
||||||
export const existTimeExp = /\[\d{1,2}:.*\d{1,4}\]/
|
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) {
|
if (!isRefresh) {
|
||||||
const cachedInfo = await getOtherSourceFromStore(musicInfo.id)
|
const cachedInfo = await getOtherSourceFromStore(musicInfo.id)
|
||||||
if (cachedInfo.length) return cachedInfo
|
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']) {
|
if (!appSetting['player.isS2t']) {
|
||||||
// @ts-expect-error
|
// @ts-expect-error
|
||||||
if (lyricInfo.rawlrcInfo) return lyricInfo
|
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 } }
|
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)
|
let lrcInfo = await getStoreLyric(musicInfo)
|
||||||
// lrcInfo = {} as unknown as LX.Player.LyricInfo
|
// lrcInfo = {} as unknown as LX.Player.LyricInfo
|
||||||
if (existTimeExp.test(lrcInfo.lyric) && lrcInfo.tlyric != null) {
|
if (existTimeExp.test(lrcInfo.lyric) && lrcInfo.tlyric != null) {
|
||||||
@ -148,7 +148,7 @@ export const getCachedLyricInfo = async(musicInfo: LX.Music.MusicInfo): Promise<
|
|||||||
return null
|
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
|
url: string
|
||||||
quality: LX.Quality
|
quality: LX.Quality
|
||||||
isFromCache: boolean
|
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
|
lyricInfo: LX.Music.LyricInfo
|
||||||
isFromCache: boolean
|
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
|
url: string
|
||||||
}> => {
|
}> => {
|
||||||
if (!await window.lx.apiInitPromise[0]) throw new Error('source init failed')
|
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 => {
|
export const getPlayQuality = (highQuality: boolean, musicInfo: LX.Music.MusicInfoOnline): LX.Quality => {
|
||||||
let type: LX.Quality = '128k'
|
let type: LX.Quality = '128k'
|
||||||
let list = qualityList.value[musicInfo.source]
|
if (highQuality) {
|
||||||
if (highQuality && musicInfo.meta._qualitys['320k'] && list?.includes('320k')) type = '320k'
|
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
|
return type
|
||||||
}
|
}
|
||||||
|
|
||||||
export const getOnlineOtherSourceMusicUrl = async({ musicInfos, quality, onToggleSource, isRefresh, retryedSource = [] }: {
|
export const getOnlineOtherSourceMusicUrl = async ({ musicInfos, quality, onToggleSource, isRefresh, retryedSource = [] }: {
|
||||||
musicInfos: LX.Music.MusicInfoOnline[]
|
musicInfos: LX.Music.MusicInfoOnline[]
|
||||||
quality?: LX.Quality
|
quality?: LX.Quality
|
||||||
onToggleSource: (musicInfo?: LX.Music.MusicInfoOnline) => void
|
onToggleSource: (musicInfo?: LX.Music.MusicInfoOnline) => void
|
||||||
@ -271,7 +279,7 @@ export const getOnlineOtherSourceMusicUrl = async({ musicInfos, quality, onToggl
|
|||||||
/**
|
/**
|
||||||
* 获取在线音乐URL
|
* 获取在线音乐URL
|
||||||
*/
|
*/
|
||||||
export const handleGetOnlineMusicUrl = async({ musicInfo, quality, onToggleSource, isRefresh, allowToggleSource }: {
|
export const handleGetOnlineMusicUrl = async ({ musicInfo, quality, onToggleSource, isRefresh, allowToggleSource }: {
|
||||||
musicInfo: LX.Music.MusicInfoOnline
|
musicInfo: LX.Music.MusicInfoOnline
|
||||||
quality?: LX.Quality
|
quality?: LX.Quality
|
||||||
isRefresh: boolean
|
isRefresh: boolean
|
||||||
@ -295,7 +303,7 @@ export const handleGetOnlineMusicUrl = async({ musicInfo, quality, onToggleSourc
|
|||||||
}
|
}
|
||||||
return reqPromise.then(({ url, type }: { url: string, type: LX.Quality }) => {
|
return reqPromise.then(({ url, type }: { url: string, type: LX.Quality }) => {
|
||||||
return { musicInfo, url, quality: type, isFromCache: false }
|
return { musicInfo, url, quality: type, isFromCache: false }
|
||||||
}).catch(async(err: any) => {
|
}).catch(async (err: any) => {
|
||||||
console.log(err)
|
console.log(err)
|
||||||
if (!allowToggleSource || err.message == requestMsg.tooManyRequests) throw err
|
if (!allowToggleSource || err.message == requestMsg.tooManyRequests) throw err
|
||||||
onToggleSource()
|
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[]
|
musicInfos: LX.Music.MusicInfoOnline[]
|
||||||
onToggleSource: (musicInfo?: LX.Music.MusicInfoOnline) => void
|
onToggleSource: (musicInfo?: LX.Music.MusicInfoOnline) => void
|
||||||
isRefresh: boolean
|
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
|
musicInfo: LX.Music.MusicInfoOnline
|
||||||
onToggleSource: (musicInfo?: LX.Music.MusicInfoOnline) => void
|
onToggleSource: (musicInfo?: LX.Music.MusicInfoOnline) => void
|
||||||
isRefresh: boolean
|
isRefresh: boolean
|
||||||
@ -379,7 +387,7 @@ export const handleGetOnlinePicUrl = async({ musicInfo, isRefresh, onToggleSourc
|
|||||||
}
|
}
|
||||||
return reqPromise.then((url: string) => {
|
return reqPromise.then((url: string) => {
|
||||||
return { musicInfo, url, isFromCache: false }
|
return { musicInfo, url, isFromCache: false }
|
||||||
}).catch(async(err: any) => {
|
}).catch(async (err: any) => {
|
||||||
console.log(err)
|
console.log(err)
|
||||||
if (!allowToggleSource) throw err
|
if (!allowToggleSource) throw err
|
||||||
onToggleSource()
|
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[]
|
musicInfos: LX.Music.MusicInfoOnline[]
|
||||||
onToggleSource: (musicInfo?: LX.Music.MusicInfoOnline) => void
|
onToggleSource: (musicInfo?: LX.Music.MusicInfoOnline) => void
|
||||||
isRefresh: boolean
|
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
|
musicInfo: LX.Music.MusicInfoOnline
|
||||||
onToggleSource: (musicInfo?: LX.Music.MusicInfoOnline) => void
|
onToggleSource: (musicInfo?: LX.Music.MusicInfoOnline) => void
|
||||||
isRefresh: boolean
|
isRefresh: boolean
|
||||||
@ -477,7 +485,7 @@ export const handleGetOnlineLyricInfo = async({ musicInfo, onToggleSource, isRef
|
|||||||
lyricInfo,
|
lyricInfo,
|
||||||
isFromCache: false,
|
isFromCache: false,
|
||||||
} : Promise.reject(new Error('failed'))
|
} : Promise.reject(new Error('failed'))
|
||||||
}).catch(async(err: any) => {
|
}).catch(async (err: any) => {
|
||||||
console.log(err)
|
console.log(err)
|
||||||
if (!allowToggleSource) throw err
|
if (!allowToggleSource) throw err
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user