mirror of
https://github.com/Tautulli/Tautulli.git
synced 2025-07-11 15:56:07 -07:00
Fix buggy behaviour if user sets friendly name as blank.
Hide "clear logs" button when viewing PMS logs (it has no impact on those). Start major clean up of classes. Initial work to allow SSL communication to Plex servers.
This commit is contained in:
parent
6ecfb9c963
commit
e1e3659eb3
6 changed files with 202 additions and 242 deletions
|
@ -47,8 +47,10 @@ DOCUMENTATION :: END
|
||||||
async: true,
|
async: true,
|
||||||
success: function(data) {
|
success: function(data) {
|
||||||
$("#edit-user-status-message").html(data);
|
$("#edit-user-status-message").html(data);
|
||||||
|
if ($.trim(friendly_name) !== '') {
|
||||||
$(".set-username").html(friendly_name);
|
$(".set-username").html(friendly_name);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -22,7 +22,7 @@ from plexpy import helpers
|
||||||
<div class="dashboard-wellheader-no-chevron">
|
<div class="dashboard-wellheader-no-chevron">
|
||||||
<div class="span9"><h2><i class="fa fa-book"></i> Logs</h2></div>
|
<div class="span9"><h2><i class="fa fa-book"></i> Logs</h2></div>
|
||||||
<div class="span3">
|
<div class="span3">
|
||||||
<div class="pull-right">
|
<div class="pull-right" id="clear-logs">
|
||||||
<h5><a id="menu_link_edit" href="clearLogs"><i class="fa fa-trash-o"></i> Clear log</a></h5>
|
<h5><a id="menu_link_edit" href="clearLogs"><i class="fa fa-trash-o"></i> Clear log</a></h5>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -118,11 +118,12 @@ from plexpy import helpers
|
||||||
}
|
}
|
||||||
|
|
||||||
$("#plexpy-logs-btn").click(function() {
|
$("#plexpy-logs-btn").click(function() {
|
||||||
|
$("#clear-logs").show();
|
||||||
LoadPlexPyLogs();
|
LoadPlexPyLogs();
|
||||||
});
|
});
|
||||||
|
|
||||||
$("#plex-logs-btn").click(function() {
|
$("#plex-logs-btn").click(function() {
|
||||||
console.log('clicked da button');
|
$("#clear-logs").hide();
|
||||||
LoadPlexLogs();
|
LoadPlexLogs();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -325,7 +325,7 @@ from plexpy import helpers
|
||||||
// Load edit user modal
|
// Load edit user modal
|
||||||
$("#toggle-edit-user-modal").click(function() {
|
$("#toggle-edit-user-modal").click(function() {
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: 'edit_user',
|
url: 'edit_user_dialog',
|
||||||
data: {user: '${data['username']}'},
|
data: {user: '${data['username']}'},
|
||||||
cache: false,
|
cache: false,
|
||||||
async: true,
|
async: true,
|
||||||
|
|
|
@ -946,7 +946,10 @@ class PlexWatch(object):
|
||||||
return output
|
return output
|
||||||
|
|
||||||
def set_user_friendly_name(self, user=None, friendly_name=None):
|
def set_user_friendly_name(self, user=None, friendly_name=None):
|
||||||
if user and friendly_name:
|
if user:
|
||||||
|
if friendly_name.strip() == '':
|
||||||
|
friendly_name = None
|
||||||
|
|
||||||
myDB = db.DBConnection()
|
myDB = db.DBConnection()
|
||||||
|
|
||||||
control_value_dict = {"username": user}
|
control_value_dict = {"username": user}
|
||||||
|
|
|
@ -31,6 +31,7 @@ class PmsConnect(object):
|
||||||
self.host = plexpy.CONFIG.PMS_IP
|
self.host = plexpy.CONFIG.PMS_IP
|
||||||
self.port = str(plexpy.CONFIG.PMS_PORT)
|
self.port = str(plexpy.CONFIG.PMS_PORT)
|
||||||
self.token = plexpy.CONFIG.PMS_TOKEN
|
self.token = plexpy.CONFIG.PMS_TOKEN
|
||||||
|
self.protocol = 'HTTP'
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Return base url of Plex Server.
|
Return base url of Plex Server.
|
||||||
|
@ -39,11 +40,77 @@ class PmsConnect(object):
|
||||||
"""
|
"""
|
||||||
def get_base_url(self):
|
def get_base_url(self):
|
||||||
if self.host != '' and self.port != '':
|
if self.host != '' and self.port != '':
|
||||||
base_url = 'http://' + self.host + ':' + self.port
|
base_url = self.protocol + self.host + ':' + self.port
|
||||||
return base_url
|
return base_url
|
||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
"""
|
||||||
|
Handle the HTTP requests.
|
||||||
|
|
||||||
|
Output: object
|
||||||
|
"""
|
||||||
|
def make_request(self, uri=None, proto='HTTP', request_type='GET', output_format='xml'):
|
||||||
|
|
||||||
|
valid_request_types = ['GET', 'POST', 'PUT', 'DELETE']
|
||||||
|
|
||||||
|
if request_type.upper() not in valid_request_types:
|
||||||
|
logger.debug(u"HTTP request made but unsupported request type given.")
|
||||||
|
return None
|
||||||
|
|
||||||
|
if uri:
|
||||||
|
if proto.upper() == 'HTTPS':
|
||||||
|
handler = HTTPSConnection(self.host, self.port, timeout=10)
|
||||||
|
else:
|
||||||
|
handler = HTTPConnection(self.host, self.port, timeout=10)
|
||||||
|
|
||||||
|
if uri.find('?') > 0:
|
||||||
|
token_string = '&X-Plex-Token=' + self.token
|
||||||
|
else:
|
||||||
|
token_string = '?X-Plex-Token=' + self.token
|
||||||
|
|
||||||
|
try:
|
||||||
|
handler.request(request_type, uri + token_string)
|
||||||
|
response = handler.getresponse()
|
||||||
|
request_status = response.status
|
||||||
|
request_content = response.read()
|
||||||
|
except IOError, e:
|
||||||
|
logger.warn(u"Failed to access uri endpoint %s with error %s" % (uri, e))
|
||||||
|
return None
|
||||||
|
|
||||||
|
if request_status == 200:
|
||||||
|
if output_format == 'dict':
|
||||||
|
output = helpers.convert_xml_to_dict(request_content)
|
||||||
|
elif output_format == 'json':
|
||||||
|
output = helpers.convert_xml_to_json(request_content)
|
||||||
|
elif output_format == 'xml':
|
||||||
|
output = self.parse_xml(request_content)
|
||||||
|
else:
|
||||||
|
output = request_content
|
||||||
|
|
||||||
|
return output
|
||||||
|
else:
|
||||||
|
logger.warn(u"Failed to access uri endpoint %s. Status code %r" % (uri, request_status))
|
||||||
|
return []
|
||||||
|
else:
|
||||||
|
logger.debug(u"HTTP request made but no enpoint given.")
|
||||||
|
return None
|
||||||
|
|
||||||
|
def parse_xml(self, unparsed=None):
|
||||||
|
if unparsed:
|
||||||
|
try:
|
||||||
|
xml_parse = minidom.parseString(unparsed)
|
||||||
|
return xml_parse
|
||||||
|
except Exception, e:
|
||||||
|
logger.warn("Error parsing XML for Plex recently added: %s" % e)
|
||||||
|
return []
|
||||||
|
except:
|
||||||
|
logger.warn("Error parsing XML for Plex recently added.")
|
||||||
|
return []
|
||||||
|
else:
|
||||||
|
logger.warn("XML parse request made but no data received.")
|
||||||
|
return []
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Return current sessions.
|
Return current sessions.
|
||||||
|
|
||||||
|
@ -52,30 +119,13 @@ class PmsConnect(object):
|
||||||
Output: array
|
Output: array
|
||||||
"""
|
"""
|
||||||
def get_sessions(self, output_format=''):
|
def get_sessions(self, output_format=''):
|
||||||
url_command = '/status/sessions'
|
uri = '/status/sessions'
|
||||||
http_handler = HTTPConnection(self.host, self.port, timeout=10)
|
request = self.make_request(uri=uri,
|
||||||
|
proto=self.protocol,
|
||||||
|
request_type='GET',
|
||||||
|
output_format=output_format)
|
||||||
|
|
||||||
try:
|
return request
|
||||||
http_handler.request("GET", url_command + '?X-Plex-Token=' + self.token)
|
|
||||||
response = http_handler.getresponse()
|
|
||||||
request_status = response.status
|
|
||||||
request_content = response.read()
|
|
||||||
except IOError, e:
|
|
||||||
logger.warn(u"Failed to access sessions. %s" % e)
|
|
||||||
return None
|
|
||||||
|
|
||||||
if request_status == 200:
|
|
||||||
if output_format == 'dict':
|
|
||||||
output = helpers.convert_xml_to_dict(request_content)
|
|
||||||
elif output_format == 'json':
|
|
||||||
output = helpers.convert_xml_to_json(request_content)
|
|
||||||
else:
|
|
||||||
output = request_content
|
|
||||||
else:
|
|
||||||
logger.warn(u"Failed to access sessions. Status code %r" % request_status)
|
|
||||||
return None
|
|
||||||
|
|
||||||
return output
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Return metadata for request item.
|
Return metadata for request item.
|
||||||
|
@ -86,30 +136,13 @@ class PmsConnect(object):
|
||||||
Output: array
|
Output: array
|
||||||
"""
|
"""
|
||||||
def get_metadata(self, rating_key='', output_format=''):
|
def get_metadata(self, rating_key='', output_format=''):
|
||||||
url_command = '/library/metadata/' + rating_key
|
uri = '/library/metadata/' + rating_key
|
||||||
http_handler = HTTPConnection(self.host, self.port, timeout=10)
|
request = self.make_request(uri=uri,
|
||||||
|
proto=self.protocol,
|
||||||
|
request_type='GET',
|
||||||
|
output_format=output_format)
|
||||||
|
|
||||||
try:
|
return request
|
||||||
http_handler.request("GET", url_command + '?X-Plex-Token=' + self.token)
|
|
||||||
response = http_handler.getresponse()
|
|
||||||
request_status = response.status
|
|
||||||
request_content = response.read()
|
|
||||||
except IOError, e:
|
|
||||||
logger.warn(u"Failed to access metadata. %s" % e)
|
|
||||||
return None
|
|
||||||
|
|
||||||
if request_status == 200:
|
|
||||||
if output_format == 'dict':
|
|
||||||
output = helpers.convert_xml_to_dict(request_content)
|
|
||||||
elif output_format == 'json':
|
|
||||||
output = helpers.convert_xml_to_json(request_content)
|
|
||||||
else:
|
|
||||||
output = request_content
|
|
||||||
else:
|
|
||||||
logger.warn(u"Failed to access metadata. Status code %r" % request_status)
|
|
||||||
return None
|
|
||||||
|
|
||||||
return output
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Return list of recently added items.
|
Return list of recently added items.
|
||||||
|
@ -120,30 +153,13 @@ class PmsConnect(object):
|
||||||
Output: array
|
Output: array
|
||||||
"""
|
"""
|
||||||
def get_recently_added(self, count='0', output_format=''):
|
def get_recently_added(self, count='0', output_format=''):
|
||||||
url_command = '/library/recentlyAdded?X-Plex-Container-Start=0&X-Plex-Container-Size=' + count
|
uri = '/library/recentlyAdded?X-Plex-Container-Start=0&X-Plex-Container-Size=' + count
|
||||||
http_handler = HTTPConnection(self.host, self.port, timeout=10)
|
request = self.make_request(uri=uri,
|
||||||
|
proto=self.protocol,
|
||||||
|
request_type='GET',
|
||||||
|
output_format=output_format)
|
||||||
|
|
||||||
try:
|
return request
|
||||||
http_handler.request("GET", url_command + '&X-Plex-Token=' + self.token)
|
|
||||||
response = http_handler.getresponse()
|
|
||||||
request_status = response.status
|
|
||||||
request_content = response.read()
|
|
||||||
except IOError, e:
|
|
||||||
logger.warn(u"Failed to access recently added items. %s" % e)
|
|
||||||
return None
|
|
||||||
|
|
||||||
if request_status == 200:
|
|
||||||
if output_format == 'dict':
|
|
||||||
output = helpers.convert_xml_to_dict(request_content)
|
|
||||||
elif output_format == 'json':
|
|
||||||
output = helpers.convert_xml_to_json(request_content)
|
|
||||||
else:
|
|
||||||
output = request_content
|
|
||||||
else:
|
|
||||||
logger.warn(u"Failed to access recently added. Status code %r" % request_status)
|
|
||||||
return None
|
|
||||||
|
|
||||||
return output
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Return list of episodes in requested season.
|
Return list of episodes in requested season.
|
||||||
|
@ -154,30 +170,13 @@ class PmsConnect(object):
|
||||||
Output: array
|
Output: array
|
||||||
"""
|
"""
|
||||||
def get_episode_list(self, rating_key='', output_format=''):
|
def get_episode_list(self, rating_key='', output_format=''):
|
||||||
url_command = '/library/metadata/' + rating_key + '/children'
|
uri = '/library/metadata/' + rating_key + '/children'
|
||||||
http_handler = HTTPConnection(self.host, self.port, timeout=10)
|
request = self.make_request(uri=uri,
|
||||||
|
proto=self.protocol,
|
||||||
|
request_type='GET',
|
||||||
|
output_format=output_format)
|
||||||
|
|
||||||
try:
|
return request
|
||||||
http_handler.request("GET", url_command + '?X-Plex-Token=' + self.token)
|
|
||||||
response = http_handler.getresponse()
|
|
||||||
request_status = response.status
|
|
||||||
request_content = response.read()
|
|
||||||
except IOError, e:
|
|
||||||
logger.warn(u"Failed to access metadata. %s" % e)
|
|
||||||
return None
|
|
||||||
|
|
||||||
if request_status == 200:
|
|
||||||
if output_format == 'dict':
|
|
||||||
output = helpers.convert_xml_to_dict(request_content)
|
|
||||||
elif output_format == 'json':
|
|
||||||
output = helpers.convert_xml_to_json(request_content)
|
|
||||||
else:
|
|
||||||
output = request_content
|
|
||||||
else:
|
|
||||||
logger.warn(u"Failed to access metadata. Status code %r" % request_status)
|
|
||||||
return None
|
|
||||||
|
|
||||||
return output
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Return list of local servers.
|
Return list of local servers.
|
||||||
|
@ -187,30 +186,13 @@ class PmsConnect(object):
|
||||||
Output: array
|
Output: array
|
||||||
"""
|
"""
|
||||||
def get_server_list(self, output_format=''):
|
def get_server_list(self, output_format=''):
|
||||||
url_command = '/servers'
|
uri = '/servers'
|
||||||
http_handler = HTTPConnection(self.host, self.port, timeout=10)
|
request = self.make_request(uri=uri,
|
||||||
|
proto=self.protocol,
|
||||||
|
request_type='GET',
|
||||||
|
output_format=output_format)
|
||||||
|
|
||||||
try:
|
return request
|
||||||
http_handler.request("GET", url_command + '?X-Plex-Token=' + self.token)
|
|
||||||
response = http_handler.getresponse()
|
|
||||||
request_status = response.status
|
|
||||||
request_content = response.read()
|
|
||||||
except IOError, e:
|
|
||||||
logger.warn(u"Failed to access metadata. %s" % e)
|
|
||||||
return None
|
|
||||||
|
|
||||||
if request_status == 200:
|
|
||||||
if output_format == 'dict':
|
|
||||||
output = helpers.convert_xml_to_dict(request_content)
|
|
||||||
elif output_format == 'json':
|
|
||||||
output = helpers.convert_xml_to_json(request_content)
|
|
||||||
else:
|
|
||||||
output = request_content
|
|
||||||
else:
|
|
||||||
logger.warn(u"Failed to access metadata. Status code %r" % request_status)
|
|
||||||
return None
|
|
||||||
|
|
||||||
return output
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Return the local servers preferences.
|
Return the local servers preferences.
|
||||||
|
@ -220,30 +202,13 @@ class PmsConnect(object):
|
||||||
Output: array
|
Output: array
|
||||||
"""
|
"""
|
||||||
def get_server_prefs(self, output_format=''):
|
def get_server_prefs(self, output_format=''):
|
||||||
url_command = '/:/prefs'
|
uri = '/:/prefs'
|
||||||
http_handler = HTTPConnection(self.host, self.port, timeout=10)
|
request = self.make_request(uri=uri,
|
||||||
|
proto=self.protocol,
|
||||||
|
request_type='GET',
|
||||||
|
output_format=output_format)
|
||||||
|
|
||||||
try:
|
return request
|
||||||
http_handler.request("GET", url_command + '?X-Plex-Token=' + self.token)
|
|
||||||
response = http_handler.getresponse()
|
|
||||||
request_status = response.status
|
|
||||||
request_content = response.read()
|
|
||||||
except IOError, e:
|
|
||||||
logger.warn(u"Failed to access metadata. %s" % e)
|
|
||||||
return None
|
|
||||||
|
|
||||||
if request_status == 200:
|
|
||||||
if output_format == 'dict':
|
|
||||||
output = helpers.convert_xml_to_dict(request_content)
|
|
||||||
elif output_format == 'json':
|
|
||||||
output = helpers.convert_xml_to_json(request_content)
|
|
||||||
else:
|
|
||||||
output = request_content
|
|
||||||
else:
|
|
||||||
logger.warn(u"Failed to access metadata. Status code %r" % request_status)
|
|
||||||
return None
|
|
||||||
|
|
||||||
return output
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Return the local server identity.
|
Return the local server identity.
|
||||||
|
@ -253,30 +218,46 @@ class PmsConnect(object):
|
||||||
Output: array
|
Output: array
|
||||||
"""
|
"""
|
||||||
def get_local_server_identity(self, output_format=''):
|
def get_local_server_identity(self, output_format=''):
|
||||||
url_command = '/identity'
|
uri = '/identity'
|
||||||
http_handler = HTTPConnection(self.host, self.port, timeout=10)
|
request = self.make_request(uri=uri,
|
||||||
|
proto=self.protocol,
|
||||||
|
request_type='GET',
|
||||||
|
output_format=output_format)
|
||||||
|
|
||||||
try:
|
return request
|
||||||
http_handler.request("GET", url_command + '?X-Plex-Token=' + self.token)
|
|
||||||
response = http_handler.getresponse()
|
|
||||||
request_status = response.status
|
|
||||||
request_content = response.read()
|
|
||||||
except IOError, e:
|
|
||||||
logger.warn(u"Failed to access Plex server identity. %s" % e)
|
|
||||||
return None
|
|
||||||
|
|
||||||
if request_status == 200:
|
"""
|
||||||
if output_format == 'dict':
|
Return sync item details.
|
||||||
output = helpers.convert_xml_to_dict(request_content)
|
|
||||||
elif output_format == 'json':
|
|
||||||
output = helpers.convert_xml_to_json(request_content)
|
|
||||||
else:
|
|
||||||
output = request_content
|
|
||||||
else:
|
|
||||||
logger.warn(u"Failed to access Plex server identity. Status code %r" % request_status)
|
|
||||||
return None
|
|
||||||
|
|
||||||
return output
|
Parameters required: sync_id { unique sync id for item }
|
||||||
|
Optional parameters: output_format { dict, json }
|
||||||
|
|
||||||
|
Output: array
|
||||||
|
"""
|
||||||
|
def get_sync_item(self, sync_id=None, output_format=''):
|
||||||
|
uri = '/sync/items/' + sync_id
|
||||||
|
request = self.make_request(uri=uri,
|
||||||
|
proto=self.protocol,
|
||||||
|
request_type='GET',
|
||||||
|
output_format=output_format)
|
||||||
|
|
||||||
|
return request
|
||||||
|
|
||||||
|
"""
|
||||||
|
Return sync transcode queue.
|
||||||
|
|
||||||
|
Optional parameters: output_format { dict, json }
|
||||||
|
|
||||||
|
Output: array
|
||||||
|
"""
|
||||||
|
def get_sync_transcode_queue(self, output_format=''):
|
||||||
|
uri = '/sync/transcodeQueue'
|
||||||
|
request = self.make_request(uri=uri,
|
||||||
|
proto=self.protocol,
|
||||||
|
request_type='GET',
|
||||||
|
output_format=output_format)
|
||||||
|
|
||||||
|
return request
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Return processed and validated list of recently added items.
|
Return processed and validated list of recently added items.
|
||||||
|
@ -286,19 +267,10 @@ class PmsConnect(object):
|
||||||
Output: array
|
Output: array
|
||||||
"""
|
"""
|
||||||
def get_recently_added_details(self, count='0'):
|
def get_recently_added_details(self, count='0'):
|
||||||
recent = self.get_recently_added(count)
|
recent = self.get_recently_added(count, output_format='xml')
|
||||||
recents_list = []
|
recents_list = []
|
||||||
|
|
||||||
try:
|
xml_head = recent.getElementsByTagName('MediaContainer')
|
||||||
xml_parse = minidom.parseString(recent)
|
|
||||||
except Exception, e:
|
|
||||||
logger.warn("Error parsing XML for Plex recently added: %s" % e)
|
|
||||||
return None
|
|
||||||
except:
|
|
||||||
logger.warn("Error parsing XML for Plex recently added.")
|
|
||||||
return None
|
|
||||||
|
|
||||||
xml_head = xml_parse.getElementsByTagName('MediaContainer')
|
|
||||||
if not xml_head:
|
if not xml_head:
|
||||||
logger.warn("Error parsing XML for Plex recently added.")
|
logger.warn("Error parsing XML for Plex recently added.")
|
||||||
return None
|
return None
|
||||||
|
@ -354,19 +326,10 @@ class PmsConnect(object):
|
||||||
Output: array
|
Output: array
|
||||||
"""
|
"""
|
||||||
def get_metadata_details(self, rating_key=''):
|
def get_metadata_details(self, rating_key=''):
|
||||||
metadata = self.get_metadata(rating_key)
|
metadata = self.get_metadata(rating_key, output_format='xml')
|
||||||
metadata_list = []
|
metadata_list = []
|
||||||
|
|
||||||
try:
|
xml_head = metadata.getElementsByTagName('MediaContainer')
|
||||||
xml_parse = minidom.parseString(metadata)
|
|
||||||
except Exception, e:
|
|
||||||
logger.warn("Error parsing XML for Plex metadata: %s" % e)
|
|
||||||
return None
|
|
||||||
except:
|
|
||||||
logger.warn("Error parsing XML for Plex metadata.")
|
|
||||||
return None
|
|
||||||
|
|
||||||
xml_head = xml_parse.getElementsByTagName('MediaContainer')
|
|
||||||
if not xml_head:
|
if not xml_head:
|
||||||
logger.warn("Error parsing XML for Plex metadata.")
|
logger.warn("Error parsing XML for Plex metadata.")
|
||||||
return None
|
return None
|
||||||
|
@ -532,19 +495,10 @@ class PmsConnect(object):
|
||||||
Output: array
|
Output: array
|
||||||
"""
|
"""
|
||||||
def get_current_activity(self):
|
def get_current_activity(self):
|
||||||
session_data = self.get_sessions()
|
session_data = self.get_sessions(output_format='xml')
|
||||||
session_list = []
|
session_list = []
|
||||||
|
|
||||||
try:
|
xml_head = session_data.getElementsByTagName('MediaContainer')
|
||||||
xml_parse = minidom.parseString(session_data)
|
|
||||||
except Exception, e:
|
|
||||||
logger.warn("Error parsing XML for Plex session data: %s" % e)
|
|
||||||
return None
|
|
||||||
except:
|
|
||||||
logger.warn("Error parsing XML for Plex session data.")
|
|
||||||
return None
|
|
||||||
|
|
||||||
xml_head = xml_parse.getElementsByTagName('MediaContainer')
|
|
||||||
if not xml_head:
|
if not xml_head:
|
||||||
logger.warn("Error parsing XML for Plex session data.")
|
logger.warn("Error parsing XML for Plex session data.")
|
||||||
return None
|
return None
|
||||||
|
@ -764,19 +718,10 @@ class PmsConnect(object):
|
||||||
Output: array
|
Output: array
|
||||||
"""
|
"""
|
||||||
def get_season_children(self, rating_key=''):
|
def get_season_children(self, rating_key=''):
|
||||||
episode_data = self.get_episode_list(rating_key)
|
episode_data = self.get_episode_list(rating_key, output_format='xml')
|
||||||
episode_list = []
|
episode_list = []
|
||||||
|
|
||||||
try:
|
xml_head = episode_data.getElementsByTagName('MediaContainer')
|
||||||
xml_parse = minidom.parseString(episode_data)
|
|
||||||
except Exception, e:
|
|
||||||
logger.warn("Error parsing XML for Plex session data: %s" % e)
|
|
||||||
return None
|
|
||||||
except:
|
|
||||||
logger.warn("Error parsing XML for Plex session data.")
|
|
||||||
return None
|
|
||||||
|
|
||||||
xml_head = xml_parse.getElementsByTagName('MediaContainer')
|
|
||||||
if not xml_head:
|
if not xml_head:
|
||||||
logger.warn("Error parsing XML for Plex session data.")
|
logger.warn("Error parsing XML for Plex session data.")
|
||||||
return None
|
return None
|
||||||
|
@ -813,18 +758,9 @@ class PmsConnect(object):
|
||||||
Output: array
|
Output: array
|
||||||
"""
|
"""
|
||||||
def get_servers_info(self):
|
def get_servers_info(self):
|
||||||
recent = self.get_server_list()
|
recent = self.get_server_list(output_format='xml')
|
||||||
|
|
||||||
try:
|
xml_head = recent.getElementsByTagName('Server')
|
||||||
xml_parse = minidom.parseString(recent)
|
|
||||||
except Exception, e:
|
|
||||||
logger.warn("Error parsing XML for Plex server prefs: %s" % e)
|
|
||||||
return None
|
|
||||||
except:
|
|
||||||
logger.warn("Error parsing XML for Plex server prefs.")
|
|
||||||
return None
|
|
||||||
|
|
||||||
xml_head = xml_parse.getElementsByTagName('Server')
|
|
||||||
if not xml_head:
|
if not xml_head:
|
||||||
logger.warn("Error parsing XML for Plex server prefs.")
|
logger.warn("Error parsing XML for Plex server prefs.")
|
||||||
return None
|
return None
|
||||||
|
@ -848,18 +784,9 @@ class PmsConnect(object):
|
||||||
Output: dict
|
Output: dict
|
||||||
"""
|
"""
|
||||||
def get_server_identity(self):
|
def get_server_identity(self):
|
||||||
identity = self.get_local_server_identity()
|
identity = self.get_local_server_identity(output_format='xml')
|
||||||
|
|
||||||
try:
|
xml_head = identity.getElementsByTagName('MediaContainer')
|
||||||
xml_parse = minidom.parseString(identity)
|
|
||||||
except Exception, e:
|
|
||||||
logger.warn("Error parsing XML for Plex server identity: %s" % e)
|
|
||||||
return None
|
|
||||||
except:
|
|
||||||
logger.warn("Error parsing XML for Plex server identity.")
|
|
||||||
return None
|
|
||||||
|
|
||||||
xml_head = xml_parse.getElementsByTagName('MediaContainer')
|
|
||||||
if not xml_head:
|
if not xml_head:
|
||||||
logger.warn("Error parsing XML for Plex server identity.")
|
logger.warn("Error parsing XML for Plex server identity.")
|
||||||
return None
|
return None
|
||||||
|
|
|
@ -116,17 +116,8 @@ class WebInterface(object):
|
||||||
return serve_template(templatename="user.html", title="User", data=user_details)
|
return serve_template(templatename="user.html", title="User", data=user_details)
|
||||||
|
|
||||||
@cherrypy.expose
|
@cherrypy.expose
|
||||||
def edit_user(self, user=None, friendly_name=None, **kwargs):
|
def edit_user_dialog(self, user=None, **kwargs):
|
||||||
if user and friendly_name:
|
if user:
|
||||||
try:
|
|
||||||
plex_watch = plexwatch.PlexWatch()
|
|
||||||
plex_watch.set_user_friendly_name(user, friendly_name)
|
|
||||||
status_message = "Successfully updated user."
|
|
||||||
return status_message
|
|
||||||
except:
|
|
||||||
status_message = "Failed to updated user."
|
|
||||||
return status_message
|
|
||||||
elif user and not friendly_name:
|
|
||||||
try:
|
try:
|
||||||
plex_watch = plexwatch.PlexWatch()
|
plex_watch = plexwatch.PlexWatch()
|
||||||
result = {'user': user,
|
result = {'user': user,
|
||||||
|
@ -143,6 +134,18 @@ class WebInterface(object):
|
||||||
else:
|
else:
|
||||||
return serve_template(templatename="edit_user.html", title="Edit User", data=user, status_message='Unknown error.')
|
return serve_template(templatename="edit_user.html", title="Edit User", data=user, status_message='Unknown error.')
|
||||||
|
|
||||||
|
@cherrypy.expose
|
||||||
|
def edit_user(self, user=None, friendly_name=None, **kwargs):
|
||||||
|
if user:
|
||||||
|
try:
|
||||||
|
plex_watch = plexwatch.PlexWatch()
|
||||||
|
plex_watch.set_user_friendly_name(user, friendly_name)
|
||||||
|
status_message = "Successfully updated user."
|
||||||
|
return status_message
|
||||||
|
except:
|
||||||
|
status_message = "Failed to update user."
|
||||||
|
return status_message
|
||||||
|
|
||||||
@cherrypy.expose
|
@cherrypy.expose
|
||||||
def get_stream_data(self, row_id=None, user=None, **kwargs):
|
def get_stream_data(self, row_id=None, user=None, **kwargs):
|
||||||
|
|
||||||
|
@ -926,3 +929,27 @@ class WebInterface(object):
|
||||||
|
|
||||||
cherrypy.response.headers['Content-type'] = 'application/json'
|
cherrypy.response.headers['Content-type'] = 'application/json'
|
||||||
return json.dumps(output)
|
return json.dumps(output)
|
||||||
|
|
||||||
|
@cherrypy.expose
|
||||||
|
def get_sync_item(self, sync_id, **kwargs):
|
||||||
|
|
||||||
|
pms_connect = pmsconnect.PmsConnect()
|
||||||
|
result = pms_connect.get_sync_item(sync_id, output_format='json')
|
||||||
|
|
||||||
|
if result:
|
||||||
|
cherrypy.response.headers['Content-type'] = 'application/json'
|
||||||
|
return result
|
||||||
|
else:
|
||||||
|
logger.warn('Unable to retrieve data.')
|
||||||
|
|
||||||
|
@cherrypy.expose
|
||||||
|
def get_sync_transcode_queue(self, **kwargs):
|
||||||
|
|
||||||
|
pms_connect = pmsconnect.PmsConnect()
|
||||||
|
result = pms_connect.get_sync_transcode_queue(output_format='json')
|
||||||
|
|
||||||
|
if result:
|
||||||
|
cherrypy.response.headers['Content-type'] = 'application/json'
|
||||||
|
return result
|
||||||
|
else:
|
||||||
|
logger.warn('Unable to retrieve data.')
|
Loading…
Add table
Add a link
Reference in a new issue