1
Fork 0
This commit is contained in:
amit handa 2023-01-23 17:24:46 -08:00
parent 2a227fc79d
commit 3048c41c3e
8 changed files with 18 additions and 13 deletions

View File

@ -185,11 +185,7 @@ func findMediaForAlbum(ctx scanner_task.TaskContext) ([]*models.Media, error) {
return errors.Wrapf(err, "scanning media error (%s)", mediaPath)
}
if !isNewMedia && media.UpdatedAt.After(item.ModTime()) {
return errors.New("nothing to do, processed already")
}
if err = scanner_tasks.Tasks.AfterMediaFound(ctx, media, isNewMedia); err != nil {
if err = scanner_tasks.Tasks.AfterMediaFound(ctx, media, isNewMedia, item.ModTime()); err != nil {
return err
}

View File

@ -5,6 +5,7 @@ import (
"database/sql"
"flag"
"io/fs"
"time"
"github.com/photoview/photoview/api/graphql/models"
"github.com/photoview/photoview/api/scanner/media_encoding"
@ -28,7 +29,7 @@ type ScannerTask interface {
// AfterMediaFound will run each media file after is has been saved to the database, but not processed yet.
// It will run even when the media is already present in the database, in that case `newMedia` will be true.
AfterMediaFound(ctx TaskContext, media *models.Media, newMedia bool) error
AfterMediaFound(ctx TaskContext, media *models.Media, newMedia bool, newModTime time.Time) error
BeforeProcessMedia(ctx TaskContext, mediaData *media_encoding.EncodeMediaData) (TaskContext, error)
ProcessMedia(ctx TaskContext, mediaData *media_encoding.EncodeMediaData, mediaCachePath string) (updatedURLs []*models.MediaURL, err error)

View File

@ -2,6 +2,7 @@ package scanner_task
import (
"io/fs"
"time"
"github.com/photoview/photoview/api/graphql/models"
"github.com/photoview/photoview/api/scanner/media_encoding"
@ -22,7 +23,7 @@ func (t ScannerTaskBase) MediaFound(ctx TaskContext, fileInfo fs.FileInfo, media
return false, nil
}
func (t ScannerTaskBase) AfterMediaFound(ctx TaskContext, media *models.Media, newMedia bool) error {
func (t ScannerTaskBase) AfterMediaFound(ctx TaskContext, media *models.Media, newMedia bool, mediaModTime time.Time) error {
return nil
}

View File

@ -2,6 +2,7 @@ package scanner_tasks
import (
"log"
"time"
"github.com/photoview/photoview/api/graphql/models"
"github.com/photoview/photoview/api/scanner/exif"
@ -12,7 +13,10 @@ type ExifTask struct {
scanner_task.ScannerTaskBase
}
func (t ExifTask) AfterMediaFound(ctx scanner_task.TaskContext, media *models.Media, newMedia bool) error {
func (t ExifTask) AfterMediaFound(ctx scanner_task.TaskContext, media *models.Media, newMedia bool, newModTime time.Time) error {
if !newMedia && media.UpdatedAt.After(newModTime) {
return nil
}
_, err := exif.SaveEXIF(ctx.GetDB(), media)
if err != nil {

View File

@ -27,7 +27,7 @@ func NewNotificationTask() NotificationTask {
}
}
func (t NotificationTask) AfterMediaFound(ctx scanner_task.TaskContext, media *models.Media, newMedia bool) error {
func (t NotificationTask) AfterMediaFound(ctx scanner_task.TaskContext, media *models.Media, newMedia bool, newModTime time.Time) error {
if newMedia {
t.throttle.Trigger(func() {
notification.BroadcastNotification(&models.Notification{

View File

@ -8,6 +8,7 @@ import (
"log"
"os"
"path"
"time"
"github.com/photoview/photoview/api/graphql/models"
"github.com/photoview/photoview/api/scanner/media_encoding"
@ -20,7 +21,7 @@ type SidecarTask struct {
scanner_task.ScannerTaskBase
}
func (t SidecarTask) AfterMediaFound(ctx scanner_task.TaskContext, media *models.Media, newMedia bool) error {
func (t SidecarTask) AfterMediaFound(ctx scanner_task.TaskContext, media *models.Media, newMedia bool, newModTime time.Time) error {
if media.Type != models.MediaTypePhoto || !newMedia {
return nil
}

View File

@ -2,6 +2,7 @@ package scanner_tasks
import (
"io/fs"
"time"
"github.com/photoview/photoview/api/graphql/models"
"github.com/photoview/photoview/api/scanner/media_encoding"
@ -91,9 +92,9 @@ func (t scannerTasks) AfterScanAlbum(ctx scanner_task.TaskContext, changedMedia
})
}
func (t scannerTasks) AfterMediaFound(ctx scanner_task.TaskContext, media *models.Media, newMedia bool) error {
func (t scannerTasks) AfterMediaFound(ctx scanner_task.TaskContext, media *models.Media, newMedia bool, newModTime time.Time) error {
return simpleCombinedTasks(ctx, func(ctx scanner_task.TaskContext, task scanner_task.ScannerTask) error {
return task.AfterMediaFound(ctx, media, newMedia)
return task.AfterMediaFound(ctx, media, newMedia, newModTime)
})
}

View File

@ -5,6 +5,7 @@ import (
"log"
"strconv"
"strings"
"time"
"github.com/photoview/photoview/api/graphql/models"
"github.com/photoview/photoview/api/scanner/scanner_task"
@ -17,7 +18,7 @@ type VideoMetadataTask struct {
scanner_task.ScannerTaskBase
}
func (t VideoMetadataTask) AfterMediaFound(ctx scanner_task.TaskContext, media *models.Media, newMedia bool) error {
func (t VideoMetadataTask) AfterMediaFound(ctx scanner_task.TaskContext, media *models.Media, newMedia bool, newModTime time.Time) error {
if !newMedia || media.Type != models.MediaTypeVideo {
return nil