Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,34 @@
# Stream-Mapparr CHANGELOG

## 1.26.2561754 (2026-09-13)

### Added

- **Run After IPTV Checker Scan, a new setting in the IPTV Checker Integration
section.** When the IPTV Checker plugin finishes a scheduled scan that reached
the end of its channel list, it now calls this plugin directly and the
scheduled steps run at once: Sort Alternate Streams and Match and Assign,
whichever the schedule has ticked. Until now the only way to sort against a
fresh scan was to guess when the scan would end and set the fixed time after
it. IPTV Checker must have its own Trigger Stream-Mapparr After Scheduled
Check setting on. A run already holding the operation lock is left alone and
nothing is queued; the next scan tries again.

Dispatcharr's event system was not usable for this, because it drops any
event name outside its fixed list, so the hand-off is an in-process call
through the plugin manager, the same call Dispatcharr makes for its own M3U
refresh event. The new hidden action `on_iptv_checker_scan` receives it.

### Changed

- The fixed-time scheduler and the new trigger run one shared sequence, so the
two cannot drift apart. The wait for a running IPTV Checker and the
scheduled-run timestamp behind Validate Settings belong to the fixed-time
path only: a triggered run starts because the scan just finished, and the
timestamp means the timer fired.
- The CSV header's `Execution Mode` line reads `Scheduled (after IPTV Checker
scan)` for a triggered run, so a report says who started it.

## 1.26.2491549 (2026-09-06)

### Added
Expand Down
13 changes: 13 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,9 @@ database. This plugin modifies channel and stream assignments.
slot rather than once per worker
- **Auto-match after M3U refresh** (opt-in, Dispatcharr v0.27+): run Match and
Assign as soon as a refresh completes. Requires a Channel Profile
- **Run after an IPTV Checker scan** (opt-in): run the scheduled steps the
moment the IPTV Checker plugin finishes a scheduled scan, so sorting sees the
fresh results instead of waiting for the next fixed time
- **Rate limiting**: None, Low, Medium or High
- **Operation lock**: prevents concurrent tasks, auto-expiring after 10 minutes
- **Dry run mode**: preview results with a CSV export and no changes
Expand Down Expand Up @@ -189,6 +192,7 @@ the operation lock prevents concurrent runs and auto-expires after 10 minutes.
| **Custom Ignore Tags** | string | (none) | Tags to strip before matching, for example `[Dead], (Backup)` |
| **Wait for IPTV Checker Completion** | boolean | False | Hold a scheduled run until IPTV Checker has finished, so matching sees fresh stats |
| **IPTV Checker Max Wait (hours)** | number | 2 | How long to wait before running anyway |
| **Run After IPTV Checker Scan** | boolean | False | When IPTV Checker finishes a scheduled scan, run the scheduled steps (Sort Alternate Streams and Match and Assign, whichever are ticked). IPTV Checker needs its own `Trigger Stream-Mapparr` setting on |
| **Enable CSV Export** | boolean | True | Write a CSV on a scheduled Match and Assign run. A dry run always writes one |
| **Delete CSV Exports Older Than (Days)** | number | 0 | Remove this plugin's older reports after each new one is written. 0, the default, keeps everything. Only files this plugin wrote are ever considered, because that directory is shared with other plugins. The newest report and the one just written always survive |
| **Tag Handling** | select | Strip All | Strip All, Keep Regional, or Keep All |
Expand Down Expand Up @@ -263,6 +267,15 @@ runs are coalesced under a lock and a follow-up pass catches any account that
finishes mid-match. A multi-account refresh therefore produces one effective
match rather than one per account.

**After an IPTV Checker scan**: **Run After IPTV Checker Scan** runs the same
steps the fixed times run (Sort Alternate Streams and Match and Assign,
whichever are ticked) when the IPTV Checker plugin finishes a scheduled scan
that reached the end of its channel list. IPTV Checker calls this plugin
directly, so its own **Trigger Stream-Mapparr After Scheduled Check** setting
must be on as well. A run already in progress is left alone and the next scan
tries again. The CSV header for such a run reads `Scheduled (after IPTV
Checker scan)`.

## CSV Reports

Preview and scheduled exports are saved to `/data/exports/` and include:
Expand Down
2 changes: 1 addition & 1 deletion Stream-Mapparr/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,5 @@

from .plugin import Plugin

__version__ = "1.26.2491549"
__version__ = "1.26.2561754"
__all__ = ["Plugin"]
7 changes: 6 additions & 1 deletion Stream-Mapparr/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "Stream-Mapparr",
"version": "1.26.2491549",
"version": "1.26.2561754",
"description": "Automatically add matching streams to channels based on name similarity and quality precedence. Supports unlimited stream matching, channel visibility management, and CSV export cleanup.",
"author": "PiratesIRC",
"license": "MIT",
Expand All @@ -18,6 +18,11 @@
"m3u_refresh"
]
},
{
"id": "on_iptv_checker_scan",
"label": "Run after IPTV Checker scan",
"description": "Called by the IPTV Checker plugin when a scheduled scan finishes. Runs the scheduled steps when 'Run After IPTV Checker Scan' is enabled in settings."
},
{
"id": "validate_settings",
"label": "✅ Validate Settings",
Expand Down
Loading