Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 13 additions & 12 deletions homeassistant/components/plex/server.py
Original file line number Diff line number Diff line change
Expand Up @@ -207,36 +207,37 @@ async def _async_update_platforms(self):
)
return

for device in devices:
def process_device(source, device):
self._known_idle.discard(device.machineIdentifier)
available_clients[device.machineIdentifier] = {"device": device}
available_clients.setdefault(device.machineIdentifier, {"device": device})

if device.machineIdentifier not in self._known_clients:
new_clients.add(device.machineIdentifier)
_LOGGER.debug("New device: %s", device.machineIdentifier)
_LOGGER.debug(
"New %s %s: %s", device.product, source, device.machineIdentifier
)

for device in devices:
process_device("device", device)

for session in sessions:
if session.TYPE == "photo":
_LOGGER.debug("Photo session detected, skipping: %s", session)
continue

session_username = session.usernames[0]
for player in session.players:
if session_username and session_username not in monitored_users:
ignored_clients.add(player.machineIdentifier)
_LOGGER.debug(
"Ignoring Plex client owned by '%s'", session_username
"Ignoring %s client owned by '%s'",
player.product,
session_username,
)
continue
self._known_idle.discard(player.machineIdentifier)
available_clients.setdefault(
player.machineIdentifier, {"device": player}
)
process_device("session", player)
available_clients[player.machineIdentifier]["session"] = session

if player.machineIdentifier not in self._known_clients:
new_clients.add(player.machineIdentifier)
_LOGGER.debug("New session: %s", player.machineIdentifier)

new_entity_configs = []
for client_id, client_data in available_clients.items():
if client_id in ignored_clients:
Expand Down
10 changes: 9 additions & 1 deletion tests/components/plex/test_server.py
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,15 @@ async def test_new_ignored_users_available(hass, caplog):
assert len(monitored_users) == 1
assert len(ignored_users) == 2
for ignored_user in ignored_users:
assert f"Ignoring Plex client owned by '{ignored_user}'" in caplog.text
ignored_client = [
x.players[0]
for x in mock_plex_server.sessions()
if x.usernames[0] in ignored_users
][0]
assert (
f"Ignoring {ignored_client.product} client owned by '{ignored_user}'"
in caplog.text
)

sensor = hass.states.get("sensor.plex_plex_server_1")
assert sensor.state == str(len(mock_plex_server.accounts))
Expand Down