改进本地音乐在线信息的匹配机制
parent
965a1d03ba
commit
f75eeb07be
|
@ -20,6 +20,7 @@
|
|||
- 优化列表全选机制,修复列表未获得焦点时仍然可以全选的问题
|
||||
- 优化搜索框交互逻辑,防止鼠标操作时意外搜索候选列表的内容
|
||||
- 添加对wy源某些歌曲有问题的歌词进行修复
|
||||
- 改进本地音乐在线信息的匹配机制
|
||||
|
||||
### 修复
|
||||
|
||||
|
|
|
@ -13,6 +13,56 @@ import {
|
|||
} from './utils'
|
||||
|
||||
|
||||
const getOtherSourceByLocal = async(musicInfo: LX.Music.MusicInfoLocal) => {
|
||||
let result: LX.Music.MusicInfoOnline[] = []
|
||||
result = await getOtherSource(musicInfo)
|
||||
if (result.length) return result
|
||||
if (musicInfo.name.includes('-')) {
|
||||
const [name, singer] = musicInfo.name.split('-').map(val => val.trim())
|
||||
result = await getOtherSource({
|
||||
...musicInfo,
|
||||
name,
|
||||
singer,
|
||||
})
|
||||
if (result.length) return result
|
||||
result = await getOtherSource({
|
||||
...musicInfo,
|
||||
name: singer,
|
||||
singer: name,
|
||||
})
|
||||
if (result.length) return result
|
||||
}
|
||||
let fileName = musicInfo.meta.filePath.split('/').at(-1)
|
||||
if (fileName) {
|
||||
fileName = fileName.substring(0, fileName.lastIndexOf('.'))
|
||||
if (fileName != musicInfo.name) {
|
||||
if (fileName.includes('-')) {
|
||||
const [name, singer] = fileName.split('-').map(val => val.trim())
|
||||
result = await getOtherSource({
|
||||
...musicInfo,
|
||||
name,
|
||||
singer,
|
||||
})
|
||||
if (result.length) return result
|
||||
result = await getOtherSource({
|
||||
...musicInfo,
|
||||
name: singer,
|
||||
singer: name,
|
||||
})
|
||||
} else {
|
||||
result = await getOtherSource({
|
||||
...musicInfo,
|
||||
name: fileName,
|
||||
singer: '',
|
||||
})
|
||||
}
|
||||
if (result.length) return result
|
||||
}
|
||||
}
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
export const getMusicUrl = async({ musicInfo, isRefresh, onToggleSource = () => {} }: {
|
||||
musicInfo: LX.Music.MusicInfoLocal
|
||||
isRefresh: boolean
|
||||
|
@ -23,7 +73,7 @@ export const getMusicUrl = async({ musicInfo, isRefresh, onToggleSource = () =>
|
|||
if (path) return encodePath(path)
|
||||
}
|
||||
onToggleSource()
|
||||
const otherSource = await getOtherSource(musicInfo)
|
||||
const otherSource = await getOtherSourceByLocal(musicInfo)
|
||||
if (!otherSource.length) throw new Error('source not found')
|
||||
return getOnlineOtherSourceMusicUrl({ musicInfos: [...otherSource], onToggleSource, isRefresh }).then(({ url, quality: targetQuality, musicInfo: targetMusicInfo, isFromCache }) => {
|
||||
// saveLyric(musicInfo, data.lyricInfo)
|
||||
|
@ -48,7 +98,7 @@ export const getPicUrl = async({ musicInfo, listId, isRefresh, onToggleSource =
|
|||
}
|
||||
|
||||
onToggleSource()
|
||||
const otherSource = await getOtherSource(musicInfo)
|
||||
const otherSource = await getOtherSourceByLocal(musicInfo)
|
||||
if (!otherSource.length) throw new Error('source not found')
|
||||
return getOnlineOtherSourcePicUrl({ musicInfos: [...otherSource], onToggleSource, isRefresh }).then(({ url, musicInfo: targetMusicInfo, isFromCache }) => {
|
||||
if (listId) {
|
||||
|
@ -78,7 +128,7 @@ export const getLyricInfo = async({ musicInfo, isRefresh, onToggleSource = () =>
|
|||
}
|
||||
|
||||
onToggleSource()
|
||||
const otherSource = await getOtherSource(musicInfo)
|
||||
const otherSource = await getOtherSourceByLocal(musicInfo)
|
||||
if (!otherSource.length) throw new Error('source not found')
|
||||
// eslint-disable-next-line @typescript-eslint/promise-function-async
|
||||
return getOnlineOtherSourceLyricInfo({ musicInfos: [...otherSource], onToggleSource, isRefresh }).then(({ lyricInfo, musicInfo: targetMusicInfo, isFromCache }) => {
|
||||
|
|
|
@ -150,7 +150,7 @@ const handleRestorePlay = async(restorePlayInfo: LX.Player.SavedPlayInfo) => {
|
|||
if (musicInfo.id != playMusicInfo.musicInfo?.id) return
|
||||
setMusicInfo({ pic: url })
|
||||
window.app_event.picUpdated()
|
||||
})
|
||||
}).catch(_ => _)
|
||||
|
||||
void getLyricInfo({ musicInfo }).then((lyricInfo) => {
|
||||
if (musicInfo.id != playMusicInfo.musicInfo?.id) return
|
||||
|
@ -200,7 +200,7 @@ const handlePlay = () => {
|
|||
if (musicInfo.id != playMusicInfo.musicInfo?.id) return
|
||||
setMusicInfo({ pic: url })
|
||||
window.app_event.picUpdated()
|
||||
})
|
||||
}).catch(_ => _)
|
||||
|
||||
void getLyricInfo({ musicInfo }).then((lyricInfo) => {
|
||||
if (musicInfo.id != playMusicInfo.musicInfo?.id) return
|
||||
|
|
|
@ -116,6 +116,9 @@ export default {
|
|||
) {
|
||||
return item
|
||||
}
|
||||
if (!singer) {
|
||||
if (item.lowerCaseName == lowerCaseName && (interval ? item.interval == interval : true)) return item
|
||||
}
|
||||
}
|
||||
return null
|
||||
}).catch(_ => null))
|
||||
|
|
Loading…
Reference in New Issue