Set Plex media_player discovery source as an attribute (#36884)

pull/37002/head
jjlawren 2020-06-22 07:48:40 -05:00 committed by GitHub
parent f131959f4b
commit 9d40ae96b5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 14 additions and 4 deletions

View File

@ -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"

View File

@ -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

View File

@ -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":