mirror of
https://github.com/Tautulli/Tautulli.git
synced 2025-07-31 03:50:11 -07:00
We have initial implementation of sync lists (may still be buggy)
To get usernames in sync lists go to Users->Refresh Users.
This commit is contained in:
parent
6927753db6
commit
d2db662e14
7 changed files with 103 additions and 36 deletions
|
@ -284,7 +284,7 @@ class PlexTV(object):
|
|||
|
||||
return users_list
|
||||
|
||||
def get_synced_items(self, machine_id=None):
|
||||
def get_synced_items(self, machine_id=None, user_id=None):
|
||||
sync_list = self.get_plextv_sync_lists(machine_id)
|
||||
plex_watch = plexwatch.PlexWatch()
|
||||
|
||||
|
@ -304,9 +304,15 @@ class PlexTV(object):
|
|||
else:
|
||||
for a in xml_head:
|
||||
client_id = self.get_xml_attr(a, 'id')
|
||||
|
||||
sync_device = a.getElementsByTagName('Device')
|
||||
for device in sync_device:
|
||||
device_user_id = self.get_xml_attr(device, 'userID')
|
||||
try:
|
||||
device_username = plex_watch.get_user_details(user_id=device_user_id)['username']
|
||||
device_friendly_name = plex_watch.get_user_details(user_id=device_user_id)['friendly_name']
|
||||
except:
|
||||
device_username = ''
|
||||
device_friendly_name = ''
|
||||
device_name = self.get_xml_attr(device, 'name')
|
||||
device_product = self.get_xml_attr(device, 'product')
|
||||
device_product_version = self.get_xml_attr(device, 'productVersion')
|
||||
|
@ -315,13 +321,10 @@ class PlexTV(object):
|
|||
device_type = self.get_xml_attr(device, 'device')
|
||||
device_model = self.get_xml_attr(device, 'model')
|
||||
device_last_seen = self.get_xml_attr(device, 'lastSeenAt')
|
||||
device_user_id = self.get_xml_attr(device, 'userID')
|
||||
try:
|
||||
device_username = plex_watch.get_user_details(user_id=device_user_id)['username']
|
||||
device_friendly_name = plex_watch.get_user_details(user_id=device_user_id)['friendly_name']
|
||||
except:
|
||||
device_username = ''
|
||||
device_friendly_name = ''
|
||||
|
||||
# Filter by user_id
|
||||
if user_id and user_id != device_user_id:
|
||||
break
|
||||
|
||||
for synced in a.getElementsByTagName('SyncItems'):
|
||||
sync_item = synced.getElementsByTagName('SyncItem')
|
||||
|
|
|
@ -897,20 +897,22 @@ class WebInterface(object):
|
|||
raise cherrypy.HTTPRedirect("users")
|
||||
|
||||
@cherrypy.expose
|
||||
def get_sync(self, machine_id='', **kwargs):
|
||||
def get_sync(self, machine_id=None, user_id=None, **kwargs):
|
||||
|
||||
pms_connect = pmsconnect.PmsConnect()
|
||||
server_info = pms_connect.get_servers_info()
|
||||
|
||||
plex_tv = plextv.PlexTV()
|
||||
if not machine_id:
|
||||
result = plex_tv.get_synced_items(machine_id=server_info[0]['machine_identifier'])
|
||||
result = plex_tv.get_synced_items(machine_id=server_info[0]['machine_identifier'], user_id=user_id)
|
||||
else:
|
||||
result = plex_tv.get_synced_items(machine_id=machine_id)
|
||||
result = plex_tv.get_synced_items(machine_id=machine_id, user_id=user_id)
|
||||
|
||||
if result:
|
||||
cherrypy.response.headers['Content-type'] = 'application/json'
|
||||
output = {"data": result}
|
||||
return json.dumps(output)
|
||||
else:
|
||||
logger.warn('Unable to retrieve data.')
|
||||
logger.warn('Unable to retrieve sync data for user.')
|
||||
output = {"data": []}
|
||||
|
||||
cherrypy.response.headers['Content-type'] = 'application/json'
|
||||
return json.dumps(output)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue