From 01a1516e31ad68e3e69da427feb666202c16aa22 Mon Sep 17 00:00:00 2001 From: yanghao05 Date: Tue, 22 Apr 2025 14:56:27 +0800 Subject: [PATCH] feat: update --- backend/app/jobs/remove_downloaded_video.go | 54 +++++++++++++++++++++ backend/app/jobs/video_cut.go | 7 +++ 2 files changed, 61 insertions(+) create mode 100644 backend/app/jobs/remove_downloaded_video.go diff --git a/backend/app/jobs/remove_downloaded_video.go b/backend/app/jobs/remove_downloaded_video.go new file mode 100644 index 0000000..4d51b11 --- /dev/null +++ b/backend/app/jobs/remove_downloaded_video.go @@ -0,0 +1,54 @@ +package jobs + +import ( + "context" + "os" + "time" + + . "github.com/riverqueue/river" + log "github.com/sirupsen/logrus" + _ "go.ipao.vip/atom" + "go.ipao.vip/atom/contracts" +) + +var _ contracts.JobArgs = (*RemoveDownloadedVideo)(nil) + +type RemoveDownloadedVideo struct { + FilePath string `json:"file_path"` +} + +func (s RemoveDownloadedVideo) InsertOpts() InsertOpts { + return InsertOpts{ + Queue: QueueDefault, + Priority: PriorityDefault, + ScheduledAt: time.Now().Add(time.Minute * 10), + } +} + +func (s RemoveDownloadedVideo) Kind() string { return "remove_downloaded_video" } +func (a RemoveDownloadedVideo) UniqueID() string { return a.Kind() } + +var _ Worker[RemoveDownloadedVideo] = (*RemoveDownloadedVideoWorker)(nil) + +// @provider(job) +type RemoveDownloadedVideoWorker struct { + WorkerDefaults[RemoveDownloadedVideo] +} + +func (w *RemoveDownloadedVideoWorker) NextRetry(job *Job[RemoveDownloadedVideo]) time.Time { + return time.Now().Add(30 * time.Second) +} + +func (w *RemoveDownloadedVideoWorker) Work(ctx context.Context, job *Job[RemoveDownloadedVideo]) error { + log := log.WithField("job", job.Args.Kind()) + + log.Infof("[Start] Working on job with strings: %+v", job.Args) + defer log.Infof("[End] Finished %s", job.Args.Kind()) + + if err := os.Remove(job.Args.FilePath); err != nil { + log.Errorf("Error removing file: %v", err) + return err + } + + return nil +} diff --git a/backend/app/jobs/video_cut.go b/backend/app/jobs/video_cut.go index 2886a45..76c23d5 100644 --- a/backend/app/jobs/video_cut.go +++ b/backend/app/jobs/video_cut.go @@ -87,6 +87,13 @@ func (w *VideoCutWorker) Work(ctx context.Context, job *Job[VideoCut]) error { return JobCancel(err) } + // remove original file + if w.job.Add(&RemoveDownloadedVideo{ + FilePath: input, + }); err != nil { + log.Errorf("Error removing original file: %v", err) + } + // save to database return w.job.Add(&VideoStoreShort{ MediaHash: media.Hash,