Skip to main content
tuliprox can scan your local media directories and integrate the results into the same Xtream or M3U outputs it publishes for live IPTV. This lets you manage local movies and series alongside provider content in a single interface.

How it works

1

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.
2

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.
3

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.
4

Probe streams

If ffprobe integration is enabled, tuliprox probes discovered files to determine codec, resolution, and duration information.
5

Expose via outputs

Add a library input to a source and publish it through any supported output type. Library content appears alongside live and VOD content from IPTV providers.

Library configuration

content_type

Supported extensions

The default list of recognised extensions is:
Override this globally via 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.
TMDB imposes a rate limit on API keys. Keep rate_limit_ms at 250 or higher to avoid being throttled.

ffprobe integration

tuliprox uses ffprobe to probe media files for technical stream information such as video codec, resolution, audio tracks, and duration.
Probe tasks run at the priority configured in 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:
Duration fields accept s, m, h, or d suffixes.

Integrating with outputs

Add a library input type to your source.yml to expose library content through any output:
Library items receive stable virtual IDs so that Xtream-based clients maintain consistent watch history and favourites across scans.

Scheduling library scans

Automate scans with a LibraryScan schedule:
The cron expression uses a leading seconds field: seconds minutes hours day-of-month month day-of-week year.