diff --git a/Trakttv.bundle/Contents/Code/pts/scrobbler.py b/Trakttv.bundle/Contents/Code/pts/scrobbler.py index 40d75caf2..dce99ac74 100644 --- a/Trakttv.bundle/Contents/Code/pts/scrobbler.py +++ b/Trakttv.bundle/Contents/Code/pts/scrobbler.py @@ -235,6 +235,14 @@ def update_progress(ws, view_offset): ws.progress = int(round(total_progress * 100, 0)) return True + def finish(self, ws): + if ws.progress is None or ws.progress < 80: + return False + + log.debug('Session finished, sending a "stop" action') + self.handle_action(ws, 'stop') + return True + def valid(self, ws): filtered = None diff --git a/Trakttv.bundle/Contents/Code/pts/scrobbler_logging.py b/Trakttv.bundle/Contents/Code/pts/scrobbler_logging.py index 109fd25ff..39ebd8b0c 100644 --- a/Trakttv.bundle/Contents/Code/pts/scrobbler_logging.py +++ b/Trakttv.bundle/Contents/Code/pts/scrobbler_logging.py @@ -84,11 +84,7 @@ def create_session(self, info): def session_valid(self, ws, info): if ws.metadata.rating_key != info['ratingKey']: log.debug('Invalid Session: Media changed') - - if ws.progress >= 80: - log.debug('Media changed, sending a "stop" action') - self.handle_action(ws, 'stop') - + self.finish(ws) return False if ws.skip and info.get('state') == 'stopped': diff --git a/Trakttv.bundle/Contents/Code/pts/scrobbler_websocket.py b/Trakttv.bundle/Contents/Code/pts/scrobbler_websocket.py index 344b2e9bf..841d107cd 100644 --- a/Trakttv.bundle/Contents/Code/pts/scrobbler_websocket.py +++ b/Trakttv.bundle/Contents/Code/pts/scrobbler_websocket.py @@ -81,20 +81,24 @@ def create_session(self, session_key, state): def update_session(self, ws, view_offset): log.debug('Trying to update the current WatchSession (session key: %s)' % ws.key) - session = Plex['status'].sessions().get(ws.key) + sessions = Plex['status'].sessions() + + if sessions is None: + log.warn('Unable to retrieve sessions') + return False + + session = sessions.get(ws.key) + if not session: log.warn('Session was not found on media server') + self.finish(ws) return False log.debug('last item key: %s, current item key: %s' % (ws.metadata.rating_key, session.rating_key)) if ws.metadata.rating_key != session.rating_key: log.debug('Invalid Session: Media changed') - - if ws.progress >= 80: - log.debug('Media changed, sending a "stop" action') - self.handle_action(ws, 'stop') - + self.finish(ws) return False ws.last_view_offset = view_offset