Documentation
¶
Overview ¶
providers.go is the single registration point for all subtitle providers. Each provider's factory function and settings schema are registered here; adding a new provider requires one Register + one RegisterSchema call. No init(), no blank imports, no global state.
Directories
¶
| Path | Synopsis |
|---|---|
|
cmd
|
|
|
bundle
command
Command bundle builds subflux's browser client: it bundles the two page entrypoints (app.ts, login.ts) with esbuild (a Go library — no Node, no npm, per the fleet's no-Node-in-the-builder doctrine), assembles the CSS bundles from the manifest files, copies @cplieger/ui-primitives' base stylesheet, and writes precompressed .gz siblings for every emitted text asset.
|
Command bundle builds subflux's browser client: it bundles the two page entrypoints (app.ts, login.ts) with esbuild (a Go library — no Node, no npm, per the fleet's no-Node-in-the-builder doctrine), assembles the CSS bundles from the manifest files, copies @cplieger/ui-primitives' base stylesheet, and writes precompressed .gz siblings for every emitted text asset. |
|
wire-codegen
command
Command wire-codegen generates the TypeScript wire surface and the Go path constants from the single wire contract in internal/wirespec, using the wiregen library (AST-based; github.com/cplieger/wiregen/v2).
|
Command wire-codegen generates the TypeScript wire surface and the Go path constants from the single wire contract in internal/wirespec, using the wiregen library (AST-based; github.com/cplieger/wiregen/v2). |
|
internal
|
|
|
api
Package api defines the internal contracts between subflux components.
|
Package api defines the internal contracts between subflux components. |
|
arrsvc
Package arrsvc composes the github.com/cplieger/arrapi Sonarr and Radarr clients with subflux's subtitle-specific operations: "wanted" iteration (which library items need a subtitle search), exclude-tag name resolution, and a fire-and-forget rescan.
|
Package arrsvc composes the github.com/cplieger/arrapi Sonarr and Radarr clients with subflux's subtitle-specific operations: "wanted" iteration (which library items need a subtitle search), exclude-tag name resolution, and a fire-and-forget rescan. |
|
authstore
Package authstore re-exports the composite store interface from the standalone github.com/cplieger/auth/v2 library so subflux call sites can continue to refer to authstore.AuthStore without depending on the library's import path directly.
|
Package authstore re-exports the composite store interface from the standalone github.com/cplieger/auth/v2 library so subflux call sites can continue to refer to authstore.AuthStore without depending on the library's import path directly. |
|
authstore/authstoretest
Package authstoretest provides a shared, engine-agnostic behavioral contract suite for the composite auth store (cplieger/auth/store.Composite).
|
Package authstoretest provides a shared, engine-agnostic behavioral contract suite for the composite auth store (cplieger/auth/store.Composite). |
|
boltstore
Package boltstore is the bbolt-backed core store for subflux's search, subtitle, scan, sync-offset, and poll domains.
|
Package boltstore is the bbolt-backed core store for subflux's search, subtitle, scan, sync-offset, and poll domains. |
|
cache
Package cache provides a generic TTL cache with singleflight coalescing.
|
Package cache provides a generic TTL cache with singleflight coalescing. |
|
cliparse
Package cliparse implements subflux's flat CLI grammar: a single ParseAndValidate pass that splits "--key value" / "--key=value" tokens, rejects unknown flags (with typo suggestions) and stray positionals, parses bool flags from the spec table, validates typed values, enforces required flags, and applies spec defaults.
|
Package cliparse implements subflux's flat CLI grammar: a single ParseAndValidate pass that splits "--key value" / "--key=value" tokens, rejects unknown flags (with typo suggestions) and stray positionals, parses bool flags from the spec table, validates typed values, enforces required flags, and applies spec defaults. |
|
config
Package config loads, validates, and hot-reloads the subflux YAML configuration.
|
Package config loads, validates, and hot-reloads the subflux YAML configuration. |
|
config/defaults
Package defaults provides shared configuration constants and helpers used by both config/ and config/schema/.
|
Package defaults provides shared configuration constants and helpers used by both config/ and config/schema/. |
|
config/schema
Package schema generates the UI configuration schema for the web frontend.
|
Package schema generates the UI configuration schema for the web frontend. |
|
embedded
Package embedded detects embedded subtitle tracks in video files.
|
Package embedded detects embedded subtitle tracks in video files. |
|
httputil
Package httputil provides shared HTTP utilities for subtitle providers.
|
Package httputil provides shared HTTP utilities for subtitle providers. |
|
metrics
Package metrics provides Prometheus-compatible metrics for Subflux.
|
Package metrics provides Prometheus-compatible metrics for Subflux. |
|
provider
Package provider contains the provider registry and retry wrappers.
|
Package provider contains the provider registry and retry wrappers. |
|
provider/anidb
Package anidb provides TVDB → AniDB mapping using the community-maintained anime-list.xml from https://github.com/Anime-Lists/anime-lists.
|
Package anidb provides TVDB → AniDB mapping using the community-maintained anime-list.xml from https://github.com/Anime-Lists/anime-lists. |
|
provider/animetosho
Package animetosho implements the AnimeTosho subtitle provider.
|
Package animetosho implements the AnimeTosho subtitle provider. |
|
provider/archive
Package archive provides subtitle extraction from ZIP and RAR archives.
|
Package archive provides subtitle extraction from ZIP and RAR archives. |
|
provider/betaseries
Package betaseries implements the BetaSeries subtitle provider.
|
Package betaseries implements the BetaSeries subtitle provider. |
|
provider/classify
Package classify provides subtitle classification (forced/HI) and language resolution utilities consumed by provider sub-packages.
|
Package classify provides subtitle classification (forced/HI) and language resolution utilities consumed by provider sub-packages. |
|
provider/dlcache
Package dlcache provides a generic LRU download-data cache with heap-based eviction.
|
Package dlcache provides a generic LRU download-data cache with heap-based eviction. |
|
provider/gestdown
Package gestdown implements the Gestdown subtitle provider.
|
Package gestdown implements the Gestdown subtitle provider. |
|
provider/hdbits
Package hdbits implements the HDBits.org subtitle provider.
|
Package hdbits implements the HDBits.org subtitle provider. |
|
provider/mock
Package mock provides a configurable mock subtitle provider for functional testing.
|
Package mock provides a configurable mock subtitle provider for functional testing. |
|
provider/opensubtitles
Package opensubtitles implements the OpenSubtitles.com REST API provider.
|
Package opensubtitles implements the OpenSubtitles.com REST API provider. |
|
provider/subdl
Package subdl implements the SubDL subtitle provider.
|
Package subdl implements the SubDL subtitle provider. |
|
provider/subsource
Package subsource implements the SubSource subtitle provider.
|
Package subsource implements the SubSource subtitle provider. |
|
provider/yifysubtitles
Package yifysubtitles implements the YIFY Subtitles provider.
|
Package yifysubtitles implements the YIFY Subtitles provider. |
|
scorer
Package scorer implements subtitle scoring based on release matching.
|
Package scorer implements subtitle scoring based on release matching. |
|
search
Package search implements the subtitle search engine.
|
Package search implements the subtitle search engine. |
|
search/release
Package release provides release name parsing via PCRE-compatible regex patterns sourced from TRaSH Guides and Sonarr/Radarr QualityParser.
|
Package release provides release name parsing via PCRE-compatible regex patterns sourced from TRaSH Guides and Sonarr/Radarr QualityParser. |
|
search/scoring
Package scoring provides pure subtitle scoring and identity filtering.
|
Package scoring provides pure subtitle scoring and identity filtering. |
|
search/syncing
Package syncing provides subtitle timing synchronization for the search engine.
|
Package syncing provides subtitle timing synchronization for the search engine. |
|
search/timeout
Package timeout provides provider health tracking with sliding-window failure detection and cooldown-based timeout.
|
Package timeout provides provider health tracking with sliding-window failure detection and cooldown-based timeout. |
|
server
Package server — Content-Security-Policy construction.
|
Package server — Content-Security-Policy construction. |
|
server/activity
Package activity provides concurrent-safe activity and alert tracking for the subflux UI status indicator.
|
Package activity provides concurrent-safe activity and alert tracking for the subflux UI status indicator. |
|
server/authhandlers
Package authhandlers provides shared types and utilities for the server's authentication handler cluster: login, WebAuthn, OIDC, admin user management, and security management (password change, API keys, passkeys).
|
Package authhandlers provides shared types and utilities for the server's authentication handler cluster: login, WebAuthn, OIDC, admin user management, and security management (password change, API keys, passkeys). |
|
server/confighandlers
Package confighandlers provides HTTP handlers for configuration CRUD operations: get, save, reset, schema, and path validation.
|
Package confighandlers provides HTTP handlers for configuration CRUD operations: get, save, reset, schema, and path validation. |
|
server/coverage
Package coverage provides pure computation functions for subtitle coverage analysis.
|
Package coverage provides pure computation functions for subtitle coverage analysis. |
|
server/coveragehandlers
Package coveragehandlers provides HTTP handlers for the /api/coverage/* endpoints.
|
Package coveragehandlers provides HTTP handlers for the /api/coverage/* endpoints. |
|
server/events
Package events is subflux's typed server-sent-events layer: the sealed Event/EventData types the app publishes, marshaled onto the shared webhttp/sse broadcast hub.
|
Package events is subflux's typed server-sent-events layer: the sealed Event/EventData types the app publishes, marshaled onto the shared webhttp/sse broadcast hub. |
|
server/filehandlers
Package filehandlers provides HTTP handlers for the /api/files/* endpoints.
|
Package filehandlers provides HTTP handlers for the /api/files/* endpoints. |
|
server/httphelpers
Package httphelpers provides shared HTTP handler prelude helpers used across server sub-packages.
|
Package httphelpers provides shared HTTP handler prelude helpers used across server sub-packages. |
|
server/manualops
Package manualops implements the business logic for manual subtitle search and download operations.
|
Package manualops implements the business logic for manual subtitle search and download operations. |
|
server/mediahandlers
Package mediahandlers provides HTTP handlers for the /api/media/* endpoints.
|
Package mediahandlers provides HTTP handlers for the /api/media/* endpoints. |
|
server/polling
Package polling provides the history-polling subsystem for Sonarr/Radarr import events and the write-through poll timestamp cache.
|
Package polling provides the history-polling subsystem for Sonarr/Radarr import events and the write-through poll timestamp cache. |
|
server/previewhandlers
Package previewhandlers provides HTTP handlers for the video/subtitle preview and poster proxy endpoints.
|
Package previewhandlers provides HTTP handlers for the video/subtitle preview and poster proxy endpoints. |
|
server/queryhandlers
Package queryhandlers provides read-only HTTP query handlers: subtitle state, backoff, manual locks, providers, parsed config, score simulation, and dashboard stats.
|
Package queryhandlers provides read-only HTTP query handlers: subtitle state, backoff, manual locks, providers, parsed config, score simulation, and dashboard stats. |
|
server/resolve
Package resolve is the one home for typed-reference resolution (S7): it maps the wire references — FileRef (one stored subtitle file) and MediaRef (the arr-known video of a media item) — to absolute filesystem paths using server-derived facts only.
|
Package resolve is the one home for typed-reference resolution (S7): it maps the wire references — FileRef (one stored subtitle file) and MediaRef (the arr-known video of a media item) — to absolute filesystem paths using server-derived facts only. |
|
server/scanning
Package scanning implements the full-scan orchestration engine.
|
Package scanning implements the full-scan orchestration engine. |
|
server/scheduler
Package scheduler provides the periodic full-scan pipeline, DB maintenance, and auth cleanup scheduling for the subflux server.
|
Package scheduler provides the periodic full-scan pipeline, DB maintenance, and auth cleanup scheduling for the subflux server. |
|
server/serveradapter
Package serveradapter provides adapter types that bridge the server's activity, alert, and event subsystems to the interfaces consumed by the scanning and manualops packages.
|
Package serveradapter provides adapter types that bridge the server's activity, alert, and event subsystems to the interfaces consumed by the scanning and manualops packages. |
|
server/showskip
Package showskip provides a TTL-based cache for show-level subtitle pre-check results.
|
Package showskip provides a TTL-based cache for show-level subtitle pre-check results. |
|
server/subtitlepath
Package subtitlepath owns the subtitle-scoped file deletion gate: the delete capability check from the subtitle-extension authority (internal/subtitleext) layered in front of the generic media-root containment delete (config.RemoveUnderRoot).
|
Package subtitlepath owns the subtitle-scoped file deletion gate: the delete capability check from the subtitle-extension authority (internal/subtitleext) layered in front of the generic media-root containment delete (config.RemoveUnderRoot). |
|
server/synchandlers
Package synchandlers provides HTTP handlers for subtitle sync operations (audio-based sync and manual offset adjustment).
|
Package synchandlers provides HTTP handlers for subtitle sync operations (audio-based sync and manual offset adjustment). |
|
store/buckets
Package buckets is the single owner of the AUTH-domain bbolt bucket names shared by the two packages that operate on one database file: the core store (internal/boltstore) bootstraps every bucket in its schema, and the auth store (internal/authstore) builds keys inside these.
|
Package buckets is the single owner of the AUTH-domain bbolt bucket names shared by the two packages that operate on one database file: the core store (internal/boltstore) bootstraps every bucket in its schema, and the auth store (internal/authstore) builds keys inside these. |
|
store/kv
Package kv holds the shared bbolt store primitives used by both the core subflux store (internal/store) and the auth store (internal/authstore).
|
Package kv holds the shared bbolt store primitives used by both the core subflux store (internal/store) and the auth store (internal/authstore). |
|
store/storetest
Package storetest provides a shared, engine-agnostic behavioral contract suite for api.Store implementations.
|
Package storetest provides a shared, engine-agnostic behavioral contract suite for api.Store implementations. |
|
subsync
Package subsync provides subtitle timing synchronization.
|
Package subsync provides subtitle timing synchronization. |
|
subsync/crosslang
Package crosslang implements cross-language subtitle alignment using anchor-based matching and dynamic programming.
|
Package crosslang implements cross-language subtitle alignment using anchor-based matching and dynamic programming. |
|
subsync/ffmpeg
Package ffmpeg provides low-level ffmpeg/ffprobe subprocess wrappers for stream probing, subtitle extraction, and PCM audio extraction.
|
Package ffmpeg provides low-level ffmpeg/ffprobe subprocess wrappers for stream probing, subtitle extraction, and PCM audio extraction. |
|
subsync/fft
Package fft provides a radix-2 Cooley-Tukey FFT implementation for cross-correlation in the subsync package.
|
Package fft provides a radix-2 Cooley-Tukey FFT implementation for cross-correlation in the subsync package. |
|
subsync/framerate
Package framerate provides framerate drift detection for subtitle alignment.
|
Package framerate provides framerate drift detection for subtitle alignment. |
|
subtitleext
Package subtitleext is the single authority for which file extensions count as subtitle files, exposed as capability-scoped views rather than one flat union.
|
Package subtitleext is the single authority for which file extensions count as subtitle files, exposed as capability-scoped views rather than one flat union. |
|
syncworker
Package syncworker isolates subtitle-sync computation in a supervised one-shot child process (P13).
|
Package syncworker isolates subtitle-sync computation in a supervised one-shot child process (P13). |
|
testsupport
Package testsupport provides shared test helpers used across multiple packages.
|
Package testsupport provides shared test helpers used across multiple packages. |
|
wirespec
Package wirespec is the single source of truth for subflux's HTTP wire contract: the registered wire types, enums, and the endpoint table that cmd/wire-codegen feeds into wiregen to emit the TS types, decoders, typed client, and the Go path constants (internal/apipaths).
|
Package wirespec is the single source of truth for subflux's HTTP wire contract: the registered wire types, enums, and the endpoint table that cmd/wire-codegen feeds into wiregen to emit the TS types, decoders, typed client, and the Go path constants (internal/apipaths). |
|
wiring
Package wiring holds composition-root types that connect concrete implementations across the api, metrics, search, and provider packages.
|
Package wiring holds composition-root types that connect concrete implementations across the api, metrics, search, and provider packages. |
Click to show internal directories.
Click to hide internal directories.