I have
Late Night with Seth Meyers added as a Favorite set to record First Runs only, and I'm trying to figure out why episodes that are weeks old consistently appear with the First Run indicator and, therefore, get re-recorded. This is the only Favorite with which I have this problem. Some of these recordings I mark as Watched and some I don't, but I manually delete them all either way and, of course, it's the reruns marked First Run but not Watched that are causing problems.
For example, episode EP018423000730 is re-airing tonight. It has an Original Air Date of July 30th, 2018, yet also appears as a First Run. I notice that an hour earlier episode EP01711071015 of
The Tonight Show Starring Jimmy Fallon, which is not a Favorite, from July 26, 2018 will air, and it, too, is listed as a First Run.
Tomorrow night episode EP017211071010 of
The Tonight Show from July 19, 2018 will air, and it is
not listed as a First Run, but an hour later episode EP018423000733 of
Late Night from August 2nd, 2018 airs, which (incorrectly-but-still-consistently) is listed as a First Run.
The thread
Show called First Run even so it is Re-Run is about the same problem with the previous incarnation of
The Tonight Show, and there's some conversation about it being the fault of the EPG provider. I went so far as to query the SchedulesDirect JSON API directly for the metadata for those episodes and I see it only contains an
originalAirDate field but no flag indicating first run or rerun. SageTV (or the SchedulesDirect plugin?) must be deriving that information from somewhere, but evidently is not simply comparing the airing date to the original airing date.
From the above examples it seems anything re-airing within ~30 days is still being considered a First Run. In the thread
incorrect first run recordings Opus4 writes "First Runs are defined to be any show aired within the first week or so of its initial airing cycle", but does this fall within the definition of "or so" or is there something else going on here?
Edit: I found my answer in
the source code:
Code:
/**
* @return First Run state - defined as Live or New or within 28 days of the Original Air Date.
*/
public boolean isFirstRun() {
Show s = getShow();
return ((miscB & (LIVE_MASK | NEW_MASK)) != 0)
|| (s != null && ((time - s.originalAirDate) < 28 * Sage.MILLIS_PER_DAY));
}
28 days is the cutoff and it's hard-coded.