How it works
Configure scan directories
Add one or more directories under
library.scan_directories in config.yml. Each directory can have its own content_type and recursive setting.Run a library scan
Trigger a scan manually via the Web UI or schedule it with a
LibraryScan cron job. tuliprox walks the directory tree, discovers media files by extension, and classifies them as movies or series.Enrich metadata
tuliprox reads any existing
.nfo sidecar files and, if TMDB enrichment is enabled, queries the TMDB API to fill in titles, descriptions, posters, and other metadata.Probe streams
If ffprobe integration is enabled, tuliprox probes discovered files to determine codec, resolution, and duration information.
Library configuration
content_type
| Value | Behaviour |
|---|---|
movie | All files in this directory are treated as movies |
series | All files in this directory are treated as series episodes |
auto | tuliprox classifies each file based on naming patterns and directory structure |
Supported extensions
The default list of recognised extensions is:library.supported_extensions or per-directory if needed.
NFO files
tuliprox reads and writes Kodi-compatible.nfo sidecar files placed next to media files. On scan, it reads existing NFO metadata and merges it with the internal library record. After a TMDB lookup, it can write enriched metadata back to the NFO file so other tools can benefit from it.
TMDB enrichment
Enable TMDB to automatically match library entries against The Movie Database and retrieve posters, descriptions, release years, genres, and more.| Field | Description |
|---|---|
api_key | Your TMDB API v3 key |
rate_limit_ms | Minimum milliseconds between TMDB API requests |
language | TMDB response language (e.g. en, de, fr) |
cache_duration_days | How long to cache a successful TMDB response before re-querying |
match_threshold | Minimum fuzzy-match score (0–100) to accept a TMDB result |
cooldown | How long to wait before re-attempting a failed lookup |
ffprobe integration
tuliprox uses ffprobe to probe media files for technical stream information such as video codec, resolution, audio tracks, and duration.| Field | Description |
|---|---|
enabled | Enable or disable ffprobe probing |
timeout | Maximum time to wait for a probe to complete |
analyze_duration | Microseconds of data to analyze for file-based content |
probe_size | Bytes to probe for file-based content |
live_analyze_duration | Microseconds of data to analyze for live streams |
live_probe_size | Bytes to probe for live streams |
metadata_update.probe.user_priority. Setting this to a high number (e.g. 127) ensures probing never preempts active user playback.
Retry and backoff
Metadata resolve and probe tasks use configurable retry policies to handle transient failures:s, m, h, or d suffixes.
Integrating with outputs
Add alibrary input type to your source.yml to expose library content through any output:
Scheduling library scans
Automate scans with aLibraryScan schedule:
seconds minutes hours day-of-month month day-of-week year.