Ground-up rewrite of the matching engine, a new EPG-matching pipeline, and a Dispatcharr v0.20.0+ UI overhaul.
New matching engine
- 4-stage fuzzy pipeline ported from Lineuparr: alias → exact → substring → token-sort, with length-scaled thresholds and token-overlap guards to reduce false positives
- Built-in alias table with ~200 channel aliases: FS1/FS2, CSPAN variants, rebrands (EPIX → MGM+, MSNBC → MS NOW, getTV → GREATTV, DIY → Magnolia, Hallmark Movies & Mysteries → Hallmark Mystery, Justice Network → True Crime Network)
- Custom aliases via new
custom_aliasesJSON setting, merged on top of built-ins - Channel number boost for tiebreaking when EPG names contain matching 3+ digit numbers
- Regional differentiation (East/West/Pacific) runs whenever a lineup carries a regional marker — Pacific ≡ West, East won't match West-only feeds
- Per-category normalization toggles kept and refined: quality (
[HD],[4K]), regional (East/West/Pacific), geographic (US:,[CA]), misc ((A),(CX))
Scoring algorithm changes
- Auto-Match now runs the structural pipeline (callsign 50 / state 30 / city 20 / network 10) AND the fuzzy pipeline independently per EPG candidate, takes the higher score. Identical-name matches score 100 (previously capped at 50)
- Alias matches score ≥95 — user-curated mappings are treated as authoritative
- Network-keyword match is now a tie-breaker — only adds +10 when other structural signals are already present
- Scan & Heal walks ranked candidates and picks the first replacement that has program data and belongs to an eligible source
Normalization improvements
&→andconversion (soU&YESTERDAYmatchesU and YESTERDAY)+preserved as a brand distinguisher (Discovery+≠Discovery Channel,Disney+≠Disney)Network/Channel/TVsuffix stripping now requires ≥2 tokens to remain (soComedy TVdoesn't collapse toComedy,Justice Networkdoesn't matchJustice Central)- Callsign extractor excludes wrestling show abbreviations (
WWE,WWF,WCW) that were hitting as false-positive US broadcast callsigns - Alias lookup tolerates trailing/leading whitespace on lineup names
Performance
- Pre-normalization cache warms the matcher once per run — dramatic speedup on large EPG databases
- Per-EPG attribute cache eliminates ~63M redundant regex calls per run (callsign/location extraction done once per EPG entry, not once per channel × EPG)
- Typical runtime on a 21,480-EPG / 2,950-channel database: ~7–8 minutes (previously 10+)
UI overhaul (Dispatcharr v0.20.0+)
min_dispatcharr_version: v0.20.0declared in plugin.json- Section dividers organize settings into Scope / Auto-Match / Scan & Heal / Cleanup & Maintenance / Normalization Toggles / Custom Aliases
- Textarea inputs for multi-value comma-separated fields — accept commas or newlines as separators
- Help text on every setting
- Placeholder examples on every string/textarea field
- Color-coded action buttons with
button_variant,button_color, emoji labels - Confirmation dialogs on all destructive actions
- Plugin logo (logo.png) ships in the distribution
Breaking changes
ignore_regional_tags=falsenow actively filters candidates, not just normalization. Default remainstrue.- Version scheme adopts Lineuparr-style
1.YY.{DDD}{HHMM}(day-of-year + 24h local time) min_dispatcharr_version: v0.20.0— older Dispatcharr versions will not render the new UI primitives
Settings preservation
All setting IDs from 0.7.0a are unchanged. Upgrading preserves every existing value automatically (Dispatcharr's PluginConfig.settings JSON is not touched on plugin reload). The new custom_aliases field defaults to empty.
Installation
- Download
EPG-Janitor.zipbelow - In Dispatcharr: Plugins → Import Plugin, upload
- Enable the plugin
Compare with previous stable: 0.6.1...v1.26.1021336