添加源存在性检查
parent
9e6bfaada4
commit
303d712860
|
@ -62,7 +62,7 @@ export default ({
|
|||
})
|
||||
|
||||
const showMenu = (event, musicInfo) => {
|
||||
itemMenuControl.sourceDetail = !!musicSdk[musicInfo.source].getMusicDetailPageUrl
|
||||
itemMenuControl.sourceDetail = !!musicSdk[musicInfo.source]?.getMusicDetailPageUrl
|
||||
// this.listMenu.itemMenuControl.play =
|
||||
// this.listMenu.itemMenuControl.playLater =
|
||||
itemMenuControl.download = assertApiSupport(musicInfo.source)
|
||||
|
|
|
@ -19,7 +19,7 @@ export default ({ props }) => {
|
|||
|
||||
const handleOpenMusicDetail = index => {
|
||||
const minfo = props.list[index]
|
||||
const url = musicSdk[minfo.source].getMusicDetailPageUrl(toOldMusicInfo(minfo))
|
||||
const url = musicSdk[minfo.source]?.getMusicDetailPageUrl?.(toOldMusicInfo(minfo))
|
||||
if (!url) return
|
||||
openUrl(url)
|
||||
}
|
||||
|
|
|
@ -17,7 +17,7 @@ export const sourceList: SourceLists = markRaw({
|
|||
|
||||
|
||||
for (const source of music.sources) {
|
||||
if (!music[source.id as LX.OnlineSource].hotSearch) continue
|
||||
if (!music[source.id as LX.OnlineSource]?.hotSearch) continue
|
||||
sources.push(source.id as LX.OnlineSource)
|
||||
sourceList[source.id as LX.OnlineSource] = reactive<string[]>([])
|
||||
}
|
||||
|
@ -52,10 +52,10 @@ export const getList = async(source: Source): Promise<string[]> => {
|
|||
task.push(
|
||||
sourceList[source]?.length
|
||||
? Promise.resolve({ source, list: sourceList[source] })
|
||||
: music[source].hotSearch.getList().catch((err: any) => {
|
||||
: music[source]?.hotSearch.getList().catch((err: any) => {
|
||||
console.log(err)
|
||||
return { source, list: [] }
|
||||
}),
|
||||
}) ?? Promise.reject(new Error('source not found: ' + source)),
|
||||
)
|
||||
}
|
||||
return Promise.all(task).then((results: any[]) => {
|
||||
|
@ -63,11 +63,11 @@ export const getList = async(source: Source): Promise<string[]> => {
|
|||
})
|
||||
} else {
|
||||
if (sourceList[source]?.length) return Promise.resolve(sourceList[source] as string[])
|
||||
if (!music[source].hotSearch) {
|
||||
if (!music[source]?.hotSearch) {
|
||||
setList(source, [])
|
||||
return Promise.resolve([])
|
||||
}
|
||||
return music[source].hotSearch.getList().then(data => setList(source, data.list))
|
||||
return music[source]?.hotSearch.getList().then(data => setList(source, data.list))
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -52,7 +52,7 @@ export const getListDetail = async(id: string, page: number, isRefresh = false):
|
|||
|
||||
const [source, bangId] = id.split('__') as [LX.OnlineSource, string]
|
||||
|
||||
return musicSdk[source]?.leaderboard.getList(bangId, page).then((result: ListDetailInfo) => {
|
||||
return musicSdk[source]?.leaderboard?.getList(bangId, page).then((result: ListDetailInfo) => {
|
||||
result.list = markRawList(deduplicationList(result.list.map(m => toNewMusicInfo(m))))
|
||||
cache.set(key, result)
|
||||
return result
|
||||
|
@ -78,7 +78,7 @@ export const getListDetailAll = async(id: string, isRefresh = false): Promise<LX
|
|||
result.list = markRawList(deduplicationList(result.list.map(m => toNewMusicInfo(m))))
|
||||
cache.set(key, result)
|
||||
return result
|
||||
}) ?? Promise.reject(new Error('source not found'))
|
||||
}) ?? Promise.reject(new Error('source not found' + source))
|
||||
}
|
||||
return await loadData(bangId, 1).then((result: ListDetailInfo) => {
|
||||
if (result.total <= result.limit) return result.list
|
||||
|
|
|
@ -6,7 +6,7 @@ export declare type Source = LX.OnlineSource
|
|||
export const sources: LX.OnlineSource[] = markRaw([])
|
||||
|
||||
for (const source of music.sources) {
|
||||
if (!music[source.id as LX.OnlineSource].leaderboard?.getBoards) continue
|
||||
if (!music[source.id as LX.OnlineSource]?.leaderboard?.getBoards) continue
|
||||
sources.push(source.id as LX.OnlineSource)
|
||||
}
|
||||
|
||||
|
|
|
@ -90,7 +90,7 @@ export const search = async(text: string, page: number, sourceId: LX.OnlineSourc
|
|||
let task = []
|
||||
for (const source of sources) {
|
||||
if (source == 'all') continue
|
||||
task.push(music[source].musicSearch.search(text, page, listInfos.all.limit).catch((error: any) => {
|
||||
task.push((music[source]?.musicSearch.search(text, page, listInfos.all.limit) ?? Promise.reject(new Error('source not found: ' + source))).catch((error: any) => {
|
||||
console.log(error)
|
||||
return {
|
||||
allPage: 1,
|
||||
|
|
|
@ -32,7 +32,7 @@ export const listInfos: ListInfos = markRaw({
|
|||
})
|
||||
export const maxPages: Partial<Record<LX.OnlineSource, number>> = {}
|
||||
for (const source of music.sources) {
|
||||
if (!music[source.id as LX.OnlineSource].musicSearch) continue
|
||||
if (!music[source.id as LX.OnlineSource]?.musicSearch) continue
|
||||
sources.push(source.id as LX.OnlineSource)
|
||||
listInfos[source.id as LX.OnlineSource] = reactive<ListInfo>({
|
||||
page: 1,
|
||||
|
|
|
@ -91,7 +91,7 @@ export const search = async(text: string, page: number, sourceId: LX.OnlineSourc
|
|||
let task = []
|
||||
for (const source of sources) {
|
||||
if (source == 'all' || (page > 1 && page > (maxPages[source] as number))) continue
|
||||
task.push(music[source].songList.search(text, page, listInfos.all.limit).catch((error: any) => {
|
||||
task.push((music[source]?.songList.search(text, page, listInfos.all.limit) ?? Promise.reject(new Error('source not found: ' + source))).catch((error: any) => {
|
||||
console.log(error)
|
||||
return {
|
||||
list: [],
|
||||
|
@ -109,10 +109,10 @@ export const search = async(text: string, page: number, sourceId: LX.OnlineSourc
|
|||
if (listInfo?.key == key && listInfo?.list.length) return listInfo?.list
|
||||
listInfo.noItemLabel = window.i18n.t('list__loading')
|
||||
listInfo.key = key
|
||||
return music[sourceId].songList.search(text, page, listInfo.limit).then((data: SearchResult) => {
|
||||
return (music[sourceId]?.songList.search(text, page, listInfo.limit).then((data: SearchResult) => {
|
||||
if (key != listInfo.key) return []
|
||||
return setList(data, page, text)
|
||||
}).catch((error: any) => {
|
||||
}) ?? Promise.reject(new Error('source not found: ' + sourceId))).catch((error: any) => {
|
||||
resetListInfo(sourceId)
|
||||
listInfo.noItemLabel = window.i18n.t('list__load_failed')
|
||||
console.log(error)
|
||||
|
|
|
@ -31,7 +31,7 @@ export const listInfos: ListInfos = markRaw({
|
|||
})
|
||||
export const maxPages: Partial<Record<LX.OnlineSource, number>> = {}
|
||||
for (const source of music.sources) {
|
||||
if (!music[source.id as LX.OnlineSource].songList?.search) continue
|
||||
if (!music[source.id as LX.OnlineSource]?.songList?.search) continue
|
||||
sources.push(source.id as LX.OnlineSource)
|
||||
listInfos[source.id as LX.OnlineSource] = reactive<SearchListInfo>({
|
||||
page: 1,
|
||||
|
|
|
@ -154,7 +154,7 @@ export const getListDetailAll = async(id: string, source: LX.OnlineSource, isRef
|
|||
result.list = markRawList(deduplicationList(result.list.map(m => toNewMusicInfo(m))))
|
||||
cache.set(key, result)
|
||||
return result
|
||||
}) ?? Promise.reject(new Error('source not found'))
|
||||
}) ?? Promise.reject(new Error('source not found' + source))
|
||||
}
|
||||
return await loadData(id, 1).then((result: ListDetailInfo) => {
|
||||
if (result.total <= result.limit) return result.list
|
||||
|
|
|
@ -10,7 +10,7 @@ export const sources: LX.OnlineSource[] = markRaw([])
|
|||
export const sortList = markRaw<Partial<Record<LX.OnlineSource, SortInfo[]>>>({})
|
||||
|
||||
for (const source of music.sources) {
|
||||
const songList = music[source.id as LX.OnlineSource].songList
|
||||
const songList = music[source.id as LX.OnlineSource]?.songList
|
||||
if (!songList) continue
|
||||
sources.push(source.id as LX.OnlineSource)
|
||||
sortList[source.id as LX.OnlineSource] = songList.sortList as SortInfo[]
|
||||
|
|
|
@ -25,7 +25,7 @@ export default ({ list, selectedList, removeAllSelect }) => {
|
|||
const handleOpenMusicDetail = index => {
|
||||
const task = list.value[index]
|
||||
const mInfo = toOldMusicInfo(task.metadata.musicInfo)
|
||||
const url = musicSdk[mInfo.source].getMusicDetailPageUrl(mInfo)
|
||||
const url = musicSdk[mInfo.source]?.getMusicDetailPageUrl?.(mInfo)
|
||||
if (!url) return
|
||||
openUrl(url)
|
||||
}
|
||||
|
|
|
@ -24,7 +24,7 @@ export default ({ props, list, selectedList, removeAllSelect }) => {
|
|||
|
||||
const handleOpenMusicDetail = index => {
|
||||
const minfo = list.value[index]
|
||||
const url = musicSdk[minfo.source].getMusicDetailPageUrl(toOldMusicInfo(minfo))
|
||||
const url = musicSdk[minfo.source]?.getMusicDetailPageUrl(toOldMusicInfo(minfo))
|
||||
if (!url) return
|
||||
openUrl(url)
|
||||
}
|
||||
|
|
|
@ -124,7 +124,7 @@ export default {
|
|||
if (/board__/.test(sourceListId)) {
|
||||
const id = sourceListId.replace(/board__/, '')
|
||||
url = musicSdk[source].leaderboard.getDetailPageUrl(id)
|
||||
} else if (musicSdk[source].songList?.getDetailPageUrl) {
|
||||
} else if (musicSdk[source]?.songList?.getDetailPageUrl) {
|
||||
url = await musicSdk[source].songList.getDetailPageUrl(sourceListId)
|
||||
}
|
||||
if (!url) return
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import { DOWNLOAD_STATUS, QUALITYS } from '@common/constants'
|
||||
import { filterFileName } from '@common/utils/common'
|
||||
import { joinPath } from '@common/utils/nodejs'
|
||||
import { joinPath, removeFile } from '@common/utils/nodejs'
|
||||
import fs from 'fs'
|
||||
|
||||
/**
|
||||
|
@ -94,9 +94,11 @@ export const createDownloadInfo = (musicInfo: LX.Music.MusicInfoOnline, type: LX
|
|||
|
||||
// 删除同路径下的同名文件
|
||||
// TODO
|
||||
// deleteFile(downloadInfo.metadata.filePath)
|
||||
void removeFile(downloadInfo.metadata.filePath)
|
||||
// .catch(err => {
|
||||
// if (err.code !== 'ENOENT') return commit('setStatusText', { downloadInfo, text: '文件删除失败' })
|
||||
// if (err.code !== 'ENOENT') {
|
||||
// return commit('setStatusText', { downloadInfo, text: '文件删除失败' })
|
||||
// }
|
||||
// })
|
||||
|
||||
return downloadInfo
|
||||
|
|
Loading…
Reference in New Issue