diff --git a/data/interfaces/default/settings.html b/data/interfaces/default/settings.html index c8b7ecf6..4e01630a 100644 --- a/data/interfaces/default/settings.html +++ b/data/interfaces/default/settings.html @@ -2934,27 +2934,18 @@ $(document).ready(function() { var update_channel = update_params.pms_update_channel; var update_distro = update_params.pms_update_distro; var update_distro_build = update_params.pms_update_distro_build; - var plex_update_channel = update_params.plex_update_channel; $('#pms_update_channel option[value=beta]').remove(); if (plexpass) { - var selected = (update_channel == 'beta') ? true : false; - $('#pms_update_channel') - .append($('') - .text('Beta') - .val('beta') - .prop('selected', selected)); + $('#pms_update_channel').append($('').text('Beta').val('beta')) } - - var download_url = 'https://plex.tv/api/downloads/' + (plex_update_channel === 'plexpass' ? '5' : '1') + '.json?channel=' + plex_update_channel; + $('#pms_update_channel option[value=' + update_channel + ']').prop('selected', true); $.ajax({ - url: download_url, + url: 'get_pms_downloads', type: 'GET', + data: { update_channel: update_channel }, dataType: 'json', - beforeSend: function (xhr) { - xhr.setRequestHeader('X-Plex-Token', $('#pms_token').val()); - }, success: function (downloads) { var platform_downloads = downloads.computer[platform] || downloads.nas[platform]; if (platform_downloads) { diff --git a/plexpy/activity_pinger.py b/plexpy/activity_pinger.py index e667e943..f1aac594 100644 --- a/plexpy/activity_pinger.py +++ b/plexpy/activity_pinger.py @@ -261,7 +261,7 @@ def check_server_updates(): logger.info("Tautulli Monitor :: Checking for PMS updates...") plex_tv = plextv.PlexTV() - download_info = plex_tv.get_plex_downloads() + download_info = plex_tv.get_plex_update() if download_info: logger.info("Tautulli Monitor :: Current PMS version: %s", plexpy.CONFIG.PMS_VERSION) diff --git a/plexpy/plextv.py b/plexpy/plextv.py index d97c7797..d95f8d16 100644 --- a/plexpy/plextv.py +++ b/plexpy/plextv.py @@ -754,7 +754,16 @@ class PlexTV(object): return clean_servers - def get_plex_downloads(self): + def get_plex_downloads(self, update_channel): + plex_downloads = self.get_plextv_downloads(plexpass=(update_channel == 'beta')) + + try: + return json.loads(plex_downloads) + except Exception as e: + logger.warn("Tautulli PlexTV :: Unable to load JSON for get_plex_updates: %s", e) + return {} + + def get_plex_update(self): logger.debug("Tautulli PlexTV :: Retrieving current server version.") pms_connect = pmsconnect.PmsConnect() @@ -763,12 +772,9 @@ class PlexTV(object): update_channel = pms_connect.get_server_update_channel() logger.debug("Tautulli PlexTV :: Plex update channel is %s." % update_channel) - plex_downloads = self.get_plextv_downloads(plexpass=(update_channel == 'beta')) + available_downloads = self.get_plex_downloads(update_channel=update_channel) - try: - available_downloads = json.loads(plex_downloads) - except Exception as e: - logger.warn("Tautulli PlexTV :: Unable to load JSON for get_plex_updates.") + if not available_downloads: return {} # Get the updates for the platform diff --git a/plexpy/webserve.py b/plexpy/webserve.py index 0688642c..586c5c27 100644 --- a/plexpy/webserve.py +++ b/plexpy/webserve.py @@ -3423,6 +3423,14 @@ class WebInterface(object): if not response.ok: cherrypy.response.status = 401 + @cherrypy.expose + @cherrypy.tools.json_out() + @requireAuth(member_of("admin")) + def get_pms_downloads(self, update_channel, **kwargs): + plex_tv = plextv.PlexTV() + downloads = plex_tv.get_plex_downloads(update_channel=update_channel) + return downloads + @cherrypy.expose @cherrypy.tools.json_out() @requireAuth(member_of("admin")) @@ -3471,8 +3479,7 @@ class WebInterface(object): plexpy.CONFIG.PMS_PLATFORM, plexpy.CONFIG.PMS_PLATFORM), 'pms_update_channel': plexpy.CONFIG.PMS_UPDATE_CHANNEL, 'pms_update_distro': plexpy.CONFIG.PMS_UPDATE_DISTRO, - 'pms_update_distro_build': plexpy.CONFIG.PMS_UPDATE_DISTRO_BUILD, - 'plex_update_channel': 'plexpass' if update_channel == 'beta' else 'public'} + 'pms_update_distro_build': plexpy.CONFIG.PMS_UPDATE_DISTRO_BUILD} @cherrypy.expose @cherrypy.tools.json_out() @@ -6423,7 +6430,7 @@ class WebInterface(object): ``` """ plex_tv = plextv.PlexTV() - result = plex_tv.get_plex_downloads() + result = plex_tv.get_plex_update() return result @cherrypy.expose