From 8f329f53d7f7c53156f11dcd0077ad4564bee339 Mon Sep 17 00:00:00 2001 From: Jason Lawrence Date: Tue, 8 Oct 2019 16:06:45 -0500 Subject: [PATCH] Simplify query calls, fix proxy bug --- plexapi/client.py | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/plexapi/client.py b/plexapi/client.py index 94c93ada..511c8a8b 100644 --- a/plexapi/client.py +++ b/plexapi/client.py @@ -187,31 +187,27 @@ class PlexClient(PlexObject): log.debug('Client %s doesnt support %s controller.' 'What your trying might not work' % (self.title, controller)) + proxy = self._proxyThroughServer if proxy is None else proxy + query = self._server.query if proxy else self.query + # Workaround for ptp. See https://github.com/pkkid/python-plexapi/issues/244 t = time.time() if t - self._last_call >= 80 and self.product in ('ptp', 'Plex Media Player'): url = '/player/timeline/poll?wait=0&commandID=%s' % self._nextCommandId() - if proxy: - self._server.query(url, headers=headers) - else: - self.query(url, headers=headers) + query(url, headers=headers) self._last_call = t params['commandID'] = self._nextCommandId() key = '/player/%s%s' % (command, utils.joinArgs(params)) - proxy = self._proxyThroughServer if proxy is None else proxy - try: - if proxy: - return self._server.query(key, headers=headers) - return self.query(key, headers=headers) + return query(key, headers=headers) except ElementTree.ParseError: # Workaround for players which don't return valid XML on successful commands # - Plexamp: `b'OK'` - if self.product not in ('Plexamp'): - raise - + if self.product in ('Plexamp'): + return None + raise def url(self, key, includeToken=False): """ Build a URL string with proper token argument. Token will be appended to the URL