From 3ed05be0f987f08a136f9c571423d3dc4e2a3392 Mon Sep 17 00:00:00 2001 From: tyler breese Date: Fri, 10 Nov 2023 01:28:43 -0500 Subject: [PATCH] database upgrade fixe s random fixes --- plexpy/__init__.py | 56 ++++++++++++++++++++++++++++++++++++++ plexpy/activity_handler.py | 21 +++++++------- 2 files changed, 67 insertions(+), 10 deletions(-) diff --git a/plexpy/__init__.py b/plexpy/__init__.py index 30d1b260..7ef8868c 100644 --- a/plexpy/__init__.py +++ b/plexpy/__init__.py @@ -41,6 +41,7 @@ import pytz PYTHON2 = sys.version_info[0] == 2 +import plexpy if PYTHON2: import activity_handler import activity_pinger @@ -1440,6 +1441,16 @@ def dbcheck(): "ALTER TABLE sessions ADD COLUMN marker INTEGER DEFAULT 0" ) + # Upgrade sessions table from earlier versions + try: + c_db.execute("SELECT server_id FROM sessions") + except sqlite3.OperationalError: + logger.debug(u"Altering database. Updating database table sessions.") + c_db.execute( + "ALTER TABLE sessions ADD COLUMN server_id TEXT DEFAULT '" + plexpy.CONFIG.PMS_IDENTIFIER + "'" + ) + + # Upgrade session_history table from earlier versions try: c_db.execute("SELECT reference_id FROM session_history") @@ -1514,6 +1525,15 @@ def dbcheck(): except sqlite3.OperationalError: logger.warn("Unable to capitalize Windows platform values in session_history table.") + # Upgrade session_history table from earlier versions + try: + c_db.execute("SELECT server_id FROM session_history") + except sqlite3.OperationalError: + logger.debug(u"Altering database. Updating database table session_history.") + c_db.execute( + "ALTER TABLE session_history ADD COLUMN server_id TEXT DEFAULT '" + plexpy.CONFIG.PMS_IDENTIFIER + "'" + ) + # Upgrade session_history_metadata table from earlier versions try: c_db.execute("SELECT full_title FROM session_history_metadata") @@ -1580,6 +1600,15 @@ def dbcheck(): "ALTER TABLE session_history_metadata ADD COLUMN marker_credits_final INTEGER DEFAULT NULL" ) + # Upgrade session_history_metadata table from earlier versions + try: + c_db.execute("SELECT server_id FROM session_history_metadata") + except sqlite3.OperationalError: + logger.debug(u"Altering database. Updating database table session_history_metadata.") + c_db.execute( + "ALTER TABLE session_history_metadata ADD COLUMN server_id TEXT DEFAULT '" + plexpy.CONFIG.PMS_IDENTIFIER + "'" + ) + # Upgrade session_history_media_info table from earlier versions try: c_db.execute("SELECT transcode_decision FROM session_history_media_info") @@ -1870,6 +1899,15 @@ def dbcheck(): "ALTER TABLE session_history_media_info ADD COLUMN subtitle_forced INTEGER" ) + # Upgrade session_history_media_info table from earlier versions + try: + c_db.execute("SELECT server_id FROM session_history_media_info") + except sqlite3.OperationalError: + logger.debug(u"Altering database. Updating database table session_history_media_info.") + c_db.execute( + "ALTER TABLE session_history_media_info ADD COLUMN server_id TEXT DEFAULT '" + plexpy.CONFIG.PMS_IDENTIFIER + "'" + ) + # Upgrade session_history table from earlier versions try: c_db.execute("SELECT section_id FROM session_history") @@ -1920,6 +1958,15 @@ def dbcheck(): "ALTER TABLE session_history_metadata_temp RENAME TO session_history_metadata" ) + # Upgrade session_history table from earlier versions + try: + c_db.execute("SELECT server_id FROM session_history") + except sqlite3.OperationalError: + logger.debug(u"Altering database. Updating database table session_history.") + c_db.execute( + "ALTER TABLE session_history ADD COLUMN server_id TEXT DEFAULT '" + plexpy.CONFIG.PMS_IDENTIFIER + "'" + ) + # Upgrade users table from earlier versions try: c_db.execute("SELECT do_notify FROM users") @@ -2711,6 +2758,15 @@ def dbcheck(): "ON sessions_continued (user_id, machine_id, media_type)" ) + # Upgrade sessions_continued table from earlier versions + try: + c_db.execute("SELECT server_id FROM sessions_continued") + except sqlite3.OperationalError: + logger.debug(u"Altering database. Updating database table sessions_continued.") + c_db.execute( + "ALTER TABLE sessions_continued ADD COLUMN server_id TEXT DEFAULT '" + plexpy.CONFIG.PMS_IDENTIFIER + "'" + ) + # Set database version result = c_db.execute("SELECT value FROM version_info WHERE key = 'version'").fetchone() if not result: diff --git a/plexpy/activity_handler.py b/plexpy/activity_handler.py index 3280d055..8072a57c 100644 --- a/plexpy/activity_handler.py +++ b/plexpy/activity_handler.py @@ -285,8 +285,9 @@ class ActivityHandler(object): watched_notifiers = notification_handler.get_notify_state_enabled( session=self.db_session, notify_action='on_watched', notified=False) - for d in watched_notifiers: - self.put_notification('on_watched', notifier_id=d['notifier_id']) + if watched_notifiers is not None: + for d in watched_notifiers: + self.put_notification('on_watched', notifier_id=d['notifier_id']) # This function receives events from our websocket connection def process(self): @@ -495,7 +496,7 @@ class TimelineHandler(object): # Schedule a callback to clear the recently added queue schedule_callback('rating_key-{}'.format(self.grandparent_rating_key), func=clear_recently_added_queue, - args=[self.grandparent_rating_key, self.title], + args=[self.grandparent_rating_key, self.title, self.server_id], seconds=plexpy.CONFIG.NOTIFY_RECENTLY_ADDED_DELAY) elif self.media_type in ('season', 'album'): @@ -510,7 +511,7 @@ class TimelineHandler(object): # Schedule a callback to clear the recently added queue schedule_callback('rating_key-{}'.format(self.parent_rating_key), func=clear_recently_added_queue, - args=[self.parent_rating_key, self.title], + args=[self.parent_rating_key, self.title, self.server_id], seconds=plexpy.CONFIG.NOTIFY_RECENTLY_ADDED_DELAY) elif self.media_type in ('movie', 'show', 'artist'): @@ -524,7 +525,7 @@ class TimelineHandler(object): # Schedule a callback to clear the recently added queue schedule_callback('rating_key-{}'.format(self.rating_key), func=clear_recently_added_queue, - args=[self.rating_key, self.title], + args=[self.rating_key, self.title, self.server_id], seconds=plexpy.CONFIG.NOTIFY_RECENTLY_ADDED_DELAY) # A movie, show, or artist is done processing @@ -676,14 +677,14 @@ def force_stop_stream(session_key, title, user): delete_metadata_cache(session_key) -def clear_recently_added_queue(rating_key, title): +def clear_recently_added_queue(rating_key, title, server_id): logger.debug("Tautulli TimelineHandler :: Starting callback for library item '%s' (%s) after delay.", title, str(rating_key)) child_keys = RECENTLY_ADDED_QUEUE[rating_key] if plexpy.CONFIG.NOTIFY_GROUP_RECENTLY_ADDED_GRANDPARENT and len(child_keys) > 1: - on_created(rating_key, child_keys=child_keys) + on_created(rating_key, server_id, child_keys=child_keys) elif child_keys: for child_key in child_keys: @@ -694,13 +695,13 @@ def clear_recently_added_queue(rating_key, title): elif grandchild_keys: for grandchild_key in grandchild_keys: - on_created(grandchild_key) + on_created(grandchild_key, server_id) else: - on_created(child_key) + on_created(child_key, server_id) else: - on_created(rating_key) + on_created(rating_key, server_id) # Remove all keys del_keys(rating_key)