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

This commit is contained in:
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" DISPATCHERS = "dispatchers"
PLATFORMS = frozenset(["media_player", "sensor"]) PLATFORMS = frozenset(["media_player", "sensor"])
PLATFORMS_COMPLETED = "platforms_completed" PLATFORMS_COMPLETED = "platforms_completed"
PLAYER_SOURCE = "player_source"
SERVERS = "servers" SERVERS = "servers"
WEBSOCKETS = "websockets" WEBSOCKETS = "websockets"

View File

@ -90,11 +90,12 @@ def _async_add_entities(
class PlexMediaPlayer(MediaPlayerEntity): class PlexMediaPlayer(MediaPlayerEntity):
"""Representation of a Plex device.""" """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.""" """Initialize the Plex device."""
self.plex_server = plex_server self.plex_server = plex_server
self.device = device self.device = device
self.session = session self.session = session
self.player_source = player_source
self._app_name = "" self._app_name = ""
self._available = False self._available = False
self._device_protocol_capabilities = None self._device_protocol_capabilities = None
@ -596,6 +597,7 @@ class PlexMediaPlayer(MediaPlayerEntity):
"session_username": self.username, "session_username": self.username,
"media_library_name": self._app_name, "media_library_name": self._app_name,
"summary": self.media_summary, "summary": self.media_summary,
"player_source": self.player_source,
} }
return attr return attr

View File

@ -32,6 +32,7 @@ from .const import (
DEBOUNCE_TIMEOUT, DEBOUNCE_TIMEOUT,
DEFAULT_VERIFY_SSL, DEFAULT_VERIFY_SSL,
DOMAIN, DOMAIN,
PLAYER_SOURCE,
PLEX_NEW_MP_SIGNAL, PLEX_NEW_MP_SIGNAL,
PLEX_UPDATE_MEDIA_PLAYER_SIGNAL, PLEX_UPDATE_MEDIA_PLAYER_SIGNAL,
PLEX_UPDATE_SENSOR_SIGNAL, PLEX_UPDATE_SENSOR_SIGNAL,
@ -257,6 +258,9 @@ class PlexServer:
def process_device(source, device): def process_device(source, device):
self._known_idle.discard(device.machineIdentifier) self._known_idle.discard(device.machineIdentifier)
available_clients.setdefault(device.machineIdentifier, {"device": device}) available_clients.setdefault(device.machineIdentifier, {"device": device})
available_clients[device.machineIdentifier].setdefault(
PLAYER_SOURCE, source
)
if device.machineIdentifier not in ignored_clients: if device.machineIdentifier not in ignored_clients:
if self.option_ignore_plexweb_clients and device.product == "Plex Web": if self.option_ignore_plexweb_clients and device.product == "Plex Web":
@ -275,11 +279,14 @@ class PlexServer:
): ):
new_clients.add(device.machineIdentifier) new_clients.add(device.machineIdentifier)
_LOGGER.debug( _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: for device in devices:
process_device("device", device) process_device("PMS", device)
def connect_to_resource(resource): def connect_to_resource(resource):
"""Connect to a plex.tv resource and return a Plex client.""" """Connect to a plex.tv resource and return a Plex client."""
@ -303,7 +310,7 @@ class PlexServer:
connect_to_resource, plextv_client connect_to_resource, plextv_client
) )
if device: if device:
process_device("resource", device) process_device("plex.tv", device)
for session in sessions: for session in sessions:
if session.TYPE == "photo": if session.TYPE == "photo":