diff --git a/data/interfaces/default/settings.html b/data/interfaces/default/settings.html index 0a2d2b9d..c770b7cd 100644 --- a/data/interfaces/default/settings.html +++ b/data/interfaces/default/settings.html @@ -553,9 +553,10 @@
-
+
@@ -2104,32 +2105,41 @@ $(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='plexpass']").remove(); + $('#pms_update_channel option[value=beta]').remove(); if (plexpass) { - var selected = (update_channel == 'plexpass') ? true : false; + var selected = (update_channel == 'beta') ? true : false; $('#pms_update_channel') .append($('') - .text('Plex Pass') - .val('plexpass') + .text('Beta') + .val('beta') .prop('selected', selected)); } - $.getJSON('https://plex.tv/api/downloads/1.json?channel=' + update_channel, function (downloads) { - platform_downloads = downloads.computer[platform] || downloads.nas[platform]; - if (platform_downloads) { - $("#pms_update_distro_build option").remove(); - $.each(platform_downloads.releases, function (index, item) { - var label = (platform_downloads.releases.length == 1) ? platform_downloads.name : platform_downloads.name + ' - ' + item.label; - var selected = (item.distro == update_distro && item.build == update_distro_build) ? true : false; - $('#pms_update_distro_build') - .append($('') - .text(label) - .val(item.build) - .attr('data-distro', item.distro) - .prop('selected', selected)); - }) - $('#pms_update_distro').val($("#pms_update_distro_build option:selected").data('distro')) + $.ajax({ + url: 'https://plex.tv/api/downloads/1.json?channel=' + plex_update_channel, + type: 'GET', + 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) { + $("#pms_update_distro_build option").remove(); + $.each(platform_downloads.releases, function (index, item) { + var label = (platform_downloads.releases.length === 1) ? platform_downloads.name : platform_downloads.name + ' - ' + item.label; + var selected = (item.distro === update_distro && item.build === update_distro_build) ? true : false; + $('#pms_update_distro_build') + .append($('') + .text(label) + .val(item.build) + .attr('data-distro', item.distro) + .prop('selected', selected)); + }); + $('#pms_update_distro').val($('#pms_update_distro_build option:selected').data('distro')) + } } }); }); diff --git a/plexpy/config.py b/plexpy/config.py index 9d7b72b2..76952e7a 100644 --- a/plexpy/config.py +++ b/plexpy/config.py @@ -61,7 +61,7 @@ _CONFIG_DEFINITIONS = { 'PMS_PLEXPASS': (int, 'PMS', 0), 'PMS_PLATFORM': (str, 'PMS', ''), 'PMS_VERSION': (str, 'PMS', ''), - 'PMS_UPDATE_CHANNEL': (str, 'PMS', 'public'), + 'PMS_UPDATE_CHANNEL': (str, 'PMS', 'plex'), 'PMS_UPDATE_DISTRO': (str, 'PMS', ''), 'PMS_UPDATE_DISTRO_BUILD': (str, 'PMS', ''), 'PMS_WEB_URL': (str, 'PMS', 'https://app.plex.tv/desktop'), @@ -876,3 +876,9 @@ class Config(object): self.MUSIC_WATCHED_PERCENT = self.NOTIFY_WATCHED_PERCENT self.CONFIG_VERSION = 9 + + if self.CONFIG_VERSION == 9: + if self.PMS_UPDATE_CHANNEL == 'plexpass': + self.PMS_UPDATE_CHANNEL = 'beta' + + self.CONFIG_VERSION = 10 diff --git a/plexpy/notification_handler.py b/plexpy/notification_handler.py index 628ef4cc..9af67043 100644 --- a/plexpy/notification_handler.py +++ b/plexpy/notification_handler.py @@ -839,6 +839,8 @@ def build_server_notify_params(notify_action=None, **kwargs): date_format = plexpy.CONFIG.DATE_FORMAT.replace('Do','') time_format = plexpy.CONFIG.TIME_FORMAT.replace('Do','') + update_channel = pmsconnect.PmsConnect().get_server_update_channel() + pms_download_info = defaultdict(str, kwargs.pop('pms_download_info', {})) plexpy_download_info = defaultdict(str, kwargs.pop('plexpy_download_info', {})) @@ -864,7 +866,7 @@ def build_server_notify_params(notify_action=None, **kwargs): 'update_url': pms_download_info['download_url'], 'update_release_date': arrow.get(pms_download_info['release_date']).format(date_format) if pms_download_info['release_date'] else '', - 'update_channel': 'Beta' if plexpy.CONFIG.PMS_UPDATE_CHANNEL == 'plexpass' else 'Public', + 'update_channel': 'Beta' if update_channel == 'beta' else 'Public', 'update_platform': pms_download_info['platform'], 'update_distro': pms_download_info['distro'], 'update_distro_build': pms_download_info['build'], diff --git a/plexpy/plextv.py b/plexpy/plextv.py index 8aa2f2aa..f816ee8a 100644 --- a/plexpy/plextv.py +++ b/plexpy/plextv.py @@ -648,10 +648,14 @@ class PlexTV(object): def get_plex_downloads(self): logger.debug(u"Tautulli PlexTV :: Retrieving current server version.") - pmsconnect.PmsConnect().set_server_version() - logger.debug(u"Tautulli PlexTV :: Plex update channel is %s." % plexpy.CONFIG.PMS_UPDATE_CHANNEL) - plex_downloads = self.get_plextv_downloads(plexpass=(plexpy.CONFIG.PMS_UPDATE_CHANNEL == 'plexpass')) + pms_connect = pmsconnect.PmsConnect() + pms_connect.set_server_version() + + update_channel = pms_connect.get_server_update_channel() + + logger.debug(u"Tautulli PlexTV :: Plex update channel is %s." % update_channel) + plex_downloads = self.get_plextv_downloads(plexpass=(update_channel == 'beta')) try: available_downloads = json.loads(plex_downloads) diff --git a/plexpy/pmsconnect.py b/plexpy/pmsconnect.py index a6f9a9fc..0d1dfe97 100644 --- a/plexpy/pmsconnect.py +++ b/plexpy/pmsconnect.py @@ -2586,4 +2586,15 @@ class PmsConnect(object): version = identity.get('version', plexpy.CONFIG.PMS_VERSION) plexpy.CONFIG.__setattr__('PMS_VERSION', version) - plexpy.CONFIG.write() \ No newline at end of file + plexpy.CONFIG.write() + + def get_server_update_channel(self): + if plexpy.CONFIG.PMS_UPDATE_CHANNEL == 'plex': + update_channel_value = self.get_server_pref('ButlerUpdateChannel') + + if update_channel_value == '8': + return 'beta' + else: + return 'public' + + return plexpy.CONFIG.PMS_UPDATE_CHANNEL diff --git a/plexpy/webserve.py b/plexpy/webserve.py index dfdefe8d..a33e6c14 100644 --- a/plexpy/webserve.py +++ b/plexpy/webserve.py @@ -2798,12 +2798,16 @@ class WebInterface(object): def get_server_update_params(self, **kwargs): plex_tv = plextv.PlexTV() plexpass = plex_tv.get_plexpass_status() + + update_channel = pmsconnect.PmsConnect().get_server_update_channel() + return {'plexpass': plexpass, 'pms_platform': common.PMS_PLATFORM_NAME_OVERRIDES.get( 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} + 'pms_update_distro_build': plexpy.CONFIG.PMS_UPDATE_DISTRO_BUILD, + 'plex_update_channel': 'plexpass' if update_channel == 'beta' else 'public'} @cherrypy.expose @cherrypy.tools.json_out()