新增下载目录存在同名的文件时跳过下载此任务设置
This commit is contained in:
@@ -231,7 +231,7 @@ const handleStartTask = async(downloadInfo: LX.Download.ListItem) => {
|
||||
|
||||
setStatusText(downloadInfo, window.i18n.t('download_status_start'))
|
||||
|
||||
await window.lx.worker.download.startTask(toRaw(downloadInfo), appSetting['download.savePath'], proxyCallback((event: LX.Download.DownloadTaskActions) => {
|
||||
await window.lx.worker.download.startTask(toRaw(downloadInfo), appSetting['download.savePath'], appSetting['download.skipExistFile'], proxyCallback((event: LX.Download.DownloadTaskActions) => {
|
||||
// console.log(event)
|
||||
switch (event.action) {
|
||||
case 'start':
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
<template lang="pug">
|
||||
dt#download {{$t('setting__download')}}
|
||||
dd
|
||||
base-checkbox(id="setting_download_enable" :modelValue="appSetting['download.enable']" @update:modelValue="updateSetting({'download.enable': $event})" :label="$t('setting__download_enable')")
|
||||
.gap-top
|
||||
base-checkbox(id="setting_download_enable" :modelValue="appSetting['download.enable']" @update:modelValue="updateSetting({'download.enable': $event})" :label="$t('setting__download_enable')")
|
||||
.gap-top
|
||||
base-checkbox(id="setting_download_skip_exist_file" :modelValue="appSetting['download.skipExistFile']" @update:modelValue="updateSetting({'download.skipExistFile': $event})" :label="$t('setting__download_skip_exist_file')")
|
||||
dd(:aria-label="$t('setting__download_path_title')")
|
||||
h3#download_path {{$t('setting__download_path')}}
|
||||
div
|
||||
|
||||
@@ -8,7 +8,7 @@ import { createDownloadInfo } from './utils'
|
||||
// assertApiSupport,
|
||||
// getExt,
|
||||
// } from '..'
|
||||
import { checkPath, removeFile } from '@common/utils/nodejs'
|
||||
import { checkPath, getFileStats, removeFile } from '@common/utils/nodejs'
|
||||
import { DOWNLOAD_STATUS } from '@common/constants'
|
||||
// import { download as eventDownloadNames } from '@renderer/event/names'
|
||||
|
||||
@@ -55,7 +55,7 @@ export const createDownloadTasks = (
|
||||
// }
|
||||
}
|
||||
|
||||
const createTask = async(downloadInfo: LX.Download.ListItem, savePath: string) => {
|
||||
const createTask = async(downloadInfo: LX.Download.ListItem, savePath: string, skipExistFile: boolean) => {
|
||||
// console.log('createTask', downloadInfo, savePath)
|
||||
// 开始任务
|
||||
/* commit('onStart', downloadInfo)
|
||||
@@ -71,7 +71,32 @@ const createTask = async(downloadInfo: LX.Download.ListItem, savePath: string) =
|
||||
}
|
||||
if (!tasks.has(downloadInfo.id)) return
|
||||
|
||||
// TODO check file exists
|
||||
if (downloadInfo.downloaded == 0) {
|
||||
if (skipExistFile) {
|
||||
const stats = await getFileStats(downloadInfo.metadata.filePath)
|
||||
if (stats && stats.size > 100) {
|
||||
sendAction(downloadInfo.id, {
|
||||
action: 'error',
|
||||
data: {
|
||||
error: 'download_status_error_check_path_exist',
|
||||
},
|
||||
})
|
||||
return
|
||||
}
|
||||
} else if (await checkPath(downloadInfo.metadata.filePath)) {
|
||||
try {
|
||||
await removeFile(downloadInfo.metadata.filePath)
|
||||
} catch (err) {
|
||||
sendAction(downloadInfo.id, {
|
||||
action: 'error',
|
||||
data: {
|
||||
error: 'download_status_error_check_path',
|
||||
},
|
||||
})
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const downloadOptions: DownloadOptions = {
|
||||
url: downloadInfo.metadata.url ?? '',
|
||||
@@ -204,7 +229,7 @@ export const updateUrl = (id: string, url: string) => {
|
||||
})
|
||||
}
|
||||
|
||||
export const startTask = async(downloadInfo: LX.Download.ListItem, savePath: string, callback: (action: LX.Download.DownloadTaskActions) => void) => {
|
||||
export const startTask = async(downloadInfo: LX.Download.ListItem, savePath: string, skipExistFile: boolean, callback: (action: LX.Download.DownloadTaskActions) => void) => {
|
||||
await pauseTask(downloadInfo.id)
|
||||
|
||||
tasks.set(downloadInfo.id, downloadInfo)
|
||||
@@ -239,7 +264,7 @@ export const startTask = async(downloadInfo: LX.Download.ListItem, savePath: str
|
||||
// await dispatch('startTask')
|
||||
}
|
||||
} else {
|
||||
await createTask(downloadInfo, savePath)
|
||||
await createTask(downloadInfo, savePath, skipExistFile)
|
||||
// await dispatch('handleStartTask', downloadInfo)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { DOWNLOAD_STATUS, QUALITYS } from '@common/constants'
|
||||
import { filterFileName } from '@common/utils/common'
|
||||
import { joinPath, removeFile } from '@common/utils/nodejs'
|
||||
import { joinPath } from '@common/utils/nodejs'
|
||||
import fs from 'fs'
|
||||
|
||||
/**
|
||||
@@ -94,7 +94,7 @@ export const createDownloadInfo = (musicInfo: LX.Music.MusicInfoOnline, type: LX
|
||||
|
||||
// 删除同路径下的同名文件
|
||||
// TODO
|
||||
void removeFile(downloadInfo.metadata.filePath)
|
||||
// void removeFile(downloadInfo.metadata.filePath)
|
||||
// .catch(err => {
|
||||
// if (err.code !== 'ENOENT') {
|
||||
// return commit('setStatusText', { downloadInfo, text: '文件删除失败' })
|
||||
|
||||
Reference in New Issue
Block a user