Releases: PiratesIRC/Dispatcharr-Channel-Maparr-Plugin
v1.26.1430910 — Alias matching, per-channel logos, Show Status
Major feature release plus a batch of matching-accuracy fixes ported from sibling plugin Lineuparr. Upgrade is recommended for all users — the new alias system and matching guards measurably improve both match recall and false-positive rejection.
✨ New features
🔍 Alias Stage 0 matching
A 200+ entry curated map of canonical channel names ↔ common variants ships in aliases.py. Hits run as an O(1) lookup before fuzzy stages — faster, more reviewable, and safer than fuzzy scoring on noisy provider strings.
Examples that previously missed and now hit at score 100:
FNC→Fox News ChannelCSPAN 2→C-SPAN2CA: RDS→Réseau des Sports (RDS) HDUK: Aljazeera English→Al Jazeera EnglishUS: NBC GOLF CHANNEL→Golf Channel
Users can extend with their own via FuzzyMatcher.set_user_aliases({canonical: [variants]}).
🎨 Per-channel logos from tv-logos repo
New Apply Per-Channel Logos action fuzzy-matches each channel name to the tv-logo/tv-logos GitHub repo and assigns individual artwork in bulk. Iterates across the country codes set in Channel Databases. Channels with an existing logo are skipped. Uses the GitHub Git Trees API so directories with >1000 logos (e.g. united-states) return complete results.
ⓘ Show Status action
A persistent progress file at /data/channel_mapparr_progress.json lets the new Show Status button report live progress, ETA, and the most recent completion summary — without watching container logs. Survives container restarts (a stale-run warning fires if updates stop for >2 minutes).
ℹ️ Help text on every setting
All 15 settings fields now carry a one-sentence explanation visible in the Dispatcharr settings panel.
🎯 Matching accuracy improvements
Each item has a curated regression test case in the dev test harness (46/46 baseline + 14/14 user-report cases passing).
- Callsign denylist (50 K/W-shaped English words: WITH, WATCH, WWE, KING, KIDS, WORLD, …) prevents extracting program-title words as US broadcast callsigns. No more
Bizarre Foods with Andrew Zimmern→ callsignWITH. - Callsign confidence flag — high-confidence (parenthesized/end-of-name) vs. low-confidence (loose mid-name). Loose matches no longer floor or hard-reject a fuzzy candidate.
- CamelCase + number-word + dot normalization —
JusticeCentral.TV→Justice Central TV,BBC Three↔BBC 3. - East/West parenthetical preservation —
Cartoon Network (W)→Cartoon Network Westso zoned variants survive normalization. - Multi-token country prefix —
CA FR: RDS,US ES:,UK FHD:now strip the whole prefix instead of leaving the first token stranded. - Smarter token-overlap guard —
network/channel/televisiondemoted to common; new subset, divergent, and numeric-sibling guards catch:BBC One≠BBC Two(sibling-number divergence)Sky Cinema Disney≠Sky Cinema Decades(distinctive-token divergence)ABC News≠BBC News(no shared distinctive token)In Country Television≠Country Music Television(subset with distinctive extra)
- Trailing-number anchor —
ESPN 1,HBO 2no longer match siblings likeESPN2orHBO 3. - Inside-loop guards — previously a high-scoring but guard-rejected candidate could suppress a lower-scoring valid one. Fixed in all three matching pipelines.
🐛 User-reported fixes folded in
- Canadian French sports (
CA: RDS,CA: RDS 1,CA FR: RDS HD,CA: TSN 5 RAW, etc.) — root cause was the parenthesized(RDS)in the canonical DB name being stripped during normalization. Fixed with 13 Canadian alias entries plus the multi-token country prefix fix. - CSV "Match Type: None" for unmatched rows — cosmetic only, now writes empty string for cleaner reports.
- Plugin loader rejected astral-plane emoji button labels (🎨 / 📊) — silently dropped the entire action. Swapped to BMP symbols (
❖,ⓘ). - Progress file unwritable — moved from plugin dir (owned by root) to
/data/(matching other Dispatcharr plugins' convention).
📦 Installation
- Download
Channel-Maparr.zipfrom this release. - In Dispatcharr, go to Plugins → Import Plugin, upload the zip.
- If upgrading from an older version, delete the old plugin first, then
docker restart dispatcharrbefore importing. - After install, run Validate Settings, then your usual flow.
📚 More info
- Full feature list and settings reference: README.md
- Workflow guide: https://piratesirc.github.io/Dispatcharr-Plugin-Workflow/workflow/02-channel-mapparr/
- Issues / discussion: Discord
🤖 Co-authored with Claude Code
v1.26.1001200
Major Performance & Reliability Release
M3U import matching reduced from 32 hours to 6 seconds (19K streams vs 31K channels).
Performance
- Token-based candidate pre-filter — Inverted index reduces fuzzy match candidates from 31K to ~50-200. Applied to all matching code paths. 19,200x speedup on M3U import.
rapidfuzzintegration — Conditional import:rapidfuzz(10-100x faster) →thefuzz→ built-in Levenshtein.- Early termination in Levenshtein —
min_ratioparameter with length pre-check and row-level abort. Dynamic cutoff raises as better scores are found. - Django query optimizations —
.only()on stream fetches, stream prefetching before import loop, removed unnecessaryselect_related. - Normalization caching — Pre-computed normalizations for all names in a single pass.
Reliability
- Atomic CSV writes —
tempfile+os.replace()prevents corrupt partial writes. Orphan temp files cleaned up on exception. - Background threading for Organize by Category — Prevents uwsgi worker timeout on long-running operations.
- Prefetch safety — Graceful handling of streams deleted between prefetch and import.
New Features
- Match sensitivity presets — Relaxed (70), Normal (80), Strict (90), Exact (95) dropdown.
- Dynamic M3U source dropdown — Populated from database instead of manual text input.
- ProgressTracker — WebSocket updates with percentage and ETA for long operations.
- SmartRateLimiter — Configurable delay between DB writes (None/Low/Medium/High).
match_all_streams()method — Returns all matches above threshold sorted by score.- PluginConfig class — Centralized configuration constants.
- Stop/cancel support — Background operations can be cancelled via the UI.
Cleanup
- Removed legacy files (
channels.json,channels.txt,networks.json). - Updated README with current features, settings, performance docs, and troubleshooting.
Upgrading from 0.7.0a
This is a major upgrade. Remove the old plugin, restart Dispatcharr, and install the new zip. All settings will need to be reconfigured.
0.7.0a
Compatibility for Dispatcharr 0.2x
0.5.1
Updated channel databases
0.5.0
Channel Mapparr Plugin Changelog
Version 0.5.0
New Features
- Added support for multiple country databases (US, UK, CA, AU, etc.) via the "Channel Databases" setting.
- Added "Organize Channels by Category" action to move channels into groups based on their category data.
- Added automatic plugin version checking to notify users of updates from GitHub.
- Added "Clear CSV Exports" action to remove old preview files.
Improvements & Configuration
- Added configurable "Fuzzy Match Threshold" setting (0-100) to fine-tune matching sensitivity.
- Added API token caching (30 minutes) to reduce authentication requests to the server.
- Added robust handling for 401 Unauthorized API responses to automatically refresh invalid tokens.
- Replaced the full M3U refresh trigger with a lighter WebSocket frontend refresh trigger.
- CSV exports now include a header section containing the settings used during the run.
Refactoring
- Moved core matching logic to a separate
FuzzyMatchermodule for better maintainability. - Updated file handling to support loading multiple JSON database files dynamically.
- Increased default timeouts for API requests.
0.2
Channel Mapparr Plugin - Version 0.2 Changelog
New Features
-
Ignored Tags Field: Configure tags to remove during matching
- Default:
[4K], [FHD], [HD], [SD], [Unknown], [Unk], [Slow], [Dead] - Case-insensitive matching
- Automatically handles both bracket
[HD]and parentheses(HD)versions
- Default:
-
Enhanced OTA Channel Support
- Improved Prefix Handling: Now handles multiple US/USA prefix formats such as
US:,USA:,US -,USA -,US |and variations. - Better Callsign Extraction:
- Extracts callsigns from formats like
(WMTW-PORTLAND MAINE)→WMTW. - Rejects false positives like
KIDS,WOMEN,EAST,WEST.
- Extracts callsigns from formats like
- Smart Fallback Logic: Only attempts premium matching when NO callsign is found, which prevents OTA channels from incorrectly matching premium channels.
- Improved Prefix Handling: Now handles multiple US/USA prefix formats such as
-
Premium/Cable Channel Improvements
- Regional Indicator Positioning: Regional tags are now placed immediately after the channel name.
- Before:
HBO Comedy (H) West - After:
HBO Comedy West (H)✅
- Before:
- Enhanced Normalization: Better handling of channel name variations and prefixes.
- Regional Indicator Positioning: Regional tags are now placed immediately after the channel name.
Code Quality
- Removed Debug Logging: Cleaner output with only essential information.
- Improved Error Handling: Better feedback for missing data files and API errors.
Bug Fixes
- Fixed an issue where prefixes like
(SP2)were being preserved in final names. - Fixed regional indicator extraction for standalone words (not just those in parentheses).
- Fixed ignored tags not being properly removed during matching.
v0.1
Initial Release