def collectDataFromRoot(self, data): # Make sure we're processing data for our server, and not some other # server that happened to be at the same IP. if self.uuid != data.attrib.get('machineIdentifier'): util.LOG( "Got a reachability response, but from a different server") return False self.serverClass = data.attrib.get('serverClass') self.supportsAudioTranscoding = data.attrib.get( 'transcoderAudio') == '1' self.supportsVideoTranscoding = data.attrib.get( 'transcoderVideo') == '1' or data.attrib.get( 'transcoderVideoQualities') self.supportsVideoRemuxOnly = data.attrib.get( 'transcoderVideoRemuxOnly') == '1' self.supportsPhotoTranscoding = data.attrib.get( 'transcoderPhoto') == '1' or ( not data.attrib.get('transcoderPhoto') and not self.synced and not self.isSecondary()) self.allowChannelAccess = data.attrib.get( 'allowChannelAccess') == '1' or ( not data.attrib.get('allowChannelAccess') and self.owned and not self.synced and not self.isSecondary()) self.supportsScrobble = not self.isSecondary() or self.synced self.allowsMediaDeletion = not self.synced and self.owned and data.attrib.get( 'allowMediaDeletion') == '1' self.multiuser = data.attrib.get('multiuser') == '1' self.name = data.attrib.get('friendlyName') or self.name self.platform = data.attrib.get('platform') # TODO(schuyler): Process transcoder qualities self.rawVersion = data.attrib.get('version') if self.rawVersion: self.versionNorm = util.normalizedVersion(self.rawVersion) features = { 'mkvTranscode': '0.9.11.11', 'themeTranscode': '0.9.14.0', 'allPartsStreamSelection': '0.9.12.5', 'claimServer': '0.9.14.2', 'streamingBrain': '1.2.0' } for f, v in features.items(): if util.normalizedVersion(v) <= self.versionNorm: self.features[f] = True appMinVer = plexapp.INTERFACE.getGlobal('minServerVersionArr', '0.0.0.0') self.isSupported = self.isSecondary( ) or util.normalizedVersion(appMinVer) <= self.versionNorm util.DEBUG_LOG( "Server information updated from reachability check: {0}".format( self)) return True
def __init__(self, data=None): signalsmixin.SignalsMixin.__init__(self) plexresource.PlexResource.__init__(self, data) self.accessToken = None self.multiuser = False self.isSupported = None self.hasFallback = False self.supportsAudioTranscoding = False self.supportsVideoTranscoding = False self.supportsPhotoTranscoding = False self.supportsVideoRemuxOnly = False self.supportsScrobble = True self.allowsMediaDeletion = False self.allowChannelAccess = False self.activeConnection = None self.serverClass = None self.pendingReachabilityRequests = 0 self.pendingSecureRequests = 0 self.features = {} self.librariesByUuid = {} self.server = self self.session = http.Session() self.owner = None self.owned = False self.synced = False self.sameNetwork = False self.uuid = None self.name = None self.platform = None self.versionNorm = None self.rawVersion = None self.transcodeSupport = False if data is None: return self.owner = data.attrib.get('sourceTitle') self.owned = data.attrib.get('owned') == '1' self.synced = data.attrib.get('synced') == '1' self.sameNetwork = data.attrib.get('publicAddressMatches') == '1' self.uuid = data.attrib.get('clientIdentifier') self.name = data.attrib.get('name') self.platform = data.attrib.get('platform') self.rawVersion = data.attrib.get('productVersion') self.versionNorm = util.normalizedVersion(self.rawVersion) self.transcodeSupport = data.attrib.get('transcodeSupport') == '1'