fix: cleanup temp files when task is cancelled
任务取消时清理临时文件(.audio/.video),避免残留 Co-Authored-By: AI
This commit is contained in:
@@ -21,3 +21,4 @@ backup/
|
||||
download/
|
||||
bin/
|
||||
cmd/bilidown/static
|
||||
.claude
|
||||
|
||||
@@ -75,6 +75,23 @@ var GlobalTaskMux = &sync.Mutex{}
|
||||
var GlobalDownloadSem = util.NewSemaphore(3)
|
||||
var GlobalMergeSem = util.NewSemaphore(3)
|
||||
|
||||
// cleanupTempFiles 清理任务的临时文件
|
||||
func (task *Task) cleanupTempFiles() {
|
||||
if task.Folder == "" || task.ID == 0 {
|
||||
return
|
||||
}
|
||||
tempFiles := []string{
|
||||
filepath.Join(task.Folder, strconv.FormatInt(task.ID, 10)+".audio"),
|
||||
filepath.Join(task.Folder, strconv.FormatInt(task.ID, 10)+".video"),
|
||||
}
|
||||
for _, f := range tempFiles {
|
||||
if _, err := os.Stat(f); err == nil {
|
||||
os.Remove(f)
|
||||
logger.Debugf("清理临时文件: %s", f)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// CancelTask 取消指定任务
|
||||
func CancelTask(taskID int64) bool {
|
||||
GlobalTaskMux.Lock()
|
||||
@@ -129,6 +146,8 @@ func (task *Task) Start() {
|
||||
|
||||
// 检查是否已取消
|
||||
if task.Cancelled {
|
||||
task.cleanupTempFiles()
|
||||
task.cleanupTempFiles()
|
||||
task.UpdateStatus(db, "error", fmt.Errorf("任务已取消"))
|
||||
return
|
||||
}
|
||||
@@ -152,6 +171,7 @@ func (task *Task) Start() {
|
||||
// 再次检查是否已取消
|
||||
if task.Cancelled {
|
||||
GlobalDownloadSem.Release()
|
||||
task.cleanupTempFiles()
|
||||
task.UpdateStatus(db, "error", fmt.Errorf("任务已取消"))
|
||||
return
|
||||
}
|
||||
@@ -165,6 +185,7 @@ func (task *Task) Start() {
|
||||
if err != nil || task.Cancelled {
|
||||
GlobalDownloadSem.Release()
|
||||
if task.Cancelled {
|
||||
task.cleanupTempFiles()
|
||||
task.UpdateStatus(db, "error", fmt.Errorf("任务已取消"))
|
||||
} else {
|
||||
task.UpdateStatus(db, "error", fmt.Errorf("DownloadMedia: %v", err))
|
||||
@@ -192,6 +213,7 @@ func (task *Task) Start() {
|
||||
if err != nil || task.Cancelled {
|
||||
GlobalDownloadSem.Release()
|
||||
if task.Cancelled {
|
||||
task.cleanupTempFiles()
|
||||
task.UpdateStatus(db, "error", fmt.Errorf("任务已取消"))
|
||||
} else {
|
||||
task.UpdateStatus(db, "error", fmt.Errorf("DownloadMedia: %v", err))
|
||||
@@ -219,6 +241,7 @@ func (task *Task) Start() {
|
||||
if err != nil || task.Cancelled {
|
||||
GlobalDownloadSem.Release()
|
||||
if task.Cancelled {
|
||||
task.cleanupTempFiles()
|
||||
task.UpdateStatus(db, "error", fmt.Errorf("任务已取消"))
|
||||
} else {
|
||||
task.UpdateStatus(db, "error", fmt.Errorf("DownloadMedia: %v", err))
|
||||
@@ -229,6 +252,7 @@ func (task *Task) Start() {
|
||||
if err != nil || task.Cancelled {
|
||||
GlobalDownloadSem.Release()
|
||||
if task.Cancelled {
|
||||
task.cleanupTempFiles()
|
||||
task.UpdateStatus(db, "error", fmt.Errorf("任务已取消"))
|
||||
} else {
|
||||
task.UpdateStatus(db, "error", fmt.Errorf("DownloadMedia: %v", err))
|
||||
@@ -238,6 +262,7 @@ func (task *Task) Start() {
|
||||
GlobalDownloadSem.Release()
|
||||
|
||||
if task.Cancelled {
|
||||
task.cleanupTempFiles()
|
||||
task.UpdateStatus(db, "error", fmt.Errorf("任务已取消"))
|
||||
return
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user