Treat each player as a 'device' for non-client devices. (#20074)

This commit is contained in:
Richard Mitchell 2019-01-29 08:15:42 +00:00 committed by Pascal Vizeli
parent 6859d5216e
commit a7c74151bc

View File

@ -174,11 +174,11 @@ def setup_plexserver(
# add devices with a session and no client (ex. PlexConnect Apple TV's) # add devices with a session and no client (ex. PlexConnect Apple TV's)
if config.get(CONF_INCLUDE_NON_CLIENTS): if config.get(CONF_INCLUDE_NON_CLIENTS):
for machine_identifier, session in plex_sessions.items(): for machine_identifier, (session, player) in plex_sessions.items():
if (machine_identifier not in plex_clients if (machine_identifier not in plex_clients
and machine_identifier is not None): and machine_identifier is not None):
new_client = PlexClient( new_client = PlexClient(
config, None, session, plex_sessions, update_devices, config, player, session, plex_sessions, update_devices,
update_sessions) update_sessions)
plex_clients[machine_identifier] = new_client plex_clients[machine_identifier] = new_client
new_plex_clients.append(new_client) new_plex_clients.append(new_client)
@ -192,7 +192,9 @@ def setup_plexserver(
client.force_idle() client.force_idle()
client.set_availability(client.machine_identifier client.set_availability(client.machine_identifier
in available_client_ids) in available_client_ids
or client.machine_identifier
in plex_sessions)
if not config.get(CONF_REMOVE_UNAVAILABLE_CLIENTS) \ if not config.get(CONF_REMOVE_UNAVAILABLE_CLIENTS) \
or client.available: or client.available:
@ -225,7 +227,7 @@ def setup_plexserver(
plex_sessions.clear() plex_sessions.clear()
for session in sessions: for session in sessions:
for player in session.players: for player in session.players:
plex_sessions[player.machineIdentifier] = session plex_sessions[player.machineIdentifier] = session, player
update_sessions() update_sessions()
update_devices() update_devices()
@ -363,6 +365,8 @@ class PlexClient(MediaPlayerDevice):
def refresh(self, device, session): def refresh(self, device, session):
"""Refresh key device data.""" """Refresh key device data."""
import plexapi.exceptions
# new data refresh # new data refresh
self._clear_media_details() self._clear_media_details()
@ -370,7 +374,11 @@ class PlexClient(MediaPlayerDevice):
self._session = session self._session = session
if device: if device:
self._device = device self._device = device
if "127.0.0.1" in self._device.url("/"): try:
device_url = self._device.url("/")
except plexapi.exceptions.BadRequest:
device_url = '127.0.0.1'
if "127.0.0.1" in device_url:
self._device.proxyThroughServer() self._device.proxyThroughServer()
self._session = None self._session = None
self._machine_identifier = self._device.machineIdentifier self._machine_identifier = self._device.machineIdentifier
@ -379,12 +387,13 @@ class PlexClient(MediaPlayerDevice):
self._device.protocolCapabilities) self._device.protocolCapabilities)
# set valid session, preferring device session # set valid session, preferring device session
if self.plex_sessions.get(self._device.machineIdentifier, None): if self._device.machineIdentifier in self.plex_sessions:
self._session = self.plex_sessions.get( self._session = self.plex_sessions.get(
self._device.machineIdentifier, None) self._device.machineIdentifier, [None, None])[0]
if self._session: if self._session:
if self._device.machineIdentifier is not None and \ if self._device is not None and\
self._device.machineIdentifier is not None and \
self._session.players: self._session.players:
self._is_player_available = True self._is_player_available = True
self._player = [p for p in self._session.players self._player = [p for p in self._session.players