Documentation
¶
Index ¶
- Constants
- Variables
- func CalculatePresetMB(size int64, preset string, exact int64) (int64, string, error)
- func FormatBytes(bytes uint64) string
- func SupportedVideo(path string) bool
- func TargetBytesFromMB(megabytes int64) uint64
- type CLIRunner
- type DiskSpaceChecker
- type DiskSpaceStatus
- type DiskSpaceUpdate
- type EncoderAvailability
- type EncoderCapabilities
- type FileEntry
- type FileList
- type FilesystemDiskSpaceChecker
- type Job
- type JobManager
- type JobRunner
- type JobSettings
- type JobState
- type MediaRoot
- type MovieDetails
- type ProgressUpdate
- type RootRegistry
- type RootSummary
- type RunResult
- type SafeRoot
- type Server
Constants ¶
View Source
const ( EncoderWorkingAllowanceBytes uint64 = 512 * 1024 * 1024 MinimumSafetyReserveBytes uint64 = 2 * 1024 * 1024 * 1024 CriticalFreeSpaceBytes uint64 = 512 * 1024 * 1024 )
Variables ¶
View Source
var ( ErrInsufficientDiskSpace = errors.New("insufficient disk space") ErrCriticalDiskSpace = errors.New("critical low disk space") )
View Source
var ErrInvalidPath = errors.New("invalid movie path")
View Source
var ErrJobPersistence = errors.New("job persistence failed")
View Source
var ErrUnknownRoot = errors.New("unknown media root")
Functions ¶
func CalculatePresetMB ¶
func FormatBytes ¶
func SupportedVideo ¶
func TargetBytesFromMB ¶
Types ¶
type CLIRunner ¶
type CLIRunner struct {
// contains filtered or unexported fields
}
func NewCLIRunner ¶
func NewCLIRunner(roots *RootRegistry, shrinkrayBin string) *CLIRunner
type DiskSpaceChecker ¶
type DiskSpaceChecker interface {
Check(string, uint64) (DiskSpaceStatus, error)
}
type DiskSpaceStatus ¶
type DiskSpaceStatus struct {
AvailableBytes uint64
CapacityBytes uint64
RequiredBytes uint64
ReserveBytes uint64
Sufficient bool
Warning bool
}
func CalculateDiskSpace ¶
func CalculateDiskSpace(targetBytes, availableBytes, capacityBytes uint64) DiskSpaceStatus
type DiskSpaceUpdate ¶
type EncoderAvailability ¶
type EncoderCapabilities ¶
type EncoderCapabilities struct {
Encoders EncoderAvailability `json:"encoders"`
AutoSelected string `json:"auto_selected"`
}
type FilesystemDiskSpaceChecker ¶
type FilesystemDiskSpaceChecker struct{}
func (FilesystemDiskSpaceChecker) Check ¶
func (FilesystemDiskSpaceChecker) Check(directory string, targetBytes uint64) (DiskSpaceStatus, error)
type Job ¶
type Job struct {
ID string `json:"id"`
RootID string `json:"root_id"`
RootLabel string `json:"root_label"`
Path string `json:"path"`
Filename string `json:"filename"`
OutputPath string `json:"output_path"`
OriginalSize int64 `json:"original_size"`
Settings JobSettings `json:"settings"`
State JobState `json:"state"`
Stage string `json:"stage"`
QueuedAt time.Time `json:"queued_at"`
StartedAt *time.Time `json:"started_at,omitempty"`
FinishedAt *time.Time `json:"finished_at,omitempty"`
ElapsedSeconds int64 `json:"elapsed_seconds"`
ProgressPercent float64 `json:"progress_percent"`
StageProgressPercent float64 `json:"stage_progress_percent"`
DurationSeconds float64 `json:"duration_seconds"`
ProcessedSeconds float64 `json:"processed_seconds"`
ETASeconds *float64 `json:"eta_seconds"`
EncodeSpeed float64 `json:"encode_speed"`
ETAIsEstimate bool `json:"eta_is_estimate"`
DiskAvailableBytes uint64 `json:"disk_available_bytes,omitempty"`
DiskRequiredBytes uint64 `json:"disk_required_bytes,omitempty"`
DiskSafetyReserve uint64 `json:"disk_safety_reserve_bytes,omitempty"`
DiskSpaceWarning bool `json:"disk_space_warning,omitempty"`
Logs []string `json:"logs"`
ResultSize int64 `json:"result_size,omitempty"`
SavedPercent float64 `json:"saved_percent,omitempty"`
Failure string `json:"failure,omitempty"`
ActualEncoder string `json:"actual_encoder,omitempty"`
// contains filtered or unexported fields
}
type JobManager ¶
type JobManager struct {
// contains filtered or unexported fields
}
func NewJobManager ¶
func NewJobManager(roots *RootRegistry, runner JobRunner) *JobManager
func (*JobManager) Cancel ¶
func (m *JobManager) Cancel(id string) error
func (*JobManager) ClearHistory ¶
func (m *JobManager) ClearHistory() (int, error)
func (*JobManager) Close ¶
func (m *JobManager) Close()
func (*JobManager) List ¶
func (m *JobManager) List() []*Job
type JobRunner ¶
type JobRunner interface {
Run(context.Context, *Job, func(string), func(ProgressUpdate), func(DiskSpaceUpdate), func(string)) (RunResult, error)
}
type JobSettings ¶
type JobSettings struct {
Preset string `json:"preset"`
Quality string `json:"quality"`
Container string `json:"container"`
KeepAllAudio bool `json:"keep_all_audio"`
TargetMB int64 `json:"target_mb"`
RequestedEncoder string `json:"requested_encoder,omitempty"`
}
func (JobSettings) String ¶
func (s JobSettings) String() string
type MovieDetails ¶
type MovieDetails struct {
RootID string `json:"root_id"`
RootLabel string `json:"root_label"`
Filename string `json:"filename"`
Path string `json:"path"`
Size int64 `json:"size"`
Duration float64 `json:"duration_seconds"`
Width int `json:"width"`
Height int `json:"height"`
VideoCodec string `json:"video_codec"`
AudioTracks int `json:"audio_tracks"`
SubtitleTracks int `json:"subtitle_tracks"`
}
type ProgressUpdate ¶
type RootRegistry ¶
type RootRegistry struct {
// contains filtered or unexported fields
}
func NewRootRegistry ¶
func NewRootRegistry(specs []string) (*RootRegistry, error)
func (*RootRegistry) Redact ¶
func (r *RootRegistry) Redact(line string) string
func (*RootRegistry) Roots ¶
func (r *RootRegistry) Roots() []*MediaRoot
func (*RootRegistry) Summaries ¶
func (r *RootRegistry) Summaries() []RootSummary
type RootSummary ¶
type SafeRoot ¶
type SafeRoot struct {
// contains filtered or unexported fields
}
func NewSafeRoot ¶
func (*SafeRoot) ResolveDir ¶
Click to show internal directories.
Click to hide internal directories.