-
Notifications
You must be signed in to change notification settings - Fork 174
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Movies with commercials can get marked as Watched too early #242
Comments
Are you sure this is using 'runtime'? Sage on it's own doesn't really KNOW about runtime, as far as I know - an airing has it's duration, and I think that is it. The way the watched status gets set IS different between a movie and other media, but this is only different in the absolute time at the end that is used. A movie will be marked watched if it's watched duration is within 10 minutes from end, while a non-movie will be watched if it's watched duration is within 5 minutes from the end. This difference is done to accommodate the added length of a movie's credits, and the likelihood that you'll stop watching when the credits start. There is an additional check that the watched duration needs to be at least 66% of the show's full duration, to limit setting watched too early in very short airings. |
Sure there's a runtime value -- check out the detailed info pages for some movies. They may not all have it, but it can be there. And, I'm basing this on my conversation with Jeff a couple weeks ago regarding a possible reason for a 3:30 movie getting marked as watched after watching 2:30 of it :) |
My point was that the watched logic is using the Airing objects 'duration' property, which SHOULD be the length of the recording, not the runtime of the movie. That, to me, would be what should be fixed if anything. |
The 'Run Time' on the detailed info is the duration of the 'Show' object, which the watched logic doesn't seem to look at. |
The watched logic does use the Show duration as priority over that Airing
duration when performing the check.
Jeff Kardatzke
Sent from my Android
…On Jan 9, 2017 8:02 AM, "Christopher Piper" ***@***.***> wrote:
The 'Run Time' on the detailed info is the duration of the 'Show' object,
which the watched logic doesn't seem to look at.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
<#242 (comment)>, or mute
the thread
<https://github.com/notifications/unsubscribe-auth/ANEIDLJbvPPTAY_fhh-OI2h77EjsD_mCks5rQloCgaJpZM4LdGx8>
.
|
Hmmm.. I had jumped right to the BigBrother.isFullWatch() function, and saw it just looking at the airing - for some reason I skipped right over most of the isWatched() function. Even there, I don't see where it's looking at the Show's duration anywhere, just checks the Show.isWatched(), which seems to return true even if 1 millisecond of the show is watched (lastWatched > 0). |
It seems to be handled in BigBrother.java around this line, where it has chosen to use the show's duration: |
Yup, lines 239-240 is where it overrides the Airing duration with the Show
duration.
And the lastWatched field in Show isn't a duration...it's the time it was
last watched completely at. This is how when you have multiple Airing
objects pointing at the same Show they will all indicate it is Watched.
Watched objects themselves point to Airing objects...not Show
objects...which is why that is there.
Fixing Andy's request just requires changing the logic on line 239 to
ignore s.duration as well if it's a certain factor less than the Airing
duration. Now that I've spent so much time looking at this...I might as
well fix Andy's request now too. :)
…On Mon, Jan 9, 2017 at 10:31 AM, andyvshr ***@***.***> wrote:
It seems to be handled in BigBrother.java around this line, where it has
chosen to use the show's duration:
validDuration = s.duration;
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<#242 (comment)>, or mute
the thread
<https://github.com/notifications/unsubscribe-auth/ANEIDHLEFJHV5OSOdyqBvkSDG_Oi9y2Wks5rQnz4gaJpZM4LdGx8>
.
--
Jeffrey Kardatzke
jkardatzke@google.com
Google, Inc.
|
Just want some feedback on my logic before I commit this. Here's what I
changed:
static final long MIN_FOR_SHOW_DURATION_SKIP_CHECK =
75*Sage.MILLIS_PER_MIN;
static final double MAX_RATIO_FOR_SHOW_DURATION_SKIP = 0.75;
then
if (s != null && s.duration > 10000 && s.duration < a.duration && //
ignore running times that are in the wrong units
(s.duration < MIN_FOR_SHOW_DURATION_SKIP_CHECK ||
((double)s.duration)/a.duration > MAX_RATIO_FOR_SHOW_DURATION_SKIP))
validDuration = s.duration;
before it was this:
if (s != null && s.duration > 10000 && s.duration < a.duration) //
ignore running times that are in the wrong units
validDuration = s.duration;
The goal with the change is that we use the old logic if the running time
is less than 75 minutes...this is to cover cases where I don't think we can
really confirm that it's not just a movie channel putting padding on the
show to align timeslots vs. actual commercials extending it. So with that
floor, at least 20 minutes of commercials need to be added for this new
logic to kick in. I'm going with the rule that generally there are about 16
minutes of commercials per hour...so I put the threshold at 15 minutes per
hour (and really, how often do the ever show LESS commercials than that).
To simplify, if the running time is more than 75 minutes, and the running
time is less than 75% of the airing duration, we will not use the running
time for determining if the whole thing was watched and instead use the
airing duration. (we still apply the extra 10 minutes ignore time though
because it's a movie).
On Mon, Jan 9, 2017 at 11:04 AM, Jeffrey Kardatzke <jkardatzke@google.com>
wrote:
… Yup, lines 239-240 is where it overrides the Airing duration with the Show
duration.
And the lastWatched field in Show isn't a duration...it's the time it was
last watched completely at. This is how when you have multiple Airing
objects pointing at the same Show they will all indicate it is Watched.
Watched objects themselves point to Airing objects...not Show
objects...which is why that is there.
Fixing Andy's request just requires changing the logic on line 239 to
ignore s.duration as well if it's a certain factor less than the Airing
duration. Now that I've spent so much time looking at this...I might as
well fix Andy's request now too. :)
On Mon, Jan 9, 2017 at 10:31 AM, andyvshr ***@***.***>
wrote:
> It seems to be handled in BigBrother.java around this line, where it has
> chosen to use the show's duration:
> validDuration = s.duration;
>
> —
> You are receiving this because you commented.
> Reply to this email directly, view it on GitHub
> <#242 (comment)>, or mute
> the thread
> <https://github.com/notifications/unsubscribe-auth/ANEIDHLEFJHV5OSOdyqBvkSDG_Oi9y2Wks5rQnz4gaJpZM4LdGx8>
> .
>
--
Jeffrey Kardatzke
***@***.***
Google, Inc.
--
Jeffrey Kardatzke
jkardatzke@google.com
Google, Inc.
|
I was all set to say it sounded fine to me, but then I checked out the recorded movie from FX I had last tested this against. It actually shows a run time of 2:45 and an airing time of 3:30, so 165/210 is a ratio of about 0.79. Based on those times, it seems to have 12.9 minutes of commercials per hour, which is a lot less than I thought any movie would have. Assuming half-hour time slots, I wonder if my original idea of allowing more time for commercials in longer movies is not a good idea and just check that the difference is more than a 30 minute time slot? Would any commercial-free channels really have more than 30 minutes of dead time between shows? |
Andy and I chatted about this and after looking at various examples came to
the conclusion that this should just be based on an absolute difference. If
the running time is more than 20 minutes less than the airing duration;
then use the airing duration for overall length. Much simpler
logic...commit coming. :)
…On Mon, Jan 9, 2017 at 11:48 AM, andyvshr ***@***.***> wrote:
I was all set to say it sounded fine to me, but then I checked out the
recorded movie from FX I had last tested this against. It actually shows a
run time of 2:45 and an airing time of 3:30, so 165/210 is a ratio of about
0.79. Based on those times, it seems to have 12.9 minutes of commercials
per hour, which is a lot less than I thought any movie would have.
Assuming half-hour time slots, I wonder if my original idea of allowing
more time for commercials in longer movies is not a good idea and just
check that the difference is more than a 30 minute time slot? Would any
commercial-free channels really have more than 30 minutes of dead time
between shows?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<#242 (comment)>, or mute
the thread
<https://github.com/notifications/unsubscribe-auth/ANEIDMpS5taVBE_gcvS3gTX678IVZLs8ks5rQo8JgaJpZM4LdGx8>
.
--
Jeffrey Kardatzke
jkardatzke@google.com
Google, Inc.
|
…ercials This is done by only using the running time for a movie if it is within 20 minutes of the Airing duration. Otherwise, we use the airing duration which would allow for commercials. Fixes issue #242
While looking in that code, and unrelated tho this issue, is there a reason to use Sage.MILLIS_PER_MIN instead of just 60000L? I ask mainly because there are quite a few statics already using 60000L. |
No particular reason. :)
…On Mon, Jan 9, 2017 at 4:07 PM, Christopher Piper ***@***.***> wrote:
While looking in that code, and unrelated tho this issue, is there a
reason to use Sage.MILLIS_PER_MIN instead of just 60000L? I ask mainly
because there are quite a few statics already using 60000L.
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub
<#242 (comment)>, or mute
the thread
<https://github.com/notifications/unsubscribe-auth/ANEIDG4qMJNQgH9P_Z0LY2lVCkpXv1QKks5rQsvPgaJpZM4LdGx8>
.
--
Jeffrey Kardatzke
jkardatzke@google.com
Google, Inc.
|
…ercials This is done by only using the running time for a movie if it is within 20 minutes of the Airing duration. Otherwise, we use the airing duration which would allow for commercials. Fixes issue google#242
Current;y, a movie's run time is used to determine when the movie has been fully watched, but this has can cause a problem when the movie is on a channel that has commercials. So, for example: if the run time is listed as 2:30, but the airing time is 3:30, then stopping the movie after or near the 2:30 mark will mark the movie as watched and it will restart instead of resume the next time it is played.
A potential fix for this could be to ignore the run time value if the airing time is much longer -- perhaps consider 10-20 minutes per hour to be commercial filler and ignore the run time if the per hour difference is larger than that. This would take into account shorter and longer movies, rather than just looking for a run time vs airing time difference of 20-30 minutes overall.
The text was updated successfully, but these errors were encountered: