mirror of
https://github.com/stashapp/stash.git
synced 2025-12-17 12:24:38 +03:00
Restructure ffmpeg (#2392)
* Refactor transcode generation * Move phash generation into separate package * Refactor image thumbnail generation * Move JSONTime to separate package * Ffmpeg refactoring * Refactor live transcoding * Refactor scene marker preview generation * Refactor preview generation * Refactor screenshot generation * Refactor sprite generation * Change ffmpeg.IsStreamable to return error * Move frame rate calculation into ffmpeg * Refactor file locking * Refactor title set during scan * Add missing lockmanager instance * Return error instead of logging in MatchContainer
This commit is contained in:
50
pkg/models/json/json_time.go
Normal file
50
pkg/models/json/json_time.go
Normal file
@@ -0,0 +1,50 @@
|
||||
package json
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/stashapp/stash/pkg/utils"
|
||||
)
|
||||
|
||||
var currentLocation = time.Now().Location()
|
||||
|
||||
type JSONTime struct {
|
||||
time.Time
|
||||
}
|
||||
|
||||
func (jt *JSONTime) UnmarshalJSON(b []byte) error {
|
||||
s := strings.Trim(string(b), "\"")
|
||||
if s == "null" {
|
||||
jt.Time = time.Time{}
|
||||
return nil
|
||||
}
|
||||
|
||||
// #731 - returning an error here causes the entire JSON parse to fail for ffprobe.
|
||||
jt.Time, _ = utils.ParseDateStringAsTime(s)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (jt *JSONTime) MarshalJSON() ([]byte, error) {
|
||||
if jt.Time.IsZero() {
|
||||
return []byte("null"), nil
|
||||
}
|
||||
return []byte(fmt.Sprintf("\"%s\"", jt.Time.Format(time.RFC3339))), nil
|
||||
}
|
||||
|
||||
func (jt JSONTime) GetTime() time.Time {
|
||||
if currentLocation != nil {
|
||||
if jt.IsZero() {
|
||||
return time.Now().In(currentLocation)
|
||||
} else {
|
||||
return jt.Time.In(currentLocation)
|
||||
}
|
||||
} else {
|
||||
if jt.IsZero() {
|
||||
return time.Now()
|
||||
} else {
|
||||
return jt.Time
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user