feat: update

This commit is contained in:
yanghao05
2025-04-22 14:45:04 +08:00
parent fb8c9a68a4
commit b1f090918d
19 changed files with 43 additions and 35 deletions

View File

@@ -22,7 +22,7 @@ import (
var _ contracts.JobArgs = (*WechatCallback)(nil)
type DownloadFromAliOSS struct {
MediaID int64 `json:"media_id"`
MediaHash string `json:"media_hash"`
}
func (s DownloadFromAliOSS) InsertOpts() InsertOpts {
@@ -56,7 +56,7 @@ func (w *DownloadFromAliOSSWorker) Work(ctx context.Context, job *Job[DownloadFr
log.Infof("[Start] Working on job with strings: %+v", job.Args)
defer log.Infof("[End] Finished %s", job.Args.Kind())
media, err := models.Medias.GetByID(ctx, job.Args.MediaID)
media, err := models.Medias.GetByHash(ctx, job.Args.MediaHash)
if err != nil {
log.Errorf("Error getting media by ID: %v", err)
return JobCancel(err)
@@ -73,15 +73,15 @@ func (w *DownloadFromAliOSSWorker) Work(ctx context.Context, job *Job[DownloadFr
log.Errorf("Error creating directory: %v", err)
return err
}
}
if st.Size() == media.Size {
return JobCancel(errors.New("file already downloaded"))
} else {
// remove file
if err := os.Remove(dst); err != nil {
log.Errorf("Error removing file: %v", err)
return err
if st.Size() == media.Size {
return JobCancel(errors.New("file already downloaded"))
} else {
// remove file
if err := os.Remove(dst); err != nil {
log.Errorf("Error removing file: %v", err)
return err
}
}
}
@@ -93,12 +93,12 @@ func (w *DownloadFromAliOSSWorker) Work(ctx context.Context, job *Job[DownloadFr
log.Infof("Successfully downloaded file: %s", media.Path)
if err := w.job.Add(&VideoCut{MediaID: job.Args.MediaID}); err != nil {
if err := w.job.Add(&VideoCut{MediaHash: job.Args.MediaHash}); err != nil {
log.Errorf("Error adding job: %v", err)
return err
}
if err := w.job.Add(&VideoExtractHeadImage{MediaID: job.Args.MediaID}); err != nil {
if err := w.job.Add(&VideoExtractHeadImage{MediaHash: job.Args.MediaHash}); err != nil {
log.Errorf("Error adding job: %v", err)
return err
}

View File

@@ -46,7 +46,7 @@ func (t *DownloadFromAliOSSSuite) Test_Work() {
Convey("step 1", func() {
job := &Job[DownloadFromAliOSS]{
Args: DownloadFromAliOSS{
MediaID: 3,
MediaHash: "959e5310105c96e653f10b74e5bdc36b",
},
}

View File

@@ -21,7 +21,7 @@ import (
var _ contracts.JobArgs = (*VideoCut)(nil)
type VideoCut struct {
MediaID int64 `json:"media_id"`
MediaHash string `json:"media_hash"`
}
func (s VideoCut) InsertOpts() InsertOpts {
@@ -55,7 +55,7 @@ func (w *VideoCutWorker) Work(ctx context.Context, job *Job[VideoCut]) error {
log.Infof("[Start] Working on job with strings: %+v", job.Args)
defer log.Infof("[End] Finished %s", job.Args.Kind())
media, err := models.Medias.GetByID(ctx, job.Args.MediaID)
media, err := models.Medias.GetByHash(ctx, job.Args.MediaHash)
if err != nil {
log.Errorf("Error getting media by ID: %v", err)
return JobCancel(err)
@@ -89,7 +89,7 @@ func (w *VideoCutWorker) Work(ctx context.Context, job *Job[VideoCut]) error {
// save to database
return w.job.Add(&VideoStoreShort{
MediaID: media.ID,
FilePath: output,
MediaHash: media.Hash,
FilePath: output,
})
}

View File

@@ -23,7 +23,7 @@ import (
var _ contracts.JobArgs = (*VideoExtractHeadImage)(nil)
type VideoExtractHeadImage struct {
MediaID int64 `json:"media_id"`
MediaHash string `json:"media_hash"`
}
func (s VideoExtractHeadImage) InsertOpts() InsertOpts {
@@ -57,7 +57,7 @@ func (w *VideoExtractHeadImageWorker) Work(ctx context.Context, job *Job[VideoEx
log.Infof("[Start] Working on job with strings: %+v", job.Args)
defer log.Infof("[End] Finished %s", job.Args.Kind())
media, err := models.Medias.GetByID(ctx, job.Args.MediaID)
media, err := models.Medias.GetByHash(ctx, job.Args.MediaHash)
if err != nil {
log.Errorf("Error getting media by ID: %v", err)
return JobCancel(err)
@@ -90,6 +90,7 @@ func (w *VideoExtractHeadImageWorker) Work(ctx context.Context, job *Job[VideoEx
log.Errorf("Error getting file MD5: %v", err)
return JobCancel(err)
}
filename := fileMd5 + filepath.Ext(output)
// create a new media record for the image
imageMedia := &model.Medias{
@@ -97,7 +98,7 @@ func (w *VideoExtractHeadImageWorker) Work(ctx context.Context, job *Job[VideoEx
Name: "[展示图]" + media.Name,
MimeType: "image/jpeg",
Size: fileSize,
Path: w.oss.GetSavePath(filepath.Base(output)),
Path: w.oss.GetSavePath(filename),
Hash: fileMd5,
Metas: fields.Json[fields.MediaMetas]{},
}

View File

@@ -22,8 +22,8 @@ import (
var _ contracts.JobArgs = (*VideoStoreShort)(nil)
type VideoStoreShort struct {
MediaID int64 `json:"media_id"`
FilePath string `json:"file_path"`
MediaHash string `json:"media_hash"`
FilePath string `json:"file_path"`
}
func (s VideoStoreShort) InsertOpts() InsertOpts {
@@ -57,7 +57,7 @@ func (w *VideoStoreShortWorker) Work(ctx context.Context, job *Job[VideoStoreSho
log.Infof("[Start] Working on job with strings: %+v", job.Args)
defer log.Infof("[End] Finished %s", job.Args.Kind())
media, err := models.Medias.GetByID(ctx, job.Args.MediaID)
media, err := models.Medias.GetByHash(ctx, job.Args.MediaHash)
if err != nil {
log.Errorf("Error getting media by ID: %v", err)
return JobCancel(err)