mirror of
https://github.com/stashapp/stash.git
synced 2025-12-06 16:34:02 +01:00
Fix generate preview overwrite behaviour (#3256)
This commit is contained in:
parent
a67eee8f4c
commit
ce080c1b07
3 changed files with 42 additions and 24 deletions
|
|
@ -296,14 +296,13 @@ func (j *GenerateJob) queueSceneJobs(ctx context.Context, g *generate.Generator,
|
|||
}
|
||||
|
||||
if task.required() {
|
||||
sceneHash := scene.GetHash(task.fileNamingAlgorithm)
|
||||
addTask := false
|
||||
if j.overwrite || !task.doesVideoPreviewExist(sceneHash) {
|
||||
if j.overwrite || !task.doesVideoPreviewExist() {
|
||||
totals.previews++
|
||||
addTask = true
|
||||
}
|
||||
|
||||
if utils.IsTrue(j.input.ImagePreviews) && (j.overwrite || !task.doesImagePreviewExist(sceneHash)) {
|
||||
if utils.IsTrue(j.input.ImagePreviews) && (j.overwrite || !task.doesImagePreviewExist()) {
|
||||
totals.imagePreviews++
|
||||
addTask = true
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,6 +20,9 @@ type GeneratePreviewTask struct {
|
|||
fileNamingAlgorithm models.HashAlgorithm
|
||||
|
||||
generator *generate.Generator
|
||||
|
||||
videoPreviewExists *bool
|
||||
imagePreviewExists *bool
|
||||
}
|
||||
|
||||
func (t *GeneratePreviewTask) GetDescription() string {
|
||||
|
|
@ -31,22 +34,24 @@ func (t *GeneratePreviewTask) Start(ctx context.Context) {
|
|||
return
|
||||
}
|
||||
|
||||
ffprobe := instance.FFProbe
|
||||
videoFile, err := ffprobe.NewVideoFile(t.Scene.Path)
|
||||
if err != nil {
|
||||
logger.Errorf("error reading video file: %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
videoChecksum := t.Scene.GetHash(t.fileNamingAlgorithm)
|
||||
|
||||
if err := t.generateVideo(videoChecksum, videoFile.VideoStreamDuration); err != nil {
|
||||
logger.Errorf("error generating preview: %v", err)
|
||||
logErrorOutput(err)
|
||||
return
|
||||
if t.Overwrite || !t.doesVideoPreviewExist() {
|
||||
ffprobe := instance.FFProbe
|
||||
videoFile, err := ffprobe.NewVideoFile(t.Scene.Path)
|
||||
if err != nil {
|
||||
logger.Errorf("error reading video file: %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
if err := t.generateVideo(videoChecksum, videoFile.VideoStreamDuration); err != nil {
|
||||
logger.Errorf("error generating preview: %v", err)
|
||||
logErrorOutput(err)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
if t.ImagePreview {
|
||||
if t.ImagePreview && (t.Overwrite || !t.doesImagePreviewExist()) {
|
||||
if err := t.generateWebp(videoChecksum); err != nil {
|
||||
logger.Errorf("error generating preview webp: %v", err)
|
||||
logErrorOutput(err)
|
||||
|
|
@ -77,26 +82,39 @@ func (t GeneratePreviewTask) required() bool {
|
|||
return false
|
||||
}
|
||||
|
||||
sceneHash := t.Scene.GetHash(t.fileNamingAlgorithm)
|
||||
videoExists := t.doesVideoPreviewExist(sceneHash)
|
||||
imageExists := !t.ImagePreview || t.doesImagePreviewExist(sceneHash)
|
||||
if t.Overwrite {
|
||||
return true
|
||||
}
|
||||
|
||||
videoExists := t.doesVideoPreviewExist()
|
||||
imageExists := !t.ImagePreview || t.doesImagePreviewExist()
|
||||
return !imageExists || !videoExists
|
||||
}
|
||||
|
||||
func (t *GeneratePreviewTask) doesVideoPreviewExist(sceneChecksum string) bool {
|
||||
func (t *GeneratePreviewTask) doesVideoPreviewExist() bool {
|
||||
sceneChecksum := t.Scene.GetHash(t.fileNamingAlgorithm)
|
||||
if sceneChecksum == "" {
|
||||
return false
|
||||
}
|
||||
|
||||
videoExists, _ := fsutil.FileExists(instance.Paths.Scene.GetVideoPreviewPath(sceneChecksum))
|
||||
return videoExists
|
||||
if t.videoPreviewExists == nil {
|
||||
videoExists, _ := fsutil.FileExists(instance.Paths.Scene.GetVideoPreviewPath(sceneChecksum))
|
||||
t.videoPreviewExists = &videoExists
|
||||
}
|
||||
|
||||
return *t.videoPreviewExists
|
||||
}
|
||||
|
||||
func (t *GeneratePreviewTask) doesImagePreviewExist(sceneChecksum string) bool {
|
||||
func (t *GeneratePreviewTask) doesImagePreviewExist() bool {
|
||||
sceneChecksum := t.Scene.GetHash(t.fileNamingAlgorithm)
|
||||
if sceneChecksum == "" {
|
||||
return false
|
||||
}
|
||||
|
||||
imageExists, _ := fsutil.FileExists(instance.Paths.Scene.GetWebpPreviewPath(sceneChecksum))
|
||||
return imageExists
|
||||
if t.imagePreviewExists == nil {
|
||||
imageExists, _ := fsutil.FileExists(instance.Paths.Scene.GetWebpPreviewPath(sceneChecksum))
|
||||
t.imagePreviewExists = &imageExists
|
||||
}
|
||||
|
||||
return *t.imagePreviewExists
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@
|
|||
* Changed performer aliases to be a list, rather than a string field. ([#3113](https://github.com/stashapp/stash/pull/3113))
|
||||
|
||||
### 🐛 Bug fixes
|
||||
* Fixed scene previews not being overwritten when Overwrite option is selected. ([#3256](https://github.com/stashapp/stash/pull/3256))
|
||||
* Fixed objects without titles not being sorted correctly with objects with titles. ([#3244](https://github.com/stashapp/stash/pull/3244))
|
||||
* Fixed incorrect new Performer pill being removed when creating Performer from scrape dialog. ([#3251](https://github.com/stashapp/stash/pull/3251))
|
||||
* Fixed date fields not being nulled correctly when cleared. ([#3243](https://github.com/stashapp/stash/pull/3243))
|
||||
|
|
|
|||
Loading…
Reference in a new issue