Files
euzuandGitHub 78df42ff28 Added Mapping Stage fpr mapper. (#798)
* **New Features**
  * Added configurable mapping stages for `mapping.yml`: `processing` (default) and `after_epg`.
  * `after_epg` mappings now run after EPG enrichment and can react to enriched EPG fields.
* **Bug Fixes**
  * Stage-aware playlist mapping: if no mappings match, the source is left unconsumed.
  * Mapping directory merges now reject conflicting stages for the same mapping id and report both files clearly.
* **Documentation**
  * Updated mapping DSL and target `processing_order` docs to describe stage timing and guarantees.
* **Tests**
  * Added coverage for stage-restricted mapping behavior, merge conflicts, and AfterEpg timing.
2026-07-22 14:31:19 +02:00

48 lines
1.3 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
# }