优化英文名歌曲匹配

pull/459/head
lyswhut 2021-02-04 17:25:40 +08:00
parent e9c96ecde2
commit a0254eb4f2
1 changed files with 14 additions and 8 deletions

View File

@ -74,26 +74,31 @@ export default {
return tempResult
}
const trimStr = str => typeof str == 'string' ? str.trim() : str
const sortedSinger = sortSingle(musicInfo.singer)
const sortedSinger = String(sortSingle(musicInfo.singer)).toLowerCase()
const musicName = trimStr(musicInfo.name)
const lowerCaseName = String(musicName).toLowerCase()
const lowerCaseAlbumName = String(musicInfo.albumName).toLowerCase()
for (const source of sources.sources) {
if (!sources[source.id].musicSearch || source.id === musicInfo.source || source.id === 'xm') continue
tasks.push(sources[source.id].musicSearch.search(`${musicName} ${musicInfo.singer || ''}`.trim(), 1, { limit: 10 }).then(res => {
for (const item of res.list) {
item.sortedSinger = sortSingle(item.singer)
item.sortedSinger = String(sortSingle(item.singer)).toLowerCase()
item.name = trimStr(item.name)
item.lowerCaseName = String(item.name).toLowerCase()
item.lowerCaseAlbumName = String(item.albumName).toLowerCase()
console.log(lowerCaseName, item.lowerCaseName)
if (
(
item.sortedSinger === sortedSinger &&
(item.name === musicName || item.interval === musicInfo.interval)
(item.lowerCaseName === lowerCaseName || item.interval === musicInfo.interval)
) ||
(
item.interval === musicInfo.interval && item.name === musicName &&
item.interval === musicInfo.interval && item.lowerCaseName === lowerCaseName &&
(item.sortedSinger.includes(sortedSinger) || sortedSinger.includes(item.sortedSinger))
) ||
(
item.name === musicName && item.albumName === musicInfo.albumName &&
item.lowerCaseName === lowerCaseName && item.lowerCaseAlbumName === lowerCaseAlbumName &&
item.interval === musicInfo.interval
)
) {
@ -106,12 +111,13 @@ export default {
const result = (await Promise.all(tasks)).filter(s => s)
const newResult = []
if (result.length) {
newResult.push(...sortMusic(result, item => item.sortedSinger === sortedSinger && item.name === musicName && item.interval === musicInfo.interval))
newResult.push(...sortMusic(result, item => item.sortedSinger === sortedSinger && item.lowerCaseName === lowerCaseName && item.interval === musicInfo.interval))
newResult.push(...sortMusic(result, item => item.sortedSinger === sortedSinger && item.interval === musicInfo.interval))
newResult.push(...sortMusic(result, item => item.name === musicName && item.sortedSinger === sortedSinger && item.albumName === musicInfo.albumName))
newResult.push(...sortMusic(result, item => item.sortedSinger === sortedSinger && item.name === musicName))
newResult.push(...sortMusic(result, item => item.lowerCaseName === lowerCaseName && item.sortedSinger === sortedSinger && item.lowerCaseAlbumName === lowerCaseAlbumName))
newResult.push(...sortMusic(result, item => item.sortedSinger === sortedSinger && item.lowerCaseName === lowerCaseName))
for (const item of result) {
delete item.sortedSinger
delete item.lowerCaseName
}
newResult.push(...result)
}