MrQuade wrote: ↑Sat May 20, 2017 12:47
Is any recording info populated from the now/next data rather than the EPG cache (when the appropriate options are selected)? There is one instance where mismatches may occur?
When a timer is created, its "description" attribute is extracted from the EPG event on its service that covers the midpoint of the recording timer (including padding if the timer is padded). This is the reason that if the post-padding is longer than the actual program being recorded, this information can be from the wrong program (in RecordTimer.RecordTimerEntry.getEventFromEPG()). The short description is used if it isn't empty, and the extended description is used if the short description is empty and the extended description isn't empty.
In IceTV, the short description is the episode name, if it's a series, and the long description is the synopsis. Movies and the like don't have short descriptions.
In the broadcast TV EPG, sometimes the short description is used, sometimes the extended description is used. Sometimes the short description is an episode name; sometimes the short and extended descriptions contain the same thing (which is why in some code handling the descriptions there are tests for whether the first 20 characters of the two are the same).
The name and description in the .meta file is created from the timer "name" and "description" attributes, after removing any newlines in them.
When a recording is in the prepare state, it will look up the event by the EIT id in the timer (timer "eit" attribute) and use that event for the short and extended descriptions (episode name and synopsis for IceTV). If that fails, it will look up the event by the recording timer's midpoint time. eEPGCache::saveEventToFile() (lib/dvb/epgcache.cpp) called from eDVBServiceRecord::prepare() (lib/service/servicedvbrecord.cpp).
The EIT id assigned to the timer can be wrong if you manually change the timer's start and end points.
I don't think Now/Next is used (or I haven't been able to see where it is used).