From edc0b96167b9d2eeb6f23cdeb487e143750a9842 Mon Sep 17 00:00:00 2001 From: JonnyWong16 Date: Sat, 30 Dec 2017 23:21:31 -0800 Subject: [PATCH] Some sync data updates --- .../default/js/tables/sync_table.js | 4 +-- data/interfaces/default/sync.html | 2 +- plexpy/plextv.py | 26 +++++++++++++------ plexpy/pmsconnect.py | 3 +-- 4 files changed, 22 insertions(+), 13 deletions(-) diff --git a/data/interfaces/default/js/tables/sync_table.js b/data/interfaces/default/js/tables/sync_table.js index 5e113944..0b19750d 100644 --- a/data/interfaces/default/js/tables/sync_table.js +++ b/data/interfaces/default/js/tables/sync_table.js @@ -47,7 +47,7 @@ sync_table_options = { }, { "targets": [2], - "data": "friendly_name", + "data": "user", "createdCell": function (td, cellData, rowData, row, col) { if (cellData !== '') { if (rowData['user_id']) { @@ -63,7 +63,7 @@ sync_table_options = { }, { "targets": [3], - "data": "title", + "data": "sync_title", "createdCell": function (td, cellData, rowData, row, col) { if (cellData !== '') { if (rowData['metadata_type'] !== '') { diff --git a/data/interfaces/default/sync.html b/data/interfaces/default/sync.html index 3ac38bfc..e0eddfd5 100644 --- a/data/interfaces/default/sync.html +++ b/data/interfaces/default/sync.html @@ -40,7 +40,7 @@ Delete State User - Title + Title Type Platform Device diff --git a/plexpy/plextv.py b/plexpy/plextv.py index d5cf16d2..2360b2c6 100644 --- a/plexpy/plextv.py +++ b/plexpy/plextv.py @@ -370,7 +370,12 @@ class PlexTV(object): return users_list - def get_synced_items(self, machine_id=None, client_id_filter=None, user_id_filter=None, rating_key_filter=None): + def get_synced_items(self, machine_id=None, client_id_filter=None, user_id_filter=None, + rating_key_filter=None, sync_id_filter=None): + + if machine_id is None: + machine_id = plexpy.CONFIG.PMS_IDENTIFIER + sync_list = self.get_plextv_sync_lists(machine_id, output_format='xml') user_data = users.Users() @@ -386,10 +391,10 @@ class PlexTV(object): client_id = helpers.get_xml_attr(a, 'clientIdentifier') # Filter by client_id - if client_id_filter and client_id_filter != client_id: + if client_id_filter and str(client_id_filter) != client_id: continue - sync_id = helpers.get_xml_attr(a, 'id') + sync_list_id = helpers.get_xml_attr(a, 'id') sync_device = a.getElementsByTagName('Device') for device in sync_device: @@ -410,7 +415,7 @@ class PlexTV(object): device_last_seen = helpers.get_xml_attr(device, 'lastSeenAt') # Filter by user_id - if user_id_filter and user_id_filter != device_user_id: + if user_id_filter and str(user_id_filter) != device_user_id: continue for synced in a.getElementsByTagName('SyncItems'): @@ -424,10 +429,15 @@ class PlexTV(object): for idx, item in enumerate(clean_uri) if item == 'metadata'), None) # Filter by rating_key - if rating_key_filter and rating_key_filter != rating_key: + if rating_key_filter and str(rating_key_filter) != rating_key: continue sync_id = helpers.get_xml_attr(item, 'id') + + # Filter by sync_id + if sync_id_filter and str(sync_id_filter) != sync_id: + continue + sync_version = helpers.get_xml_attr(item, 'version') sync_root_title = helpers.get_xml_attr(item, 'rootTitle') sync_title = helpers.get_xml_attr(item, 'title') @@ -457,11 +467,11 @@ class PlexTV(object): sync_details = {"device_name": helpers.sanitize(device_name), "platform": helpers.sanitize(device_platform), - "username": helpers.sanitize(device_username), - "friendly_name": helpers.sanitize(device_friendly_name), "user_id": device_user_id, + "user": helpers.sanitize(device_friendly_name), + "username": helpers.sanitize(device_username), "root_title": helpers.sanitize(sync_root_title), - "title": helpers.sanitize(sync_title), + "sync_title": helpers.sanitize(sync_title), "metadata_type": sync_metadata_type, "content_type": sync_content_type, "rating_key": rating_key, diff --git a/plexpy/pmsconnect.py b/plexpy/pmsconnect.py index 11e3e2c9..9547d5f3 100644 --- a/plexpy/pmsconnect.py +++ b/plexpy/pmsconnect.py @@ -1411,8 +1411,7 @@ class PmsConnect(object): if media_type not in ('photo', 'clip') and not session.getElementsByTagName('Session') \ and helpers.get_xml_attr(session, 'ratingKey').isdigit() and transcode_decision == 'direct play': plex_tv = plextv.PlexTV() - synced_items = plex_tv.get_synced_items(machine_id=plexpy.CONFIG.PMS_IDENTIFIER, - client_id_filter=player_details['machine_id'], + synced_items = plex_tv.get_synced_items(client_id_filter=player_details['machine_id'], rating_key_filter=rating_key) if synced_items: sync_id = synced_items[0]['sync_id']