Skip to main content
tuliprox gives you two editorial layers:
  1. Filters — decide which channels survive into a target.
  2. Mapping — rename, regroup and enrich the channels that pass.
Both layers share the same template system for reusable expressions.

Filter DSL

Filters are string expressions evaluated against each playlist entry.

Fields

Operators

Regex syntax follows the Rust regex crate. Use (?i) for case-insensitive matching. For interactive testing, regex101.com works well when the Rust flavour is selected.

Basic examples

Include all channels:
Only shopping channels:
Exclude shopping channels:
Only live channels:
Exclude a single channel by title:
Exclude a channel only within a specific group:

Combining operators

Template system

Templates let you name reusable filter fragments and reference them with !name! syntax.

Defining templates

source.yml

Using templates in targets

source.yml
Templates can also be shared across files. Set template_path in config.yml to a file or directory of *.yml files:
config.yml
Templates can also be used inside regex patterns by embedding them inline:
mapping.yml
Referenced in a pattern as:

Rename rules

Simple group/channel renaming is available directly on a target without a full mapper:
source.yml
field can be group, title, name or caption. pattern is a Rust regex; new_name supports $1, $2 capture-group references.

Mapper DSL

For complex transformations, define a mapping.yml and reference the mapping ID from the target.

Structure of mapping.yml

mapping.yml
Reference the mapping from a target:
source.yml

Playlist field variables

Access playlist fields with the @Field syntax: Assigning to @Group, @Caption etc. changes the value in the output.

Built-in functions

Regex captures

Capture groups from a regex match are accessed with .1, .2 etc.:
Named captures use the capture group name:

match blocks

map blocks

for_each

Iterate over split values or capture groups:

Complex mapping example

This script groups French channels into quality and category buckets:

Grouping by release year

Counters

Counters append or prepend an incrementing number to a field:
mapping.yml

Processing order

By default tuliprox applies Filter → Rename → Map. Change this with processing_order:
source.yml
Valid values: frm, fmr, rfm, rmf, mfr, mrf (f = filter, r = rename, m = map).