mirror of
https://github.com/ikun0014/lx-music-mobile.git
synced 2025-07-03 05:52:10 +08:00
74 lines
2.5 KiB
TypeScript
74 lines
2.5 KiB
TypeScript
// import { store } from '@/store'
|
|
// import { getDownloadFilePath } from '@renderer/utils/music'
|
|
|
|
import {
|
|
getMusicUrl as getOnlineMusicUrl,
|
|
getPicUrl as getOnlinePicUrl,
|
|
getLyricInfo as getOnlineLyricInfo,
|
|
} from './online'
|
|
import { buildLyricInfo, getCachedLyricInfo } from './utils'
|
|
|
|
export const getMusicUrl = async({ musicInfo, isRefresh, allowToggleSource = true, onToggleSource = () => {} }: {
|
|
musicInfo: LX.Download.ListItem
|
|
isRefresh: boolean
|
|
onToggleSource?: (musicInfo?: LX.Music.MusicInfoOnline) => void
|
|
allowToggleSource?: boolean
|
|
}): Promise<string> => {
|
|
// if (!isRefresh) {
|
|
// const path = await getDownloadFilePath(musicInfo, appSetting['download.savePath'])
|
|
// if (path) return path
|
|
// }
|
|
|
|
return getOnlineMusicUrl({ musicInfo: musicInfo.metadata.musicInfo, isRefresh, onToggleSource, allowToggleSource })
|
|
}
|
|
|
|
export const getPicUrl = async({ musicInfo, isRefresh, listId, onToggleSource = () => {} }: {
|
|
musicInfo: LX.Download.ListItem
|
|
isRefresh: boolean
|
|
listId?: string | null
|
|
onToggleSource?: (musicInfo?: LX.Music.MusicInfoOnline) => void
|
|
}): Promise<string> => {
|
|
if (!isRefresh) {
|
|
// const path = await getDownloadFilePath(musicInfo, appSetting['download.savePath'])
|
|
// if (path) {
|
|
// const pic = await global.lx.worker.main.getMusicFilePic(path)
|
|
// if (pic) return pic
|
|
// }
|
|
|
|
const onlineMusicInfo = musicInfo.metadata.musicInfo
|
|
if (onlineMusicInfo.meta.picUrl) return onlineMusicInfo.meta.picUrl
|
|
}
|
|
|
|
return getOnlinePicUrl({ musicInfo: musicInfo.metadata.musicInfo, isRefresh, onToggleSource }).then((url) => {
|
|
// TODO: when listId required save url (update downloadInfo)
|
|
|
|
return url
|
|
})
|
|
}
|
|
|
|
export const getLyricInfo = async({ musicInfo, isRefresh, onToggleSource = () => {} }: {
|
|
musicInfo: LX.Download.ListItem
|
|
isRefresh: boolean
|
|
onToggleSource?: (musicInfo?: LX.Music.MusicInfoOnline) => void
|
|
}): Promise<LX.Player.LyricInfo> => {
|
|
if (!isRefresh) {
|
|
const lyricInfo = await getCachedLyricInfo(musicInfo.metadata.musicInfo)
|
|
if (lyricInfo) return buildLyricInfo(lyricInfo)
|
|
}
|
|
|
|
return getOnlineLyricInfo({
|
|
musicInfo: musicInfo.metadata.musicInfo,
|
|
isRefresh,
|
|
onToggleSource,
|
|
}).catch(async() => {
|
|
// 尝试读取文件内歌词
|
|
// const path = await getDownloadFilePath(musicInfo, appSetting['download.savePath'])
|
|
// if (path) {
|
|
// const rawlrcInfo = await window.lx.worker.main.getMusicFileLyric(path)
|
|
// if (rawlrcInfo) return buildLyricInfo(rawlrcInfo)
|
|
// }
|
|
|
|
throw new Error('failed')
|
|
})
|
|
}
|