diff --git a/.gitignore b/.gitignore index 36cf0a4..4b165c2 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,4 @@ backup/ download/ bin/ cmd/bilidown/static +.claude diff --git a/internal/task/task.go b/internal/task/task.go index 0d3b524..a2a482b 100644 --- a/internal/task/task.go +++ b/internal/task/task.go @@ -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,7 +146,9 @@ func (task *Task) Start() { // 检查是否已取消 if task.Cancelled { - task.UpdateStatus(db, "error", fmt.Errorf("任务已取消")) + task.cleanupTempFiles() + task.cleanupTempFiles() + task.UpdateStatus(db, "error", fmt.Errorf("任务已取消")) return } @@ -152,7 +171,8 @@ func (task *Task) Start() { // 再次检查是否已取消 if task.Cancelled { GlobalDownloadSem.Release() - task.UpdateStatus(db, "error", fmt.Errorf("任务已取消")) + 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,7 +262,8 @@ func (task *Task) Start() { GlobalDownloadSem.Release() if task.Cancelled { - task.UpdateStatus(db, "error", fmt.Errorf("任务已取消")) + task.cleanupTempFiles() + task.UpdateStatus(db, "error", fmt.Errorf("任务已取消")) return }