6.5 KiB
Sources And Targets
source.yml defines upstream inputs, provider aliases and the targets Tuliprox publishes to clients.
Top-level entries
templatesinputssources
For new setups, prefer global template_path in config.yml, but inline templates remain supported.
templates
Templates reduce repeated regular expressions and can reference other templates via !name!.
Example:
templates:
- name: delimiter
value: '[\s_-]*'
- name: quality
value: '(?i)(?P<quality>HD|LQ|4K|UHD)?'
inputs
Each input can define:
nametype:m3u,xtream,library,m3u_batch,xtream_batchenabledpersisturlepgheadersmethodusernamepasswordpanel_apicache_durationexp_dateoptionsaliasesstaged
URL schemes
Supported input URL schemes:
http:///https://file://provider://<provider_name>/...batch://...
If an m3u or xtream input uses a batch:// URL, Tuliprox treats it as m3u_batch or xtream_batch.
Common input options
Important options fields include:
xtream_skip_livextream_skip_vodxtream_skip_seriesxtream_live_stream_without_extensionxtream_live_stream_use_prefixdisable_hls_streamingresolve_tmdbprobe_streamresolve_backgroundresolve_seriesresolve_vodprobe_seriesprobe_vodprobe_liveprobe_live_interval_hoursresolve_delayprobe_delay
Example Xtream input:
inputs:
- name: my_provider
type: xtream
url: http://provider.example:8080
username: user
password: secret
options:
resolve_tmdb: true
probe_stream: true
resolve_series: true
resolve_vod: true
EPG configuration
Inputs can define multiple XMLTV sources with priorities and smart matching:
epg:
sources:
- url: auto
priority: -2
logo_override: true
- url: http://localhost:3001/xmltv.php?epg_id=1
priority: -1
smart_match:
enabled: true
fuzzy_matching: true
match_threshold: 80
best_match_threshold: 99
Aliases
Aliases let one logical provider input expose multiple credentials.
inputs:
- type: xtream
name: my_provider
url: http://provider.net
username: primary
password: secret1
aliases:
- name: my_provider_2
url: http://provider.net
username: secondary
password: secret2
max_connections: 2
Batch inputs
Batch inputs load aliases from CSV files.
xtream_batch CSV fields:
nameusernamepasswordurlmax_connectionspriorityexp_date
m3u_batch CSV fields:
urlmax_connectionspriority
panel_api
Tuliprox can provision or renew provider accounts through a panel API. Supported operations include:
account_infoclient_infoclient_newclient_renewclient_adult_content
Important controls:
alias_pool.size.minalias_pool.size.maxalias_pool.remove_expiredprovisioning.timeout_secprovisioning.methodprovisioning.probe_interval_secprovisioning.cooldown_secprovisioning.offset
Example:
panel_api:
url: https://panel.example/api.php
api_key: "1234567890"
provisioning:
timeout_sec: 65
method: GET
probe_interval_sec: 10
cooldown_sec: 120
offset: 12h
Staged inputs
staged lets Tuliprox read playlist data from another source during updates while still using the main input for streaming and details.
Important fields:
enabledtypeurlheadersmethodusernamepasswordlive_sourcevod_sourceseries_source
sources
Each source contains:
inputstargets
The inputs list references input names from the top-level inputs section.
targets
Each target can define:
enablednamesortoutputprocessing_orderoptionsfilterrenamemappingfavouriteswatchuse_memory_cache
output
Supported output types:
xtreamm3ustrmhdhomerun
Important output-specific fields:
xtream
skip_live_direct_sourceskip_video_direct_sourceskip_series_direct_sourceupdate_strategytraktfilter
m3u
filenameinclude_type_in_urlmask_redirect_urlfilter
strm
directoryusernameunderscore_whitespacecleanupstyleflatstrm_propsadd_quality_to_filenamefilter
hdhomerun
deviceusernameuse_output
Target options
ignore_logoshare_live_streamsremove_duplicatesforce_redirect
If share_live_streams is enabled, each shared live channel consumes buffer memory even when several clients share the same upstream stream.
sort
Sorting consists of ordered rules with:
target:grouporchannelfieldfilterordersequence
Example:
sort:
rules:
- target: group
order: asc
filter: Group ~ ".*"
field: group
sequence:
- '^Freetv'
- '^Shopping'
- '^Entertainment'
processing_order
Controls the order of Filter, Rename and Map. Valid values:
frmfmrrfmrmfmfrmrf
filter
Filters support NOT, AND, OR, regex matches and Type comparisons.
Fields include:
GroupTitleNameCaptionUrlGenreInputType
Example:
((Group ~ "^DE.*") AND (NOT Title ~ ".*Shopping.*")) OR (Group ~ "^AU.*")
rename
Rename rules contain:
fieldpatternnew_name
Example:
rename:
- field: group
pattern: '^DE(.*)'
new_name: '1. DE$1'
mapping
Targets can reference mapping IDs defined in mapping.yml.
favourites
Allows explicit favorite groups after mapping and resolution.
Example:
favourites:
- cluster: series
group: "My Favourites"
filter: 'Name ~ "Cinema"'
match_as_ascii: true
watch
Watches final group names and emits notifications when those groups change.
watch:
- 'FR - Movies \(202[34]\)'
- 'FR - Series'
Example source.yml
templates:
- name: ALL_CHAN
value: 'Group ~ ".*"'
inputs:
- type: xtream
name: my_provider
url: http://provider.example:8080
username: user
password: secret
sources:
- inputs:
- my_provider
targets:
- name: all_channels
output:
- type: xtream
- type: m3u
options:
ignore_logo: false
share_live_streams: true
filter: "!ALL_CHAN!"