mirror of
https://github.com/home-assistant/core.git
synced 2025-07-23 21:27:38 +00:00
Set Plex media_player discovery source as an attribute (#36884)
This commit is contained in:
parent
f131959f4b
commit
9d40ae96b5
@ -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"
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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":
|
||||||
|
Loading…
x
Reference in New Issue
Block a user