diff --git a/plexpy/__init__.py b/plexpy/__init__.py index dc568d0a..7ddcd47d 100644 --- a/plexpy/__init__.py +++ b/plexpy/__init__.py @@ -1156,6 +1156,15 @@ def dbcheck(): 'ALTER TABLE sessions ADD COLUMN relayed INTEGER' ) + # Upgrade sessions table from earlier versions + try: + c_db.execute('SELECT rating_key_websocket FROM sessions') + except sqlite3.OperationalError: + logger.debug(u"Altering database. Updating database table sessions.") + c_db.execute( + 'ALTER TABLE sessions ADD COLUMN rating_key_websocket TEXT' + ) + # Upgrade session_history table from earlier versions try: c_db.execute('SELECT reference_id FROM session_history') diff --git a/plexpy/activity_handler.py b/plexpy/activity_handler.py index ff26cf88..16ec3b24 100644 --- a/plexpy/activity_handler.py +++ b/plexpy/activity_handler.py @@ -69,6 +69,7 @@ class ActivityHandler(object): # Get it from the websocket data if not session['rating_key']: session['rating_key'] = self.get_rating_key() + session['rating_key_websocket'] = self.get_rating_key() return session return None @@ -267,9 +268,12 @@ class ActivityHandler(object): last_live_uuid = db_session['live_uuid'] last_transcode_key = db_session['transcode_key'].split('/')[-1] last_paused = db_session['last_paused'] + last_rating_key_websocket = db_session['rating_key_websocket'] # Make sure the same item is being played - if this_rating_key == last_rating_key or this_live_uuid == last_live_uuid: + if this_rating_key == last_rating_key \ + or this_rating_key == last_rating_key_websocket \ + or this_live_uuid == last_live_uuid: # Update the session state and viewOffset if this_state == 'playing': # Update the session in our temp session table diff --git a/plexpy/activity_processor.py b/plexpy/activity_processor.py index e5f462ae..23dace3f 100644 --- a/plexpy/activity_processor.py +++ b/plexpy/activity_processor.py @@ -117,6 +117,7 @@ class ActivityProcessor(object): 'live_uuid': session.get('live_uuid', ''), 'secure': session.get('secure', None), 'relayed': session.get('relayed', 0), + 'rating_key_websocket': session.get('rating_key_websocket', ''), 'raw_stream_info': json.dumps(session), 'stopped': int(time.time()) }