Show Plex Server URL in settings

This commit is contained in:
JonnyWong16 2018-03-16 17:43:32 -07:00
parent d045fd5834
commit 2479533d07
4 changed files with 97 additions and 34 deletions

View file

@ -29,7 +29,7 @@ import pmsconnect
import session
def get_server_resources(return_presence=False):
def get_server_resources(return_presence=False, return_server=False, **kwargs):
if not return_presence:
logger.info(u"Tautulli PlexTV :: Requesting resources for server...")
@ -42,9 +42,15 @@ def get_server_resources(return_presence=False):
'pms_is_remote': plexpy.CONFIG.PMS_IS_REMOTE,
'pms_is_cloud': plexpy.CONFIG.PMS_IS_CLOUD,
'pms_url': plexpy.CONFIG.PMS_URL,
'pms_url_manual': plexpy.CONFIG.PMS_URL_MANUAL
'pms_url_manual': plexpy.CONFIG.PMS_URL_MANUAL,
'pms_identifier': plexpy.CONFIG.PMS_IDENTIFIER
}
if kwargs:
server.update(kwargs)
for k in ['pms_ssl', 'pms_is_remote', 'pms_is_cloud', 'pms_url_manual']:
server[k] = int(server[k])
if server['pms_url_manual'] and server['pms_ssl'] or server['pms_is_cloud']:
scheme = 'https'
else:
@ -55,7 +61,7 @@ def get_server_resources(return_presence=False):
port=server['pms_port'])
plex_tv = PlexTV()
result = plex_tv.get_server_connections(pms_identifier=plexpy.CONFIG.PMS_IDENTIFIER,
result = plex_tv.get_server_connections(pms_identifier=server['pms_identifier'],
pms_ip=server['pms_ip'],
pms_port=server['pms_port'],
include_https=server['pms_ssl'])
@ -103,6 +109,9 @@ def get_server_resources(return_presence=False):
server['pms_url'] = fallback_url
logger.info(u"Tautulli PlexTV :: Using user-defined URL.")
if return_server:
return server
plexpy.CONFIG.process_kwargs(server)
plexpy.CONFIG.write()
@ -645,6 +654,7 @@ class PlexTV(object):
'label': helpers.get_xml_attr(d, 'name'),
'ip': helpers.get_xml_attr(c, 'address'),
'port': helpers.get_xml_attr(c, 'port'),
'uri': helpers.get_xml_attr(c, 'uri'),
'local': helpers.get_xml_attr(c, 'local'),
'value': helpers.get_xml_attr(c, 'address'),
'is_cloud': is_cloud

View file

@ -2611,6 +2611,7 @@ class WebInterface(object):
"pms_ssl": plexpy.CONFIG.PMS_SSL,
"pms_is_remote": plexpy.CONFIG.PMS_IS_REMOTE,
"pms_is_cloud": plexpy.CONFIG.PMS_IS_CLOUD,
"pms_url": plexpy.CONFIG.PMS_URL,
"pms_url_manual": checked(plexpy.CONFIG.PMS_URL_MANUAL),
"pms_uuid": plexpy.CONFIG.PMS_UUID,
"pms_web_url": plexpy.CONFIG.PMS_WEB_URL,
@ -2812,6 +2813,12 @@ class WebInterface(object):
return {'result': 'success', 'message': 'Settings saved.'}
@cherrypy.expose
@cherrypy.tools.json_out()
@requireAuth(member_of("admin"))
def get_server_resources(self, **kwargs):
return plextv.get_server_resources(return_server=True, **kwargs)
@cherrypy.expose
@cherrypy.tools.json_out()
@requireAuth(member_of("admin"))
@ -3455,7 +3462,8 @@ class WebInterface(object):
@cherrypy.tools.json_out()
@requireAuth(member_of("admin"))
@addtoapi()
def get_server_id(self, hostname=None, port=None, identifier=None, ssl=0, remote=0, **kwargs):
def get_server_id(self, hostname=None, port=None, identifier=None, ssl=0, remote=0, manual=0,
get_url=False, **kwargs):
""" Get the PMS server identifier.
```
@ -3468,7 +3476,8 @@ class WebInterface(object):
remote (int): 0 or 1
Returns:
string: The unique PMS identifier
json:
{'identifier': '08u2phnlkdshf890bhdlksghnljsahgleikjfg9t'}
```
"""
# Attempt to get the pms_identifier from plex.tv if the server is published
@ -3499,11 +3508,21 @@ class WebInterface(object):
xml_head = request.getElementsByTagName('MediaContainer')[0]
identifier = xml_head.getAttribute('machineIdentifier')
result = {'identifier': identifier}
if identifier:
return identifier
if get_url == 'true':
server = self.get_server_resources(pms_ip=hostname,
pms_port=port,
pms_ssl=ssl,
pms_is_remote=remote,
pms_url_manual=manual,
pms_identifier=identifier)
result['url'] = server['pms_url']
return result
else:
logger.warn('Unable to retrieve the PMS identifier.')
return None
return result
@cherrypy.expose
@requireAuth(member_of("admin"))