A new hide rule for event names that carry a time but no date
Some providers name an event channel with a start time and no date at all, such as
Boxing 3 : MOSES vs HRGOVIC 4:00pm. Until now the only rule that could act on such a
name was [UndatedAge:days], which counts whole calendar days. That hides a late-evening
event at midnight, and keeps a finished one until the next day.
[UndatedEnded] works out when the event actually ended. It takes the date the channel
was first seen, adds the time read from the name, adds the event duration and time pattern
from the dummy EPG source the channel is bound to, and adds a grace period you set. Once
that moment has passed, the channel is hidden.
A new setting, Undated Event Grace Period (Hours), controls how long a channel stays
visible past the computed end. It defaults to 1 hour. Raise it for events that overrun.
The tag also accepts its own number, as [UndatedEnded:2].
Turning it on
[UndatedEnded] is in the default rule list, immediately before [UndatedAge:2].
An existing installation keeps the rule list it has saved, because Dispatcharr never
rewrites a setting you have stored, so add the tag to Hide Rules Priority by hand.
Put it before [UndatedAge:2], so the rule that knows the actual event time decides
before the one that only counts days.
Four things worth knowing
- It controls visibility only. Dispatcharr renders a dateless time as a programme that
repeats every day. The repeated guide entry stops when the channel is hidden, not before. - The hide happens on the next scan, so a scheduled run shortly after your latest
events end is worth configuring. - Keep
[UndatedAge:days]in the list after it as the outer bound, for a channel whose
first-seen record was written late. - A channel that appears after its inferred window has already closed is left visible.
A channel first seen at 23:00 and named for a 1:00am event is named for the next 1:00am,
not the one that ended eighteen hours before anyone saw it.
A time pattern fix that affects every installation
The pattern that reads a clock time out of a channel name had no boundary after the "am" or
"pm" marker, so it could match the opening two letters of an ordinary word. Measured:
PPV 12 AMERICAN LEGENDS was read as midnight and ALI vs 8 AMATEUR BOUTS as 8 o'clock.
That was cosmetic while the pattern only titled a guide entry, but the new hide rule acts on
the time it returns, so a wrongly read time could remove a channel from your lineup. The
pattern now requires a boundary on each side of the clock time.
Your EPG source is upgraded automatically on the next applied run, provided you have not
customised its Time Pattern yourself. The plugin only replaces a pattern it recognises as
one of its own defaults, and the superseded one is now listed as such.
Reporting instead of silently substituting
When a setting cannot be read, the plugin now says so in the log, once per run, naming the
source and the value and saying what it used instead. This covers a time pattern that is not
a valid regular expression, a program duration that is not a whole number of minutes, an
unknown timezone, and a grace period that is not a number.
Related: several error handlers used to substitute a smaller number rather than give up. An
unreadable duration became zero minutes and an unreadable grace period zero hours, which did
not abandon the calculation but shortened it, hiding a channel earlier than any configured
value asked for. All of them now decline to act, leaving the channel visible.
A time pattern that compiles but matches nothing is now respected as meaning the name
carries no time, instead of falling back to the built-in pattern and undoing a narrowing you
configured on purpose. A pattern that does not compile at all still falls back, so a typing
mistake cannot stop names being read, and that substitution is logged.
Documentation
The development notes were corrected against the source: the code map listed four methods
that do not exist, the shipped-file table omitted two files that ship, and both the deploy
loop and the release runbook described procedures that do not work.
Closes #28.