Fix correctly recording ended (not stopped!) video
This commit is contained in:
parent
4e85b65318
commit
8e1b77fcfe
1 changed files with 18 additions and 12 deletions
|
@ -22,9 +22,11 @@ LOG = getLogger("PLEX." + __name__)
|
||||||
|
|
||||||
|
|
||||||
@LOCKER.lockthis
|
@LOCKER.lockthis
|
||||||
def playback_cleanup():
|
def playback_cleanup(ended=False):
|
||||||
"""
|
"""
|
||||||
PKC cleanup after playback ends/is stopped
|
PKC cleanup after playback ends/is stopped. Pass ended=True if Kodi
|
||||||
|
completely finished playing an item (because we will get and use wrong
|
||||||
|
timing data otherwise)
|
||||||
"""
|
"""
|
||||||
LOG.debug('playback_cleanup called')
|
LOG.debug('playback_cleanup called')
|
||||||
# We might have saved a transient token from a user flinging media via
|
# We might have saved a transient token from a user flinging media via
|
||||||
|
@ -44,7 +46,7 @@ def playback_cleanup():
|
||||||
# Bookmarks might not be pickup up correctly, so let's do them
|
# Bookmarks might not be pickup up correctly, so let's do them
|
||||||
# manually. Applies to addon paths, but direct paths might have
|
# manually. Applies to addon paths, but direct paths might have
|
||||||
# started playback via PMS
|
# started playback via PMS
|
||||||
_record_playstate(status)
|
_record_playstate(status, ended)
|
||||||
# Reset the player's status
|
# Reset the player's status
|
||||||
status = copy.deepcopy(state.PLAYSTATE)
|
status = copy.deepcopy(state.PLAYSTATE)
|
||||||
# As all playback has halted, reset the players that have been active
|
# As all playback has halted, reset the players that have been active
|
||||||
|
@ -52,7 +54,7 @@ def playback_cleanup():
|
||||||
LOG.debug('Finished PKC playback cleanup')
|
LOG.debug('Finished PKC playback cleanup')
|
||||||
|
|
||||||
|
|
||||||
def _record_playstate(status):
|
def _record_playstate(status, ended):
|
||||||
with kodidb.GetKodiDB('video') as kodi_db:
|
with kodidb.GetKodiDB('video') as kodi_db:
|
||||||
# Hack - remove any obsolete file entries Kodi made
|
# Hack - remove any obsolete file entries Kodi made
|
||||||
kodi_db.clean_file_table()
|
kodi_db.clean_file_table()
|
||||||
|
@ -65,14 +67,18 @@ def _record_playstate(status):
|
||||||
# Item not (yet) in Kodi library
|
# Item not (yet) in Kodi library
|
||||||
LOG.debug('No playstate update due to Plex id not found: %s', status)
|
LOG.debug('No playstate update due to Plex id not found: %s', status)
|
||||||
return
|
return
|
||||||
time = float(kodi_time_to_millis(status['time'])) / 1000
|
|
||||||
totaltime = float(kodi_time_to_millis(status['totaltime'])) / 1000
|
totaltime = float(kodi_time_to_millis(status['totaltime'])) / 1000
|
||||||
try:
|
if ended:
|
||||||
progress = time / totaltime
|
progress = 0.99
|
||||||
except ZeroDivisionError:
|
time = v.IGNORE_SECONDS_AT_START + 1
|
||||||
progress = 0.0
|
else:
|
||||||
LOG.debug('Playback progress %s (%s of %s seconds)',
|
time = float(kodi_time_to_millis(status['time'])) / 1000
|
||||||
progress, time, totaltime)
|
try:
|
||||||
|
progress = time / totaltime
|
||||||
|
except ZeroDivisionError:
|
||||||
|
progress = 0.0
|
||||||
|
LOG.debug('Playback progress %s (%s of %s seconds)',
|
||||||
|
progress, time, totaltime)
|
||||||
playcount = status['playcount']
|
playcount = status['playcount']
|
||||||
if playcount is None:
|
if playcount is None:
|
||||||
LOG.info('playcount not found, looking it up in the Kodi DB')
|
LOG.info('playcount not found, looking it up in the Kodi DB')
|
||||||
|
@ -143,4 +149,4 @@ class PKC_Player(Player):
|
||||||
Will be called when playback ends due to the media file being finished
|
Will be called when playback ends due to the media file being finished
|
||||||
"""
|
"""
|
||||||
LOG.debug("ONPLAYBACK_ENDED")
|
LOG.debug("ONPLAYBACK_ENDED")
|
||||||
playback_cleanup()
|
playback_cleanup(ended=True)
|
||||||
|
|
Loading…
Reference in a new issue