Members

(static, constant) STILL_WATCHING_KEYPRESS_PRECISION_SECONDS

TimeSinceLastKeypress counts whole seconds while UpTime has fractions, so a press within this long after a video started cannot be told from the press that started it. Only a press later than this counts as "during" the video.

Default Value
  • 1

(static, constant) STILL_WATCHING_MIN_VIDEOS_FOR_TIME_LIMIT

The time limit applies only from this many unattended videos in a row, so one long video (a movie) never uses up the whole limit by itself.

Default Value
  • 2

(static, constant) STILL_WATCHING_RESPONSE_SECONDS

How long the prompt waits for an answer before the video pauses.

Default Value
  • 30

Methods

(static) newStillWatchingSession(nowSeconds) → {object}

A new session: the player route mounted, or the viewer skipped to another item. Either way a button press (or a voice / app command) started the video now playing.

Parameters:
NameTypeDescription
nowSecondsfloat

UpTime(0)

Returns:

{ unattendedCount, itemStartedAt, lastActivityAt }

Type: 
object

(static) stillWatchingOnActivity(session, nowSeconds) → {void}

Someone is there without pressing a button: a voice or Jellyfin app command, the prompt answered, or playback resumed after the prompt paused it.

Parameters:
NameTypeDescription
sessionobject

from newStillWatchingSession

nowSecondsfloat

UpTime(0)

Returns:
Type: 
void

(static) stillWatchingOnAdvance(session, thresholds, secondsSinceKeypress, nowSeconds) → {boolean}

A video ended and the queue is moving on to the next one by itself. Records whether the video that ended was unattended and returns whether to ask before the next one plays.

Idle time is the shorter of "since the last button press" and "since the last activity": a voice or Jellyfin app command presses no button.

Parameters:
NameTypeDescription
sessionobject

from newStillWatchingSession

thresholdsdynamic

from stillWatchingThresholds (invalid = off)

secondsSinceKeypressinteger

roDeviceInfo.TimeSinceLastKeypress()

nowSecondsfloat

UpTime(0)

Returns:

true to ask

Type: 
boolean

(static) stillWatchingThresholds(option) → {dynamic}

The thresholds for a playbackStillWatching value, or invalid when the prompt is off. An empty or unrecognized value is the default preset, so a bad registry value never silently disables the check.

Parameters:
NameTypeDescription
optionstring

playbackStillWatching ("disabled", "short", "default", "long", "veryLong")

Returns:

{ count, seconds } or invalid

Type: 
dynamic