Shifts the start time of a dummy EPG's events by a chosen number of minutes, per source.
Dispatcharr's dummy EPG can already correct a scraped guide by a whole time zone. This plugin adds the minutes — for the common case where a provider's listed start time is simply wrong by a fixed amount, and no amount of time zone correction fixes it.
Event streams often carry a start time in the channel or stream name, which Dispatcharr's dummy EPG parses into a guide entry. Those scraped times are frequently early — the listing says 8:00, the stream doesn't actually come up until 8:10. Watching live, you shrug and wait. Recording unattended, you get a failed or partial recording, because the recorder connected to a stream that wasn't live yet.
The only time control Dispatcharr offers for a dummy EPG is the source/output time zone, which moves things in whole-hour (or half-hour) steps. There is no way to say "this particular guide runs ten minutes early."
Add a line like My Sports Events = 10 and every event from that dummy EPG
source moves ten minutes later. What moves with it:
- The guide slot shown in Dispatcharr's own guide view.
- The program times in the exported XMLTV and the XC EPG — so a downstream client such as Emby, Plex or Jellyfin schedules a recording at the adjusted time, which is the point of the whole exercise.
- Any time token rendered into your title, subtitle or description templates
(
{starttime},{starttime24},{starttime_long},{endtime*},{date}), so the text can't end up contradicting the slot it sits in.
What does not change:
- Program length. The end is still computed by Dispatcharr as
start + program duration, using that source's own setting — now measured from the adjusted start. A+10offset on a 180-minute duration gives you a slot ten minutes later that is still 180 minutes long. If you want a different length, change the source's Program duration as usual. - Any source you didn't list. Sources absent from the settings box are passed through completely untouched.
- Real XMLTV/Schedules Direct sources. Only dummy EPG sources go through the generator this plugin wraps.
- Any
stop:value in the stream name. Dispatcharr never reads it, and neither does this plugin.
- Download
dispatcharr_dummy_epg_offset.zipfrom the releases page. - In Dispatcharr, go to Plugins and import the zip.
- Enable it, then restart the Dispatcharr container. The plugin patches at import time, and a restart is the reliable way to get that patch into every worker process.
Open the plugin's settings and fill in Start offsets by dummy EPG source:
My Sports Events = 10
Overnight Racing = -5
# lines starting with # are ignored
- One
source name = minutesper line. A colon works as well as=. - The name must match the dummy EPG source's name on the EPG page. Matching ignores case and surrounding spaces. Use the List sources button to see the exact names.
- Positive minutes push the event later; negative pull it earlier.
- A source with no line here is left alone. An empty settings box means the plugin does nothing at all.
Changes take effect on the next guide request — no EPG refresh, no restart.
- Check status — confirms the patch is active, shows how many call sites are wrapped, lists the offsets it parsed, and reports any settings lines it could not understand.
- List sources — every dummy EPG source by exact name, with its current offset, and a flag for any source that has no time pattern to shift.
Open Dispatcharr's own Guide view. It is served by the same code path as the XMLTV your client downloads, so if the times look right there, your client will get the same thing. Compare a known event against the time in its stream name: the guide should show it offset by exactly the minutes you configured.
If nothing moved, hit Check status. The usual causes are a source name that doesn't match the EPG page, or a source with no time pattern configured.
- Verified against Dispatcharr 0.31.0.
- The source must have a time pattern with an
hournamed group; that is what the plugin locates and rewrites. Sources without one are reported by List sources and skipped. - If the pattern captures no
minutegroup, only whole-hour offsets can be represented; anything else is logged and skipped. - Crossing midnight is handled when the source also has a date pattern
with numeric
year/month/daygroups — the date rolls with the time. With no date pattern, the event stays on the same day and a warning is logged. - Month names (
Sep,September) in a date pattern are understood, but a midnight rollover cannot rewrite them; that case is logged and the date left as-is.
If anything goes wrong — an unparsable pattern, an unexpected error — the plugin logs it and falls through to Dispatcharr's unmodified output. It will not stop your guide from rendering.
Disabling or deleting the plugin restores Dispatcharr's original behavior immediately; the next guide request uses the unmodified start times. No data is migrated or left behind — the plugin stores nothing except its own settings.
MIT — see LICENSE.