def _dispatch_play_media(self, media, offset): for client in self.PLEX_CLIENTS: if type(client) == str: clientItem = self.PLEX.client(client) elif type(client) == dict: clientItem = PlexClient(server=self.PLEX, baseurl=client['baseurl']) clientItem.playMedia(media, offset=offset)
def client(self, name): for elem in self.query('/clients'): if elem.attrib.get('name').lower() == name.lower(): baseurl = 'http://%s:%s' % (elem.attrib['address'], elem.attrib['port']) return PlexClient(baseurl, server=self, data=elem) raise NotFound('Unknown client name: %s' % name)
def clients(self): """ Returns list of all :class:`~plexapi.client.PlexClient` objects connected to server. """ items = [] cache_resource = None from plexapi.myplex import MyPlexResource for elem in self.query('/clients'): # Some shitty clients dont include a port.. port = elem.attrib.get('port') if port is None: log.debug( "%s didn't provide a port. Checking https://plex.tv/devices.xml" % elem.attrib.get('name')) data = cache_resource or self._server._session.get( 'https://plex.tv/devices.xml?X-Plex-Token=%s' % self.token) # noqa cache_resource = data resources = MyPlexResource(self, data) for resource in resources: if resource.clientIdentifier == elem.attrib.get( 'machineIdentifier'): for conn in resource.connection: if conn.local is True: port = conn.port break baseurl = 'http://%s:%s' % (elem.attrib['host'], port) items.append( PlexClient(baseurl=baseurl, server=self, data=elem, connect=False)) return items
def _connect(self, url, results, i): try: results[i] = (url, self.token, PlexClient(baseurl=url, token=self.token)) except Exception as err: log.error('%s: %s', url, err) results[i] = (url, self.token, None)
def clients(self): items = [] for elem in self.query('/clients'): baseurl = 'http://%s:%s' % (elem.attrib['address'], elem.attrib['port']) items.append(PlexClient(baseurl, server=self, data=elem)) return items
def connect_to_client(source, baseurl, machine_identifier, name="Unknown"): """Connect to a Plex client and return a PlexClient instance.""" try: client = PlexClient( server=self._plex_server, baseurl=baseurl, token=self._plex_server.createToken(), ) except requests.exceptions.ConnectionError: _LOGGER.error( "Direct client connection failed, will try again: %s (%s)", name, baseurl, ) except Unauthorized: _LOGGER.error( "Direct client connection unauthorized, ignoring: %s (%s)", name, baseurl, ) self._client_device_cache[machine_identifier] = None else: self._client_device_cache[client.machineIdentifier] = client process_device(source, client)
def findPlayer(server, data): elem = data.find('Player') if elem is not None: from plexapi.client import PlexClient baseurl = 'http://%s:%s' % (elem.attrib.get('address'), elem.attrib.get('port')) return PlexClient(baseurl, server=server, data=elem) return None
def clients(self): """ Returns a list of all :class:`~plexapi.client.PlexClient` objects connected to this server. """ items = [] for elem in self.query('/clients'): baseurl = 'http://%s:%s' % (elem.attrib['host'], elem.attrib['port']) items.append(PlexClient(baseurl, server=self, data=elem)) return items
def clients(self): """ Returns list of all :class:`~plexapi.client.PlexClient` objects connected to server. """ items = [] ports = None for elem in self.query('/clients'): port = elem.attrib.get('port') if not port: log.warn('%s did not advertise a port, checking plex.tv.', elem.attrib.get('name')) ports = self._myPlexClientPorts() if ports is None else ports port = ports.get(elem.attrib.get('machineIdentifier')) baseurl = 'http://%s:%s' % (elem.attrib['host'], port) items.append(PlexClient(baseurl=baseurl, server=self, data=elem, connect=False)) return items
def clients(self): """Query PMS for all clients connected to PMS. Returns: list: of Plexclient connnected to PMS """ items = [] for elem in self.query('/clients'): baseurl = 'http://%s:%s' % (elem.attrib['address'], elem.attrib['port']) items.append(PlexClient(baseurl, server=self, data=elem)) return items
def _connect(self, url, results, i): """Summary Args: url (TYPE): Description results (TYPE): Description i (TYPE): Description Returns: TYPE: Description """ try: results[i] = (url, self.token, PlexClient(url, self.token)) except NotFound as err: results[i] = (url, self.token, None)
def client(self, name): """ Returns the :class:`~plexapi.client.PlexClient` that matches the specified name. Parameters: name (str): Name of the client to return. Raises: :class:`~plexapi.exceptions.NotFound`: Unknown client name """ for elem in self.query('/clients'): if elem.attrib.get('name').lower() == name.lower(): baseurl = 'http://%s:%s' % (elem.attrib['host'], elem.attrib['port']) return PlexClient(baseurl=baseurl, server=self, data=elem) raise NotFound('Unknown client name: %s' % name)
def findPlayer(server, data): """Find a player in a elementthee Args: server (Plexserver): PMS your connected to data (xml.etree.ElementTree.Element): xml from pms as a element Returns: PlexClient or None """ elem = data.find('Player') if elem is not None: from plexapi.client import PlexClient baseurl = 'http://%s:%s' % (elem.attrib.get('address'), elem.attrib.get('port')) return PlexClient(baseurl, server=server, data=elem) return None
def client(self, name): """Querys PMS for all clients connected to PMS. Returns: Plexclient Args: name (str): client title, John's Iphone Raises: NotFound: Unknown client name Betty """ for elem in self.query('/clients'): if elem.attrib.get('name').lower() == name.lower(): baseurl = 'http://%s:%s' % (elem.attrib['address'], elem.attrib['port']) return PlexClient(baseurl, server=self, data=elem) raise NotFound('Unknown client name: %s' % name)
def client(self, name): """ Returns the :class:`~plexapi.client.PlexClient` that matches the specified name. Parameters: name (str): Name of the client to return. Raises: :class:`~plexapi.exceptions.NotFound`: Unknown client name """ for elem in self.query('/clients'): if elem.attrib.get('name').lower() == name.lower(): port = elem.attrib.get('port') if not port: log.warn('%s did not advertise a port, checking plex.tv.', elem.attrib.get('name')) ports = self._myPlexClientPorts() port = ports.get(elem.attrib.get('machineIdentifier')) baseurl = 'http://%s:%s' % (elem.attrib['host'], port) return PlexClient(baseurl=baseurl, server=self, data=elem) raise NotFound('Unknown client name: %s' % name)
def _connect(self, url, results, i): try: results[i] = (url, self.token, PlexClient(url, self.token)) except NotFound as err: print(err) results[i] = (url, self.token, None)
def safe_client(name, baseurl, server): try: return server.client(name) except NotFound as err: log(2, 'Warning: %s' % err) return PlexClient(baseurl, server=server)
def client(request, plex): return PlexClient(plex, baseurl=CLIENT_BASEURL, token=CLIENT_TOKEN)