From b75cdc5bd188a061c758dc0f31244254f931984c Mon Sep 17 00:00:00 2001 From: Jonathan Wong Date: Sun, 18 Oct 2015 20:47:17 -0700 Subject: [PATCH 1/9] Add library_id and library_title to database * Also clean up code --- plexpy/__init__.py | 181 +++++++++++++++++++++++------------------- plexpy/datafactory.py | 30 ++++++- 2 files changed, 130 insertions(+), 81 deletions(-) diff --git a/plexpy/__init__.py b/plexpy/__init__.py index 038cf14d..25dd8e0f 100644 --- a/plexpy/__init__.py +++ b/plexpy/__init__.py @@ -386,12 +386,11 @@ def dbcheck(): c_db.execute( 'CREATE TABLE IF NOT EXISTS session_history_metadata (id INTEGER PRIMARY KEY, ' 'rating_key INTEGER, parent_rating_key INTEGER, grandparent_rating_key INTEGER, ' - 'title TEXT, parent_title TEXT, grandparent_title TEXT, full_title TEXT, media_index INTEGER, ' - 'parent_media_index INTEGER, thumb TEXT, parent_thumb TEXT, grandparent_thumb TEXT, art TEXT, media_type TEXT, ' - 'year INTEGER, originally_available_at TEXT, added_at INTEGER, updated_at INTEGER, last_viewed_at INTEGER, ' - 'content_rating TEXT, summary TEXT, tagline TEXT, rating TEXT, duration INTEGER DEFAULT 0, guid TEXT, ' - 'directors TEXT, writers TEXT, actors TEXT, genres TEXT, studio TEXT)' - '' + 'title TEXT, parent_title TEXT, grandparent_title TEXT, library_title TEXT, full_title TEXT, media_index INTEGER, ' + 'parent_media_index INTEGER, library_id INTEGER, thumb TEXT, parent_thumb TEXT, grandparent_thumb TEXT, art TEXT, ' + 'media_type TEXT, year INTEGER, originally_available_at TEXT, added_at INTEGER, updated_at INTEGER, ' + 'last_viewed_at INTEGER, content_rating TEXT, summary TEXT, tagline TEXT, rating TEXT, duration INTEGER DEFAULT 0, ' + 'guid TEXT, directors TEXT, writers TEXT, actors TEXT, genres TEXT, studio TEXT)' ) # users table :: This table keeps record of the friends list @@ -403,6 +402,14 @@ def dbcheck(): 'keep_history INTEGER DEFAULT 1, custom_avatar_url TEXT)' ) + # notify_log table :: This is a table which logs notifications sent + c_db.execute( + 'CREATE TABLE IF NOT EXISTS notify_log (id INTEGER PRIMARY KEY AUTOINCREMENT, ' + 'session_key INTEGER, rating_key INTEGER, user_id INTEGER, user TEXT, ' + 'agent_id INTEGER, agent_name TEXT, on_play INTEGER, on_stop INTEGER, on_watched INTEGER, ' + 'on_pause INTEGER, on_resume INTEGER, on_buffer INTEGER)' + ) + # Upgrade sessions table from earlier versions try: c_db.execute('SELECT started from sessions') @@ -529,65 +536,6 @@ def dbcheck(): 'ALTER TABLE sessions ADD COLUMN transcode_height INTEGER' ) - # Upgrade session_history_metadata table from earlier versions - try: - c_db.execute('SELECT full_title 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 full_title TEXT' - ) - - # Upgrade session_history_metadata table from earlier versions - try: - c_db.execute('SELECT tagline 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 tagline TEXT' - ) - - # notify_log table :: This is a table which logs notifications sent - c_db.execute( - 'CREATE TABLE IF NOT EXISTS notify_log (id INTEGER PRIMARY KEY AUTOINCREMENT, ' - 'session_key INTEGER, rating_key INTEGER, user_id INTEGER, user TEXT, ' - 'agent_id INTEGER, agent_name TEXT, on_play INTEGER, on_stop INTEGER, on_watched INTEGER, ' - 'on_pause INTEGER, on_resume INTEGER, on_buffer INTEGER)' - ) - - # Upgrade users table from earlier versions - try: - c_db.execute('SELECT do_notify from users') - except sqlite3.OperationalError: - logger.debug(u"Altering database. Updating database table users.") - c_db.execute( - 'ALTER TABLE users ADD COLUMN do_notify INTEGER DEFAULT 1' - ) - - # Upgrade users table from earlier versions - try: - c_db.execute('SELECT keep_history from users') - except sqlite3.OperationalError: - logger.debug(u"Altering database. Updating database table users.") - c_db.execute( - 'ALTER TABLE users ADD COLUMN keep_history INTEGER DEFAULT 1' - ) - - # Upgrade notify_log table from earlier versions - try: - c_db.execute('SELECT on_pause from notify_log') - except sqlite3.OperationalError: - logger.debug(u"Altering database. Updating database table notify_log.") - c_db.execute( - 'ALTER TABLE notify_log ADD COLUMN on_pause INTEGER' - ) - c_db.execute( - 'ALTER TABLE notify_log ADD COLUMN on_resume INTEGER' - ) - c_db.execute( - 'ALTER TABLE notify_log ADD COLUMN on_buffer INTEGER' - ) - # Upgrade sessions table from earlier versions try: c_db.execute('SELECT buffer_count from sessions') @@ -600,15 +548,6 @@ def dbcheck(): 'ALTER TABLE sessions ADD COLUMN buffer_last_triggered INTEGER' ) - # Upgrade users table from earlier versions - try: - c_db.execute('SELECT custom_avatar_url from users') - except sqlite3.OperationalError: - logger.debug(u"Altering database. Updating database table users.") - c_db.execute( - 'ALTER TABLE users ADD COLUMN custom_avatar_url TEXT' - ) - # Upgrade sessions table from earlier versions try: c_db.execute('SELECT last_paused from sessions') @@ -618,12 +557,6 @@ def dbcheck(): 'ALTER TABLE sessions ADD COLUMN last_paused INTEGER' ) - # Add "Local" user to database as default unauthenticated user. - result = c_db.execute('SELECT id FROM users WHERE username = "Local"') - if not result.fetchone(): - logger.debug(u'User "Local" does not exist. Adding user.') - c_db.execute('INSERT INTO users (user_id, username) VALUES (0, "Local")') - # Upgrade session_history table from earlier versions try: c_db.execute('SELECT reference_id from session_history') @@ -647,6 +580,94 @@ def dbcheck(): 'WHERE t1.id = session_history.id) ' ) + # Upgrade session_history_metadata table from earlier versions + try: + c_db.execute('SELECT full_title 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 full_title TEXT' + ) + + # Upgrade session_history_metadata table from earlier versions + try: + c_db.execute('SELECT tagline 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 tagline TEXT' + ) + + # Upgrade session_history_metadata table from earlier versions + try: + c_db.execute('SELECT library_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 library_id INTEGER' + ) + c_db.execute( + 'ALTER TABLE session_history_metadata ADD COLUMN library_title TEXT' + ) + logger.debug(u"Updating library_id's in database. Please wait...") + from plexpy import datafactory + result = data_factory.update_library_ids() + + if result: + logger.debug(u"Updated all library_id's in database.") + else: + logger.debug(u"Unable to update library_id's in database.") + + + + # Upgrade users table from earlier versions + try: + c_db.execute('SELECT do_notify from users') + except sqlite3.OperationalError: + logger.debug(u"Altering database. Updating database table users.") + c_db.execute( + 'ALTER TABLE users ADD COLUMN do_notify INTEGER DEFAULT 1' + ) + + # Upgrade users table from earlier versions + try: + c_db.execute('SELECT keep_history from users') + except sqlite3.OperationalError: + logger.debug(u"Altering database. Updating database table users.") + c_db.execute( + 'ALTER TABLE users ADD COLUMN keep_history INTEGER DEFAULT 1' + ) + + # Upgrade users table from earlier versions + try: + c_db.execute('SELECT custom_avatar_url from users') + except sqlite3.OperationalError: + logger.debug(u"Altering database. Updating database table users.") + c_db.execute( + 'ALTER TABLE users ADD COLUMN custom_avatar_url TEXT' + ) + + # Upgrade notify_log table from earlier versions + try: + c_db.execute('SELECT on_pause from notify_log') + except sqlite3.OperationalError: + logger.debug(u"Altering database. Updating database table notify_log.") + c_db.execute( + 'ALTER TABLE notify_log ADD COLUMN on_pause INTEGER' + ) + c_db.execute( + 'ALTER TABLE notify_log ADD COLUMN on_resume INTEGER' + ) + c_db.execute( + 'ALTER TABLE notify_log ADD COLUMN on_buffer INTEGER' + ) + + # Add "Local" user to database as default unauthenticated user. + result = c_db.execute('SELECT id FROM users WHERE username = "Local"') + if not result.fetchone(): + logger.debug(u'User "Local" does not exist. Adding user.') + c_db.execute('INSERT INTO users (user_id, username) VALUES (0, "Local")') + conn_db.commit() c_db.close() diff --git a/plexpy/datafactory.py b/plexpy/datafactory.py index a6330176..c494f102 100644 --- a/plexpy/datafactory.py +++ b/plexpy/datafactory.py @@ -1004,4 +1004,32 @@ class DataFactory(object): else: return 'No updated rating key needed in database. No changes were made.' # for debugging - #return mapping \ No newline at end of file + #return mapping #return mapping + + def update_library_ids(self): + from plexpy import pmsconnect + + pms_connect = pmsconnect.PmsConnect() + monitor_db = database.MonitorDatabase() + + try: + query = 'SELECT id, rating_key FROM session_history_metadata WHERE library_id IS NULL' + result = monitor_db.select(query=query) + except: + logger.warn("Unable to execute database query for update_library_id.") + return None + + for item in result: + id = item[0] + rating_key = item[1] + + result = pms_connect.get_metadata_details(rating_key=rating_key) + + if result: + metadata = result['metadata'] + monitor_db.action('UPDATE session_history_metadata SET library_id = ? WHERE id = ?', [metadata['library_id'], id]) + monitor_db.action('UPDATE session_history_metadata SET library_title = ? WHERE id = ?', [metadata['library_title'], id]) + else: + continue + + return True \ No newline at end of file From 1ca04e89dc536de6191e6f7a4a570d1699ed8689 Mon Sep 17 00:00:00 2001 From: Jonathan Wong Date: Sun, 18 Oct 2015 20:48:03 -0700 Subject: [PATCH 2/9] Add library_id and library_title to metadata queries --- plexpy/datafactory.py | 10 +++--- plexpy/pmsconnect.py | 79 ++++++++++++++++++++++++++----------------- 2 files changed, 54 insertions(+), 35 deletions(-) diff --git a/plexpy/datafactory.py b/plexpy/datafactory.py index c494f102..6eda7dcf 100644 --- a/plexpy/datafactory.py +++ b/plexpy/datafactory.py @@ -713,9 +713,9 @@ class DataFactory(object): if row_id: query = 'SELECT rating_key, parent_rating_key, grandparent_rating_key, title, parent_title, grandparent_title, ' \ - 'full_title, media_index, parent_media_index, thumb, parent_thumb, grandparent_thumb, art, media_type, ' \ - 'year, originally_available_at, added_at, updated_at, last_viewed_at, content_rating, summary, tagline, ' \ - 'rating, duration, guid, directors, writers, actors, genres, studio ' \ + 'full_title, library_title, media_index, parent_media_index, library_id, thumb, parent_thumb, grandparent_thumb, ' \ + 'art, media_type, year, originally_available_at, added_at, updated_at, last_viewed_at, content_rating, summary, ' \ + 'tagline, rating, duration, guid, directors, writers, actors, genres, studio ' \ 'FROM session_history_metadata ' \ 'WHERE id = ?' result = monitor_db.select(query=query, args=[row_id]) @@ -757,7 +757,9 @@ class DataFactory(object): 'writers': writers, 'directors': directors, 'genres': genres, - 'actors': actors + 'actors': actors, + 'library_title': item['library_title'], + 'library_id': item['library_id'] } return metadata diff --git a/plexpy/pmsconnect.py b/plexpy/pmsconnect.py index bb2da415..65ef5321 100644 --- a/plexpy/pmsconnect.py +++ b/plexpy/pmsconnect.py @@ -347,6 +347,9 @@ class PmsConnect(object): else: logger.debug(u"Metadata failed") + library_id = helpers.get_xml_attr(a, 'librarySectionID') + library_title = helpers.get_xml_attr(a, 'librarySectionTitle') + genres = [] actors = [] writers = [] @@ -368,8 +371,42 @@ class PmsConnect(object): for director in metadata_main.getElementsByTagName('Director'): directors.append(helpers.get_xml_attr(director, 'tag')) - if metadata_type == 'show': + if metadata_type == 'movie': metadata = {'type': metadata_type, + 'library_id': library_id, + 'library_title': library_title, + 'rating_key': helpers.get_xml_attr(metadata_main, 'ratingKey'), + 'grandparent_title': helpers.get_xml_attr(metadata_main, 'grandparentTitle'), + 'parent_index': helpers.get_xml_attr(metadata_main, 'parentIndex'), + 'parent_title': helpers.get_xml_attr(metadata_main, 'parentTitle'), + 'index': helpers.get_xml_attr(metadata_main, 'index'), + 'studio': helpers.get_xml_attr(metadata_main, 'studio'), + 'title': helpers.get_xml_attr(metadata_main, 'title'), + 'content_rating': helpers.get_xml_attr(metadata_main, 'contentRating'), + 'summary': helpers.get_xml_attr(metadata_main, 'summary'), + 'tagline': helpers.get_xml_attr(metadata_main, 'tagline'), + 'rating': helpers.get_xml_attr(metadata_main, 'rating'), + 'duration': helpers.get_xml_attr(metadata_main, 'duration'), + 'year': helpers.get_xml_attr(metadata_main, 'year'), + 'thumb': helpers.get_xml_attr(metadata_main, 'thumb'), + 'parent_thumb': helpers.get_xml_attr(metadata_main, 'parentThumb'), + 'grandparent_thumb': helpers.get_xml_attr(metadata_main, 'grandparentThumb'), + 'art': helpers.get_xml_attr(metadata_main, 'art'), + 'originally_available_at': helpers.get_xml_attr(metadata_main, 'originallyAvailableAt'), + 'added_at': helpers.get_xml_attr(metadata_main, 'addedAt'), + 'updated_at': helpers.get_xml_attr(metadata_main, 'updatedAt'), + 'last_viewed_at': helpers.get_xml_attr(metadata_main, 'lastViewedAt'), + 'guid': helpers.get_xml_attr(metadata_main, 'guid'), + 'genres': genres, + 'actors': actors, + 'writers': writers, + 'directors': directors + } + metadata_list = {'metadata': metadata} + elif metadata_type == 'show': + metadata = {'type': metadata_type, + 'library_id': library_id, + 'library_title': library_title, 'rating_key': helpers.get_xml_attr(metadata_main, 'ratingKey'), 'grandparent_title': helpers.get_xml_attr(metadata_main, 'grandparentTitle'), 'parent_index': helpers.get_xml_attr(metadata_main, 'parentIndex'), @@ -402,6 +439,8 @@ class PmsConnect(object): parent_rating_key = helpers.get_xml_attr(metadata_main, 'parentRatingKey') show_details = self.get_metadata_details(parent_rating_key) metadata = {'type': metadata_type, + 'library_id': library_id, + 'library_title': library_title, 'rating_key': helpers.get_xml_attr(metadata_main, 'ratingKey'), 'parent_rating_key': helpers.get_xml_attr(metadata_main, 'parentRatingKey'), 'grandparent_title': helpers.get_xml_attr(metadata_main, 'grandparentTitle'), @@ -433,6 +472,8 @@ class PmsConnect(object): metadata_list = {'metadata': metadata} elif metadata_type == 'episode': metadata = {'type': metadata_type, + 'library_id': library_id, + 'library_title': library_title, 'rating_key': helpers.get_xml_attr(metadata_main, 'ratingKey'), 'parent_rating_key': helpers.get_xml_attr(metadata_main, 'parentRatingKey'), 'grandparent_rating_key': helpers.get_xml_attr(metadata_main, 'grandparentRatingKey'), @@ -463,38 +504,10 @@ class PmsConnect(object): 'actors': actors } metadata_list = {'metadata': metadata} - elif metadata_type == 'movie': - metadata = {'type': metadata_type, - 'rating_key': helpers.get_xml_attr(metadata_main, 'ratingKey'), - 'grandparent_title': helpers.get_xml_attr(metadata_main, 'grandparentTitle'), - 'parent_index': helpers.get_xml_attr(metadata_main, 'parentIndex'), - 'parent_title': helpers.get_xml_attr(metadata_main, 'parentTitle'), - 'index': helpers.get_xml_attr(metadata_main, 'index'), - 'studio': helpers.get_xml_attr(metadata_main, 'studio'), - 'title': helpers.get_xml_attr(metadata_main, 'title'), - 'content_rating': helpers.get_xml_attr(metadata_main, 'contentRating'), - 'summary': helpers.get_xml_attr(metadata_main, 'summary'), - 'tagline': helpers.get_xml_attr(metadata_main, 'tagline'), - 'rating': helpers.get_xml_attr(metadata_main, 'rating'), - 'duration': helpers.get_xml_attr(metadata_main, 'duration'), - 'year': helpers.get_xml_attr(metadata_main, 'year'), - 'thumb': helpers.get_xml_attr(metadata_main, 'thumb'), - 'parent_thumb': helpers.get_xml_attr(metadata_main, 'parentThumb'), - 'grandparent_thumb': helpers.get_xml_attr(metadata_main, 'grandparentThumb'), - 'art': helpers.get_xml_attr(metadata_main, 'art'), - 'originally_available_at': helpers.get_xml_attr(metadata_main, 'originallyAvailableAt'), - 'added_at': helpers.get_xml_attr(metadata_main, 'addedAt'), - 'updated_at': helpers.get_xml_attr(metadata_main, 'updatedAt'), - 'last_viewed_at': helpers.get_xml_attr(metadata_main, 'lastViewedAt'), - 'guid': helpers.get_xml_attr(metadata_main, 'guid'), - 'genres': genres, - 'actors': actors, - 'writers': writers, - 'directors': directors - } - metadata_list = {'metadata': metadata} elif metadata_type == 'artist': metadata = {'type': metadata_type, + 'library_id': library_id, + 'library_title': library_title, 'rating_key': helpers.get_xml_attr(metadata_main, 'ratingKey'), 'grandparent_title': helpers.get_xml_attr(metadata_main, 'grandparentTitle'), 'parent_index': helpers.get_xml_attr(metadata_main, 'parentIndex'), @@ -527,6 +540,8 @@ class PmsConnect(object): parent_rating_key = helpers.get_xml_attr(metadata_main, 'parentRatingKey') artist_details = self.get_metadata_details(parent_rating_key) metadata = {'type': metadata_type, + 'library_id': library_id, + 'library_title': library_title, 'rating_key': helpers.get_xml_attr(metadata_main, 'ratingKey'), 'parent_rating_key': helpers.get_xml_attr(metadata_main, 'parentRatingKey'), 'grandparent_title': helpers.get_xml_attr(metadata_main, 'grandparentTitle'), @@ -560,6 +575,8 @@ class PmsConnect(object): parent_rating_key = helpers.get_xml_attr(metadata_main, 'parentRatingKey') album_details = self.get_metadata_details(parent_rating_key) metadata = {'type': metadata_type, + 'library_id': library_id, + 'library_title': library_title, 'rating_key': helpers.get_xml_attr(metadata_main, 'ratingKey'), 'parent_rating_key': helpers.get_xml_attr(metadata_main, 'parentRatingKey'), 'grandparent_rating_key': helpers.get_xml_attr(metadata_main, 'grandparentRatingKey'), From dd86bd687b10cddfea30afb6ce5f12d11b9fe76f Mon Sep 17 00:00:00 2001 From: Jonathan Wong Date: Sun, 18 Oct 2015 20:51:53 -0700 Subject: [PATCH 3/9] Add library_id and library_title to activity_processor --- plexpy/activity_processor.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/plexpy/activity_processor.py b/plexpy/activity_processor.py index 95b43fe1..79286192 100644 --- a/plexpy/activity_processor.py +++ b/plexpy/activity_processor.py @@ -242,18 +242,18 @@ class ActivityProcessor(object): # logger.debug(u"PlexPy ActivityProcessor :: Attempting to write to session_history_metadata table...") query = 'INSERT INTO session_history_metadata (id, rating_key, parent_rating_key, ' \ - 'grandparent_rating_key, title, parent_title, grandparent_title, full_title, media_index, ' \ - 'parent_media_index, thumb, parent_thumb, grandparent_thumb, art, media_type, year, ' \ - 'originally_available_at, added_at, updated_at, last_viewed_at, content_rating, summary, ' \ - 'tagline, rating, duration, guid, directors, writers, actors, genres, studio) VALUES ' \ + 'grandparent_rating_key, title, parent_title, grandparent_title, full_title, library_title, ' \ + 'media_index, parent_media_index, library_id, thumb, parent_thumb, grandparent_thumb, art, ' \ + 'media_type, year, originally_available_at, added_at, updated_at, last_viewed_at, content_rating, ' \ + 'summary, tagline, rating, duration, guid, directors, writers, actors, genres, studio) VALUES ' \ '(last_insert_rowid(), ' \ - '?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)' + '?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)' args = [session['rating_key'], session['parent_rating_key'], session['grandparent_rating_key'], - session['title'], session['parent_title'], session['grandparent_title'], full_title, - metadata['index'], metadata['parent_index'], metadata['thumb'], metadata['parent_thumb'], - metadata['grandparent_thumb'], metadata['art'], session['media_type'], metadata['year'], - metadata['originally_available_at'], metadata['added_at'], metadata['updated_at'], + session['title'], session['parent_title'], session['grandparent_title'], full_title, metadata['library_title'], + metadata['index'], metadata['parent_index'], metadata['library_id'], metadata['thumb'], + metadata['parent_thumb'], metadata['grandparent_thumb'], metadata['art'], session['media_type'], + metadata['year'], metadata['originally_available_at'], metadata['added_at'], metadata['updated_at'], metadata['last_viewed_at'], metadata['content_rating'], metadata['summary'], metadata['tagline'], metadata['rating'], metadata['duration'], metadata['guid'], directors, writers, actors, genres, metadata['studio']] From 4c1392566b7a0769b295d601d3e9ca279416e2b5 Mon Sep 17 00:00:00 2001 From: Jonathan Wong Date: Sun, 18 Oct 2015 20:55:03 -0700 Subject: [PATCH 4/9] Add library_id and library_title to update metadata --- plexpy/datafactory.py | 14 ++++++++++++-- plexpy/pmsconnect.py | 11 +++++++++-- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/plexpy/datafactory.py b/plexpy/datafactory.py index 6eda7dcf..95d9d6a8 100644 --- a/plexpy/datafactory.py +++ b/plexpy/datafactory.py @@ -856,7 +856,9 @@ class DataFactory(object): media_type = 'artist' if query_string and media_type: - query = {'query_string': query_string.replace('"', ''), + query_string = query_string.replace('"', '') + query_string = query_string.replace(u"’", u"'") + query = {'query_string': query_string, 'title': title, 'parent_title': parent_title, 'grandparent_title': grandparent_title, @@ -962,6 +964,14 @@ class DataFactory(object): if mapping: logger.info(u"PlexPy DataFactory :: Updating rating keys in the database.") for old_key, new_key in mapping.iteritems(): + # check library_id (1 table) + monitor_db.action('UPDATE session_history_metadata SET library_id = ? WHERE rating_key = ?', + [new_key_list['library_id'], old_key]) + + # check library_title (1 table) + monitor_db.action('UPDATE session_history_metadata SET library_title = ? WHERE rating_key = ?', + [new_key_list['library_title'], old_key]) + # check rating_key (3 tables) monitor_db.action('UPDATE session_history SET rating_key = ? WHERE rating_key = ?', [new_key, old_key]) @@ -1006,7 +1016,7 @@ class DataFactory(object): else: return 'No updated rating key needed in database. No changes were made.' # for debugging - #return mapping #return mapping + #return mapping def update_library_ids(self): from plexpy import pmsconnect diff --git a/plexpy/pmsconnect.py b/plexpy/pmsconnect.py index 65ef5321..5a3685aa 100644 --- a/plexpy/pmsconnect.py +++ b/plexpy/pmsconnect.py @@ -1348,7 +1348,8 @@ class PmsConnect(object): continue if library_list['library_count'] != '0': - library_stats = {'title': library['title'], + library_stats = {'key': library['key'], + 'title': library['title'], 'thumb': library['thumb'], 'count': library_list['library_count'], 'count_type': library_list['count_type'] @@ -1513,6 +1514,8 @@ class PmsConnect(object): try: metadata = self.get_metadata_details(rating_key=rating_key) rating_key = metadata['metadata']['parent_rating_key'] + library_id = metadata['metadata']['library_id'] + library_title = metadata['metadata']['library_title'] except: logger.warn("Unable to get parent_rating_key for get_rating_keys_list.") return {} @@ -1521,6 +1524,8 @@ class PmsConnect(object): try: metadata = self.get_metadata_details(rating_key=rating_key) rating_key = metadata['metadata']['grandparent_rating_key'] + library_id = metadata['metadata']['library_id'] + library_title = metadata['metadata']['library_title'] except: logger.warn("Unable to get grandparent_rating_key for get_rating_keys_list.") return {} @@ -1593,7 +1598,9 @@ class PmsConnect(object): key = 0 if match_type == 'index' else title key_list = {key: {'rating_key': int(rating_key), - 'children': parents} + 'children': parents}, + 'library_id': library_id, + 'library_title': library_title } return key_list \ No newline at end of file From fca98e027d1f430a536bbc0b3802cc9ea2184b38 Mon Sep 17 00:00:00 2001 From: Jonathan Wong Date: Sun, 18 Oct 2015 20:55:49 -0700 Subject: [PATCH 5/9] Add top level library to info pages --- data/interfaces/default/info.html | 24 +++++------ data/interfaces/default/library_stats.html | 2 +- plexpy/pmsconnect.py | 47 ++++++++++++++++++++++ plexpy/webserve.py | 16 ++++---- 4 files changed, 66 insertions(+), 23 deletions(-) diff --git a/data/interfaces/default/info.html b/data/interfaces/default/info.html index 197fda70..e104f6c6 100644 --- a/data/interfaces/default/info.html +++ b/data/interfaces/default/info.html @@ -69,37 +69,31 @@ DOCUMENTATION :: END