mirror of
https://github.com/stashapp/stash.git
synced 2025-12-18 04:44:37 +03:00
Delete marker preview on marker change or delete (#446)
This commit is contained in:
@@ -454,6 +454,14 @@ func (r *mutationResolver) SceneMarkerUpdate(ctx context.Context, input models.S
|
|||||||
func (r *mutationResolver) SceneMarkerDestroy(ctx context.Context, id string) (bool, error) {
|
func (r *mutationResolver) SceneMarkerDestroy(ctx context.Context, id string) (bool, error) {
|
||||||
qb := models.NewSceneMarkerQueryBuilder()
|
qb := models.NewSceneMarkerQueryBuilder()
|
||||||
tx := database.DB.MustBeginTx(ctx, nil)
|
tx := database.DB.MustBeginTx(ctx, nil)
|
||||||
|
|
||||||
|
markerID, _ := strconv.Atoi(id)
|
||||||
|
marker, err := qb.Find(markerID)
|
||||||
|
|
||||||
|
if err != nil {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
|
||||||
if err := qb.Destroy(id, tx); err != nil {
|
if err := qb.Destroy(id, tx); err != nil {
|
||||||
_ = tx.Rollback()
|
_ = tx.Rollback()
|
||||||
return false, err
|
return false, err
|
||||||
@@ -461,6 +469,16 @@ func (r *mutationResolver) SceneMarkerDestroy(ctx context.Context, id string) (b
|
|||||||
if err := tx.Commit(); err != nil {
|
if err := tx.Commit(); err != nil {
|
||||||
return false, err
|
return false, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// delete the preview for the marker
|
||||||
|
sqb := models.NewSceneQueryBuilder()
|
||||||
|
scene, _ := sqb.Find(int(marker.SceneID.Int64))
|
||||||
|
|
||||||
|
if scene != nil {
|
||||||
|
seconds := int(marker.Seconds)
|
||||||
|
manager.DeleteSceneMarkerFiles(scene, seconds)
|
||||||
|
}
|
||||||
|
|
||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -470,14 +488,19 @@ func changeMarker(ctx context.Context, changeType int, changedMarker models.Scen
|
|||||||
qb := models.NewSceneMarkerQueryBuilder()
|
qb := models.NewSceneMarkerQueryBuilder()
|
||||||
jqb := models.NewJoinsQueryBuilder()
|
jqb := models.NewJoinsQueryBuilder()
|
||||||
|
|
||||||
|
var existingMarker *models.SceneMarker
|
||||||
var sceneMarker *models.SceneMarker
|
var sceneMarker *models.SceneMarker
|
||||||
var err error
|
var err error
|
||||||
switch changeType {
|
switch changeType {
|
||||||
case create:
|
case create:
|
||||||
sceneMarker, err = qb.Create(changedMarker, tx)
|
sceneMarker, err = qb.Create(changedMarker, tx)
|
||||||
case update:
|
case update:
|
||||||
|
// check to see if timestamp was changed
|
||||||
|
existingMarker, err = qb.Find(changedMarker.ID)
|
||||||
|
if err == nil {
|
||||||
sceneMarker, err = qb.Update(changedMarker, tx)
|
sceneMarker, err = qb.Update(changedMarker, tx)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
_ = tx.Rollback()
|
_ = tx.Rollback()
|
||||||
return nil, err
|
return nil, err
|
||||||
@@ -514,6 +537,18 @@ func changeMarker(ctx context.Context, changeType int, changedMarker models.Scen
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// remove the marker preview if the timestamp was changed
|
||||||
|
if existingMarker != nil && existingMarker.Seconds != changedMarker.Seconds {
|
||||||
|
sqb := models.NewSceneQueryBuilder()
|
||||||
|
|
||||||
|
scene, _ := sqb.Find(int(existingMarker.SceneID.Int64))
|
||||||
|
|
||||||
|
if scene != nil {
|
||||||
|
seconds := int(existingMarker.Seconds)
|
||||||
|
manager.DeleteSceneMarkerFiles(scene, seconds)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return sceneMarker, nil
|
return sceneMarker, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -122,6 +122,27 @@ func DeleteGeneratedSceneFiles(scene *models.Scene) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func DeleteSceneMarkerFiles(scene *models.Scene, seconds int) {
|
||||||
|
videoPath := GetInstance().Paths.SceneMarkers.GetStreamPath(scene.Checksum, seconds)
|
||||||
|
imagePath := GetInstance().Paths.SceneMarkers.GetStreamPreviewImagePath(scene.Checksum, seconds)
|
||||||
|
|
||||||
|
exists, _ := utils.FileExists(videoPath)
|
||||||
|
if exists {
|
||||||
|
err := os.Remove(videoPath)
|
||||||
|
if err != nil {
|
||||||
|
logger.Warnf("Could not delete file %s: %s", videoPath, err.Error())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
exists, _ = utils.FileExists(imagePath)
|
||||||
|
if exists {
|
||||||
|
err := os.Remove(imagePath)
|
||||||
|
if err != nil {
|
||||||
|
logger.Warnf("Could not delete file %s: %s", videoPath, err.Error())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func DeleteSceneFile(scene *models.Scene) {
|
func DeleteSceneFile(scene *models.Scene) {
|
||||||
// kill any running encoders
|
// kill any running encoders
|
||||||
KillRunningStreams(scene.Path)
|
KillRunningStreams(scene.Path)
|
||||||
|
|||||||
Reference in New Issue
Block a user