app

package
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 18, 2026 License: MIT Imports: 9 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ActionConfig

type ActionConfig struct {
	NavigateIframeTimeout  time.Duration `koanf:"navigate_iframe_timeout" validate:"required"`
	NavigateIframeMaxDepth int           `koanf:"navigate_iframe_max_depth" validate:"required,min=1"`
	BypassTurnstileTimeout time.Duration `koanf:"bypass_turnstile_timeout" validate:"required"`
	TurnstileRetryTimeout  time.Duration `koanf:"turnstile_retry_timeout" validate:"required"`
}

ActionConfig holds timeouts for browser automation actions.

type BrowserConfig

type BrowserConfig struct {
	Timeout    time.Duration `koanf:"timeout" validate:"required"`
	Headless   bool          `koanf:"headless"`
	NoSandbox  bool          `koanf:"no_sandbox"`
	ChromePath string        `koanf:"chrome_path"`
}

BrowserConfig holds settings for headless browser extraction.

type CaptureConfig

type CaptureConfig struct {
	Patterns          []string      `koanf:"patterns" validate:"required,min=1"`
	CollectionWindow  time.Duration `koanf:"collection_window" validate:"required"`
	GraceAfterActions time.Duration `koanf:"grace_after_actions" validate:"required"`
	MaxConcurrency    int           `koanf:"max_concurrency" validate:"required,min=1"`
	MaxCandidates     int           `koanf:"max_candidates" validate:"required,min=1"`
}

CaptureConfig holds patterns for intercepting stream URLs.

type Config

type Config struct {
	Device    DeviceConfig    `koanf:"device" validate:"required"`
	Network   NetworkConfig   `koanf:"network" validate:"required"`
	Browser   BrowserConfig   `koanf:"browser" validate:"required"`
	Resolver  ResolverConfig  `koanf:"resolver" validate:"required"`
	Capture   CaptureConfig   `koanf:"capture" validate:"required"`
	Actions   ActionConfig    `koanf:"actions" validate:"required"`
	Sources   []SourceConfig  `koanf:"sources" validate:"dive"`
	Transcode TranscodeConfig `koanf:"transcode" validate:"required"`
}

Config holds all application configuration.

func ConfigFrom

func ConfigFrom(cmd *cli.Command) (*Config, error)

ConfigFrom extracts the Config from the CLI command metadata.

func Load

func Load(path string) (*Config, error)

Load reads and validates configuration from a YAML file.

func (*Config) Source

func (c *Config) Source(name string) (*SourceConfig, error)

Source returns the SourceConfig with the given name, or an error if not found.

type DeviceConfig

type DeviceConfig struct {
	Name string      `koanf:"name" validate:"required"`
	Type device.Type `koanf:"type" validate:"required"`
}

DeviceConfig holds device selection settings.

type NetworkConfig

type NetworkConfig struct {
	Timeout   time.Duration `koanf:"timeout" validate:"required"`
	Interface string        `koanf:"interface" validate:"required"`
}

NetworkConfig holds network settings.

type ResolverConfig

type ResolverConfig struct {
	FFprobePath         string        `koanf:"ffprobe_path" validate:"required"`
	ProbeTimeout        time.Duration `koanf:"probe_timeout" validate:"required"`
	HLSTimeout          time.Duration `koanf:"hls_timeout" validate:"required"`
	ProbeMaxConcurrency int           `koanf:"probe_max_concurrency" validate:"required,min=1"`
}

ResolverConfig holds URL resolution settings.

type SourceConfig

type SourceConfig struct {
	Name      string         `koanf:"name" validate:"required"`
	Proxies   []string       `koanf:"proxies" validate:"required,min=1"`
	Templates TemplateConfig `koanf:"templates" validate:"required"`
}

SourceConfig defines a YAML-configured source.

func (*SourceConfig) EpisodeURLs

func (s *SourceConfig) EpisodeURLs(itemID string, season, episode uint) []string

EpisodeURLs expands the episode template across all proxies for a source.

func (*SourceConfig) MovieURLs

func (s *SourceConfig) MovieURLs(itemID string) []string

MovieURLs expands the movie template across all proxies for a source.

type TemplateConfig

type TemplateConfig struct {
	Movie   string `koanf:"movie" validate:"required"`
	Episode string `koanf:"episode" validate:"required"`
}

TemplateConfig holds URL templates for movies and episodes.

type TranscodeConfig

type TranscodeConfig struct {
	FFmpegPath           string `koanf:"ffmpeg_path" validate:"required"`
	ReadRate             int    `koanf:"read_rate" validate:"required"`
	ReadRateBurst        int    `koanf:"read_rate_burst" validate:"required"`
	VideoCodec           string `koanf:"video_codec" validate:"required"`
	AudioCodec           string `koanf:"audio_codec" validate:"required"`
	AudioSampleRate      int    `koanf:"audio_sample_rate" validate:"required"`
	AudioBitrate         string `koanf:"audio_bitrate" validate:"required"`
	OutputFormat         string `koanf:"output_format" validate:"required"`
	InitialDataThreshold int    `koanf:"initial_data_threshold" validate:"required"`
}

TranscodeConfig holds ffmpeg transcode settings.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL