Step 1: Define an M3U input
The M3U playlist is then available at:
EPG (XMLTV) integration
Attach one or more EPG sources to the input using theepg block:
source.yml
url: auto tells tuliprox to use the EPG URL embedded in the M3U playlist itself, if present.
Clients retrieve the EPG at:
M3U output options
| Field | Description |
|---|---|
filename | Custom filename for the generated M3U file |
include_type_in_url | Append the content type to stream URLs |
mask_redirect_url | Mask the provider URL in redirect responses |
filter | Additional per-output filter expression |
Batch M3U sources
Usem3u_batch to load many provider URLs from a CSV file:
source.yml
| Column | Description |
|---|---|
url | Provider playlist URL |
max_connections | Maximum concurrent connections |
priority | Failover priority (lower = higher priority) |
m3u input with a batch:// URL — tuliprox treats it the same as m3u_batch.
Common issues
Playlist is empty after update
Playlist is empty after update
Verify the URL is reachable from the tuliprox host:For
file:// URLs confirm the path exists and tuliprox has read permission.EPG not populating
EPG not populating
EPG matching depends on the
tvg-id attribute in the M3U entries matching
channel IDs in the XMLTV data. Enable smart_match with fuzzy_matching
to handle minor name differences.Groups or channel names look wrong
Groups or channel names look wrong
M3U attribute parsing reads
group-title and tvg-name from #EXTINF lines.
Check the raw playlist to confirm those attributes are present. Use the
rename and mapping features to normalise names after import.Client requests timeout on large playlists
Client requests timeout on large playlists
For very large playlists consider enabling
disk_based_processing: true
in config.yml to reduce peak memory usage during updates.