Files
tuliprox/config/mapping.yml
T
euzuandGitHub 89a0f2f477 Feature/script egine (#954)
* Embedded rhai scripting for mapper
2026-10-30 22:23:08 +01:00

66 lines
2.0 KiB
YAML

mappings:
templates:
- name: bbc
value: 'Title ~ "^BBC"'
- name: documentary
value: '(Group ~ "(Documentary|Outdoor)")'
- name: entertainment
value: 'Group ~ "Entertainment"'
- name: pluto_tv
value: '(Caption ~ "Pluto TV") AND NOT(Caption ~ "Sports")'
- name: business
value: 'Group ~ "Business"'
mapping:
- id: iptv-org
match_as_ascii: true
mapper:
- filter: "!bbc!"
script: |
@Group = "BBC"
- filter: "!documentary!"
script: |
@Group = "Documentary"
- filter: "!entertainment!"
script: |
@Group = "Entertainment"
- filter: "!pluto_tv!"
script: |
@Group = "Pluto TV"
- filter: "!business!"
script: |
@Group = "News"
- filter: 'Input ~ "iptv-org"'
script: |
@Caption = concat(@Caption, " (iptv-org)")
# stage: after_epg runs once EPG channel IDs and logos are enriched.
# Uncomment to mirror the EPG channel id onto the channel name (sample only).
# - id: epg-name-sync
# stage: after_epg
# mapper:
# - filter: 'Name ~ ".*"'
# script: |
# epg = @epg_channel_id ~ "(.+)"
# match {
# epg => @Name = epg.1
# }
# A mapper rule may be written in Rhai instead of the mapper DSL: set `type: rhai`.
# `filter` is shared by both kinds; existing rules without `type` keep running as the DSL.
# - id: rhai-sample
# mapper:
# - name: tag sports channels
# filter: 'Group ~ ".*Sports.*"'
# type: rhai
# script: |
# if item.name.contains("Live") {
# item.group = "Live Sports HD";
# }
#
# let year = ctx.regex(item.title, "(?P<year>\\d{4})");
# if !year.is_empty() {
# item.group = "Movies " + year["year"];
# ctx.favourite(item, "By year");
# }