Incorrect EIT and description sometimes loaded for short IceTV timers

Issue #449 new
prl created an issue

If a short show is recorded from IceTV and the padding is long enough and unbalanced, the incorrect EIT and description will be assigned to the shows when the timer is loaded into the Beyonwiz from IceTV. The timer's name will be correct because that is set explicity by the IceTV timer data, while the EIT and description are searched for by time in the EPG.

The problem is in RecordTimer.RecordTimerEntry.getEventFromEPG(). It tries to find the EPG entry matching the timer by taking the midpoint of the timer's run time and looking it up in the EPG. However, if the timer's duration and padding is such that

postpadding - prepadding > programduration

(where programduration is the program's actual EPG duration, not the duration of the timer) a following program's EPG entry will be matched instead of the correct EPG.

Similarly, if

prepadding - postpadding > programduration

a previous program's EPG entry will be matched instead of the correct one, but that condition, where pre-padding is considerably longer than post-padding, is not encountered in the usual users' padding setup.

If RecordTimer.RecordTimerEntry.__init__() is using RecordTimer.RecordTimerEntry.getEventFromEPG() to find the program name, description or EIT, then under those conditions, the name, description or EIT will be set incorrectly in the timer.

This has the effect that the timer's description of the show will be incorrect, and that in the graphical EPG, the Change Timer action on GREEN will be on the incorrect show, and the EPG slot for the actual show will incorrectly show Add Timer on GREEN.

The underlying problem causing this bug that timers lack the information needed to accurately remove padding when trying to match the timer against the EPG. This is also the underlying cause of bug #450, and of problems caused in AutoTimers when "Guess existing timer based on begin/end" is enabled.

However, because this bug affects only IceTV timers, a workaround would be to remove the current padding from only IceTV timers in RecordTimer.RecordTimerEntry.getEventFromEPG() before calculating the time midpoint for the EPG search.

The set of bugs caused by the lack of padding information can only be properly fixed by adding explicit padding information to timers.

Replication steps

Enable IceTV and update the EPG & timers.

Select values of pre- and post-padding and a short show in the EPG so that the conditions of one of the above inequalities are satisfied. Create a recording for the show in IceTV and do a "Fetch EPG and update timers now" in the EPG plugin menu.

Enter the Graphical EPG (any form), and navigate to the EPG entry for the newly created timer. It will show the description for the wrong show, and its GREEN button hint will be labelled Add Timer instead of Change Timer. Change Timer will be incorrectly set on the GREEN button hint on a following program.

Comments (1)

  1. Log in to comment