def __init__(self, username=None, password=None, token=None, headers=None): self.username = username self.password = password self.token = token self.urls = 'https://plex.tv' self.timeout = plexpy.CONFIG.PMS_TIMEOUT self.ssl_verify = plexpy.CONFIG.VERIFY_SSL_CERT if self.username is None and self.password is None: if not self.token: # Check if we should use the admin token, or the guest server token if session.get_session_user_id(): user_data = users.Users() user_tokens = user_data.get_tokens(user_id=session.get_session_user_id()) self.token = user_tokens['server_token'] else: self.token = plexpy.CONFIG.PMS_TOKEN if not self.token: logger.error("Tautulli PlexTV :: PlexTV called, but no token provided.") return self.request_handler = http_handler.HTTPHandler(urls=self.urls, token=self.token, timeout=self.timeout, ssl_verify=self.ssl_verify, headers=headers)
def __init__(self): QtGui.QWidget.__init__(self) self.httpHandler = http_handler.HTTPHandler() self.dataRetrievingManager = data_retrieving_manager.DataRetrievingManager( self) self.waterHeaterModule = water_heater_module.WaterHeaterModule(self) self.generalConfigWindow = general_config_window.GeneralConfigWindow( self) self.modulesDict = {} self.pagesList = [] self.pageTitleConsumers = [] self.currentPageIndex = 0
def __init__(self, _parent): QtCore.QObject.__init__(self, parent=_parent) self.autoControlWindow = auto_control_window.AutoControlWindow( _parent, self) self.httpHandler = http_handler.HTTPHandler() self.onTime = None self.offTime = None self.durationTime = None self.autoCtrlEnabled = True self.onRequestParam = (None, None) self.offRequestParam = (None, None) self.updateTimer = QtCore.QTimer() self.consumers = {} self.queue = _parent.getDataRetrievingManager().getQueue()
def __init__(self, username=None, password=None, token=None): self.protocol = 'HTTPS' self.username = username self.password = password self.ssl_verify = plexpy.CONFIG.VERIFY_SSL_CERT if not token: # Check if we should use the admin token, or the guest server token if session.get_session_user_id(): user_data = users.Users() user_tokens = user_data.get_tokens(user_id=session.get_session_user_id()) self.token = user_tokens['server_token'] else: self.token = plexpy.CONFIG.PMS_TOKEN else: self.token = token self.request_handler = http_handler.HTTPHandler(host='plex.tv', port=443, token=self.token, ssl_verify=self.ssl_verify)
def discover(self, include_cloud=True, all_servers=False): """ Query plex for all servers online. Returns the ones you own in a selectize format """ # Try to discover localhost server local_machine_identifier = None request_handler = http_handler.HTTPHandler( urls='http://127.0.0.1:32400', timeout=1, ssl_verify=False, silent=True) request = request_handler.make_request(uri='/identity', request_type='GET', output_format='xml') if request: xml_head = request.getElementsByTagName('MediaContainer')[0] local_machine_identifier = xml_head.getAttribute( 'machineIdentifier') local_server = { 'httpsRequired': '0', 'clientIdentifier': local_machine_identifier, 'label': 'Local', 'ip': '127.0.0.1', 'port': '32400', 'uri': 'http://127.0.0.1:32400', 'local': '1', 'value': '127.0.0.1:32400', 'is_cloud': False } servers = self.get_plextv_resources(include_https=True, output_format='xml') clean_servers = [] try: xml_head = servers.getElementsByTagName('MediaContainer') except Exception as e: logger.warn( "Tautulli PlexTV :: Failed to get servers from plex: %s." % e) return [] for a in xml_head: if a.getAttribute('size'): if a.getAttribute('size') == '0': return [] if a.getElementsByTagName('Device'): devices = a.getElementsByTagName('Device') for d in devices: if helpers.get_xml_attr(d, 'presence') == '1' and \ helpers.get_xml_attr(d, 'owned') == '1' and \ helpers.get_xml_attr(d, 'provides') == 'server': is_cloud = (helpers.get_xml_attr( d, 'platform').lower() == 'cloud') if not include_cloud and is_cloud: continue connections = d.getElementsByTagName('Connection') for c in connections: if not all_servers: # If this is a remote server don't show any local IPs. if helpers.get_xml_attr(d, 'publicAddressMatches') == '0' and \ helpers.get_xml_attr(c, 'local') == '1': continue # If this is a local server don't show any remote IPs. if helpers.get_xml_attr(d, 'publicAddressMatches') == '1' and \ helpers.get_xml_attr(c, 'local') == '0': continue if helpers.get_xml_attr( d, 'clientIdentifier' ) == local_machine_identifier: local_server[ 'httpsRequired'] = helpers.get_xml_attr( d, 'httpsRequired') local_server['label'] = helpers.get_xml_attr( d, 'name') clean_servers.append(local_server) local_machine_identifier = None server = { 'httpsRequired': '1' if is_cloud else helpers.get_xml_attr( d, 'httpsRequired'), 'clientIdentifier': helpers.get_xml_attr(d, 'clientIdentifier'), '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') + ':' + helpers.get_xml_attr(c, 'port'), 'is_cloud': is_cloud } clean_servers.append(server) if local_machine_identifier: clean_servers.append(local_server) clean_servers.sort( key=lambda s: (s['label'], -int(s['local']), s['ip'])) return clean_servers