mirror of
https://github.com/stashapp/stash.git
synced 2025-12-17 20:34:37 +03:00
Fix generate preview overwrite behaviour (#3256)
This commit is contained in:
@@ -296,14 +296,13 @@ func (j *GenerateJob) queueSceneJobs(ctx context.Context, g *generate.Generator,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if task.required() {
|
if task.required() {
|
||||||
sceneHash := scene.GetHash(task.fileNamingAlgorithm)
|
|
||||||
addTask := false
|
addTask := false
|
||||||
if j.overwrite || !task.doesVideoPreviewExist(sceneHash) {
|
if j.overwrite || !task.doesVideoPreviewExist() {
|
||||||
totals.previews++
|
totals.previews++
|
||||||
addTask = true
|
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++
|
totals.imagePreviews++
|
||||||
addTask = true
|
addTask = true
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,6 +20,9 @@ type GeneratePreviewTask struct {
|
|||||||
fileNamingAlgorithm models.HashAlgorithm
|
fileNamingAlgorithm models.HashAlgorithm
|
||||||
|
|
||||||
generator *generate.Generator
|
generator *generate.Generator
|
||||||
|
|
||||||
|
videoPreviewExists *bool
|
||||||
|
imagePreviewExists *bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *GeneratePreviewTask) GetDescription() string {
|
func (t *GeneratePreviewTask) GetDescription() string {
|
||||||
@@ -31,22 +34,24 @@ func (t *GeneratePreviewTask) Start(ctx context.Context) {
|
|||||||
return
|
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)
|
videoChecksum := t.Scene.GetHash(t.fileNamingAlgorithm)
|
||||||
|
|
||||||
if err := t.generateVideo(videoChecksum, videoFile.VideoStreamDuration); err != nil {
|
if t.Overwrite || !t.doesVideoPreviewExist() {
|
||||||
logger.Errorf("error generating preview: %v", err)
|
ffprobe := instance.FFProbe
|
||||||
logErrorOutput(err)
|
videoFile, err := ffprobe.NewVideoFile(t.Scene.Path)
|
||||||
return
|
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 {
|
if err := t.generateWebp(videoChecksum); err != nil {
|
||||||
logger.Errorf("error generating preview webp: %v", err)
|
logger.Errorf("error generating preview webp: %v", err)
|
||||||
logErrorOutput(err)
|
logErrorOutput(err)
|
||||||
@@ -77,26 +82,39 @@ func (t GeneratePreviewTask) required() bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
sceneHash := t.Scene.GetHash(t.fileNamingAlgorithm)
|
if t.Overwrite {
|
||||||
videoExists := t.doesVideoPreviewExist(sceneHash)
|
return true
|
||||||
imageExists := !t.ImagePreview || t.doesImagePreviewExist(sceneHash)
|
}
|
||||||
|
|
||||||
|
videoExists := t.doesVideoPreviewExist()
|
||||||
|
imageExists := !t.ImagePreview || t.doesImagePreviewExist()
|
||||||
return !imageExists || !videoExists
|
return !imageExists || !videoExists
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *GeneratePreviewTask) doesVideoPreviewExist(sceneChecksum string) bool {
|
func (t *GeneratePreviewTask) doesVideoPreviewExist() bool {
|
||||||
|
sceneChecksum := t.Scene.GetHash(t.fileNamingAlgorithm)
|
||||||
if sceneChecksum == "" {
|
if sceneChecksum == "" {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
videoExists, _ := fsutil.FileExists(instance.Paths.Scene.GetVideoPreviewPath(sceneChecksum))
|
if t.videoPreviewExists == nil {
|
||||||
return videoExists
|
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 == "" {
|
if sceneChecksum == "" {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
imageExists, _ := fsutil.FileExists(instance.Paths.Scene.GetWebpPreviewPath(sceneChecksum))
|
if t.imagePreviewExists == nil {
|
||||||
return imageExists
|
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))
|
* Changed performer aliases to be a list, rather than a string field. ([#3113](https://github.com/stashapp/stash/pull/3113))
|
||||||
|
|
||||||
### 🐛 Bug fixes
|
### 🐛 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 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 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))
|
* Fixed date fields not being nulled correctly when cleared. ([#3243](https://github.com/stashapp/stash/pull/3243))
|
||||||
|
|||||||
Reference in New Issue
Block a user