From 9d40ae96b561a6d75033004ca674a07f9694938e Mon Sep 17 00:00:00 2001 From: jjlawren Date: Mon, 22 Jun 2020 07:48:40 -0500 Subject: [PATCH] Set Plex media_player discovery source as an attribute (#36884) --- homeassistant/components/plex/const.py | 1 + homeassistant/components/plex/media_player.py | 4 +++- homeassistant/components/plex/server.py | 13 ++++++++++--- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/homeassistant/components/plex/const.py b/homeassistant/components/plex/const.py index 8fd666eee77..e8077a00983 100644 --- a/homeassistant/components/plex/const.py +++ b/homeassistant/components/plex/const.py @@ -15,6 +15,7 @@ DEBOUNCE_TIMEOUT = 1 DISPATCHERS = "dispatchers" PLATFORMS = frozenset(["media_player", "sensor"]) PLATFORMS_COMPLETED = "platforms_completed" +PLAYER_SOURCE = "player_source" SERVERS = "servers" WEBSOCKETS = "websockets" diff --git a/homeassistant/components/plex/media_player.py b/homeassistant/components/plex/media_player.py index 127eb1c5685..d467b962dad 100644 --- a/homeassistant/components/plex/media_player.py +++ b/homeassistant/components/plex/media_player.py @@ -90,11 +90,12 @@ def _async_add_entities( class PlexMediaPlayer(MediaPlayerEntity): """Representation of a Plex device.""" - def __init__(self, plex_server, device, session=None): + def __init__(self, plex_server, device, player_source, session=None): """Initialize the Plex device.""" self.plex_server = plex_server self.device = device self.session = session + self.player_source = player_source self._app_name = "" self._available = False self._device_protocol_capabilities = None @@ -596,6 +597,7 @@ class PlexMediaPlayer(MediaPlayerEntity): "session_username": self.username, "media_library_name": self._app_name, "summary": self.media_summary, + "player_source": self.player_source, } return attr diff --git a/homeassistant/components/plex/server.py b/homeassistant/components/plex/server.py index 4cee49c3c33..05dae668512 100644 --- a/homeassistant/components/plex/server.py +++ b/homeassistant/components/plex/server.py @@ -32,6 +32,7 @@ from .const import ( DEBOUNCE_TIMEOUT, DEFAULT_VERIFY_SSL, DOMAIN, + PLAYER_SOURCE, PLEX_NEW_MP_SIGNAL, PLEX_UPDATE_MEDIA_PLAYER_SIGNAL, PLEX_UPDATE_SENSOR_SIGNAL, @@ -257,6 +258,9 @@ class PlexServer: def process_device(source, device): self._known_idle.discard(device.machineIdentifier) available_clients.setdefault(device.machineIdentifier, {"device": device}) + available_clients[device.machineIdentifier].setdefault( + PLAYER_SOURCE, source + ) if device.machineIdentifier not in ignored_clients: if self.option_ignore_plexweb_clients and device.product == "Plex Web": @@ -275,11 +279,14 @@ class PlexServer: ): new_clients.add(device.machineIdentifier) _LOGGER.debug( - "New %s %s: %s", device.product, source, device.machineIdentifier + "New %s from %s: %s", + device.product, + source, + device.machineIdentifier, ) for device in devices: - process_device("device", device) + process_device("PMS", device) def connect_to_resource(resource): """Connect to a plex.tv resource and return a Plex client.""" @@ -303,7 +310,7 @@ class PlexServer: connect_to_resource, plextv_client ) if device: - process_device("resource", device) + process_device("plex.tv", device) for session in sessions: if session.TYPE == "photo":