mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 03:07:37 +00:00
Use new media player enums [a-d] (#77939)
This commit is contained in:
parent
bfe245cc3f
commit
9a5fe950a4
@ -23,6 +23,7 @@ from homeassistant.components import persistent_notification
|
|||||||
from homeassistant.components.media_player import (
|
from homeassistant.components.media_player import (
|
||||||
MediaPlayerEntity,
|
MediaPlayerEntity,
|
||||||
MediaPlayerEntityFeature,
|
MediaPlayerEntityFeature,
|
||||||
|
MediaPlayerState,
|
||||||
)
|
)
|
||||||
from homeassistant.config_entries import ConfigEntry
|
from homeassistant.config_entries import ConfigEntry
|
||||||
from homeassistant.const import (
|
from homeassistant.const import (
|
||||||
@ -33,11 +34,6 @@ from homeassistant.const import (
|
|||||||
ATTR_SW_VERSION,
|
ATTR_SW_VERSION,
|
||||||
CONF_HOST,
|
CONF_HOST,
|
||||||
CONF_NAME,
|
CONF_NAME,
|
||||||
STATE_IDLE,
|
|
||||||
STATE_OFF,
|
|
||||||
STATE_PAUSED,
|
|
||||||
STATE_PLAYING,
|
|
||||||
STATE_STANDBY,
|
|
||||||
)
|
)
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.helpers import config_validation as cv, entity_platform
|
from homeassistant.helpers import config_validation as cv, entity_platform
|
||||||
@ -85,11 +81,11 @@ PREFIX_FIRETV = "Fire TV"
|
|||||||
|
|
||||||
# Translate from `AndroidTV` / `FireTV` reported state to HA state.
|
# Translate from `AndroidTV` / `FireTV` reported state to HA state.
|
||||||
ANDROIDTV_STATES = {
|
ANDROIDTV_STATES = {
|
||||||
"off": STATE_OFF,
|
"off": MediaPlayerState.OFF,
|
||||||
"idle": STATE_IDLE,
|
"idle": MediaPlayerState.IDLE,
|
||||||
"standby": STATE_STANDBY,
|
"standby": MediaPlayerState.STANDBY,
|
||||||
"playing": STATE_PLAYING,
|
"playing": MediaPlayerState.PLAYING,
|
||||||
"paused": STATE_PAUSED,
|
"paused": MediaPlayerState.PAUSED,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -323,7 +319,11 @@ class ADBDevice(MediaPlayerEntity):
|
|||||||
|
|
||||||
async def async_get_media_image(self) -> tuple[bytes | None, str | None]:
|
async def async_get_media_image(self) -> tuple[bytes | None, str | None]:
|
||||||
"""Fetch current playing image."""
|
"""Fetch current playing image."""
|
||||||
if not self._screencap or self.state in (STATE_OFF, None) or not self.available:
|
if (
|
||||||
|
not self._screencap
|
||||||
|
or self.state in {MediaPlayerState.OFF, None}
|
||||||
|
or not self.available
|
||||||
|
):
|
||||||
return None, None
|
return None, None
|
||||||
|
|
||||||
media_data = await self._adb_screencap()
|
media_data = await self._adb_screencap()
|
||||||
|
@ -12,16 +12,10 @@ from homeassistant.components.media_player import (
|
|||||||
MediaPlayerDeviceClass,
|
MediaPlayerDeviceClass,
|
||||||
MediaPlayerEntity,
|
MediaPlayerEntity,
|
||||||
MediaPlayerEntityFeature,
|
MediaPlayerEntityFeature,
|
||||||
|
MediaPlayerState,
|
||||||
)
|
)
|
||||||
from homeassistant.config_entries import SOURCE_IMPORT, ConfigEntry
|
from homeassistant.config_entries import SOURCE_IMPORT, ConfigEntry
|
||||||
from homeassistant.const import (
|
from homeassistant.const import CONF_HOST, CONF_MAC, CONF_NAME, CONF_PORT
|
||||||
CONF_HOST,
|
|
||||||
CONF_MAC,
|
|
||||||
CONF_NAME,
|
|
||||||
CONF_PORT,
|
|
||||||
STATE_OFF,
|
|
||||||
STATE_ON,
|
|
||||||
)
|
|
||||||
from homeassistant.core import HomeAssistant, callback
|
from homeassistant.core import HomeAssistant, callback
|
||||||
import homeassistant.helpers.config_validation as cv
|
import homeassistant.helpers.config_validation as cv
|
||||||
from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
||||||
@ -163,7 +157,9 @@ class AnthemAVR(MediaPlayerEntity):
|
|||||||
|
|
||||||
def set_states(self) -> None:
|
def set_states(self) -> None:
|
||||||
"""Set all the states from the device to the entity."""
|
"""Set all the states from the device to the entity."""
|
||||||
self._attr_state = STATE_ON if self._zone.power is True else STATE_OFF
|
self._attr_state = (
|
||||||
|
MediaPlayerState.ON if self._zone.power else MediaPlayerState.OFF
|
||||||
|
)
|
||||||
self._attr_is_volume_muted = self._zone.mute
|
self._attr_is_volume_muted = self._zone.mute
|
||||||
self._attr_volume_level = self._zone.volume_as_percentage
|
self._attr_volume_level = self._zone.volume_as_percentage
|
||||||
self._attr_media_title = self._zone.input_name
|
self._attr_media_title = self._zone.input_name
|
||||||
|
@ -10,6 +10,7 @@ from homeassistant.components.media_player import (
|
|||||||
PLATFORM_SCHEMA,
|
PLATFORM_SCHEMA,
|
||||||
MediaPlayerEntity,
|
MediaPlayerEntity,
|
||||||
MediaPlayerEntityFeature,
|
MediaPlayerEntityFeature,
|
||||||
|
MediaPlayerState,
|
||||||
)
|
)
|
||||||
from homeassistant.const import (
|
from homeassistant.const import (
|
||||||
CONF_HOST,
|
CONF_HOST,
|
||||||
@ -18,8 +19,6 @@ from homeassistant.const import (
|
|||||||
CONF_PORT,
|
CONF_PORT,
|
||||||
CONF_TIMEOUT,
|
CONF_TIMEOUT,
|
||||||
CONF_USERNAME,
|
CONF_USERNAME,
|
||||||
STATE_OFF,
|
|
||||||
STATE_ON,
|
|
||||||
)
|
)
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
import homeassistant.helpers.config_validation as cv
|
import homeassistant.helpers.config_validation as cv
|
||||||
@ -93,7 +92,7 @@ def _retry(func):
|
|||||||
except (OSError, TypeError, ValueError):
|
except (OSError, TypeError, ValueError):
|
||||||
update_retries -= 1
|
update_retries -= 1
|
||||||
if update_retries == 0:
|
if update_retries == 0:
|
||||||
obj.set_state(STATE_OFF)
|
obj.set_state(MediaPlayerState.OFF)
|
||||||
|
|
||||||
return wrapper
|
return wrapper
|
||||||
|
|
||||||
@ -134,9 +133,9 @@ class SharpAquosTVDevice(MediaPlayerEntity):
|
|||||||
def update(self) -> None:
|
def update(self) -> None:
|
||||||
"""Retrieve the latest data."""
|
"""Retrieve the latest data."""
|
||||||
if self._remote.power() == 1:
|
if self._remote.power() == 1:
|
||||||
self._attr_state = STATE_ON
|
self._attr_state = MediaPlayerState.ON
|
||||||
else:
|
else:
|
||||||
self._attr_state = STATE_OFF
|
self._attr_state = MediaPlayerState.OFF
|
||||||
# Set TV to be able to remotely power on
|
# Set TV to be able to remotely power on
|
||||||
if self._power_on_enabled:
|
if self._power_on_enabled:
|
||||||
self._remote.power_on_command_settings(2)
|
self._remote.power_on_command_settings(2)
|
||||||
|
@ -9,17 +9,15 @@ from arcam.fmj.state import State
|
|||||||
|
|
||||||
from homeassistant.components.media_player import (
|
from homeassistant.components.media_player import (
|
||||||
BrowseMedia,
|
BrowseMedia,
|
||||||
|
MediaClass,
|
||||||
MediaPlayerEntity,
|
MediaPlayerEntity,
|
||||||
MediaPlayerEntityFeature,
|
MediaPlayerEntityFeature,
|
||||||
)
|
MediaPlayerState,
|
||||||
from homeassistant.components.media_player.const import (
|
MediaType,
|
||||||
MEDIA_CLASS_DIRECTORY,
|
|
||||||
MEDIA_CLASS_MUSIC,
|
|
||||||
MEDIA_TYPE_MUSIC,
|
|
||||||
)
|
)
|
||||||
from homeassistant.components.media_player.errors import BrowseError
|
from homeassistant.components.media_player.errors import BrowseError
|
||||||
from homeassistant.config_entries import ConfigEntry
|
from homeassistant.config_entries import ConfigEntry
|
||||||
from homeassistant.const import ATTR_ENTITY_ID, STATE_OFF, STATE_ON
|
from homeassistant.const import ATTR_ENTITY_ID
|
||||||
from homeassistant.core import HomeAssistant, callback
|
from homeassistant.core import HomeAssistant, callback
|
||||||
from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
||||||
from homeassistant.helpers.entity import DeviceInfo
|
from homeassistant.helpers.entity import DeviceInfo
|
||||||
@ -91,11 +89,11 @@ class ArcamFmj(MediaPlayerEntity):
|
|||||||
self._attr_entity_registry_enabled_default = state.zn == 1
|
self._attr_entity_registry_enabled_default = state.zn == 1
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def state(self):
|
def state(self) -> MediaPlayerState:
|
||||||
"""Return the state of the device."""
|
"""Return the state of the device."""
|
||||||
if self._state.get_power():
|
if self._state.get_power():
|
||||||
return STATE_ON
|
return MediaPlayerState.ON
|
||||||
return STATE_OFF
|
return MediaPlayerState.OFF
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def device_info(self):
|
def device_info(self):
|
||||||
@ -202,7 +200,9 @@ class ArcamFmj(MediaPlayerEntity):
|
|||||||
await self._state.set_power(False)
|
await self._state.set_power(False)
|
||||||
|
|
||||||
async def async_browse_media(
|
async def async_browse_media(
|
||||||
self, media_content_type: str | None = None, media_content_id: str | None = None
|
self,
|
||||||
|
media_content_type: MediaType | str | None = None,
|
||||||
|
media_content_id: str | None = None,
|
||||||
) -> BrowseMedia:
|
) -> BrowseMedia:
|
||||||
"""Implement the websocket media browsing helper."""
|
"""Implement the websocket media browsing helper."""
|
||||||
if media_content_id not in (None, "root"):
|
if media_content_id not in (None, "root"):
|
||||||
@ -215,9 +215,9 @@ class ArcamFmj(MediaPlayerEntity):
|
|||||||
radio = [
|
radio = [
|
||||||
BrowseMedia(
|
BrowseMedia(
|
||||||
title=preset.name,
|
title=preset.name,
|
||||||
media_class=MEDIA_CLASS_MUSIC,
|
media_class=MediaClass.MUSIC,
|
||||||
media_content_id=f"preset:{preset.index}",
|
media_content_id=f"preset:{preset.index}",
|
||||||
media_content_type=MEDIA_TYPE_MUSIC,
|
media_content_type=MediaType.MUSIC,
|
||||||
can_play=True,
|
can_play=True,
|
||||||
can_expand=False,
|
can_expand=False,
|
||||||
)
|
)
|
||||||
@ -226,7 +226,7 @@ class ArcamFmj(MediaPlayerEntity):
|
|||||||
|
|
||||||
root = BrowseMedia(
|
root = BrowseMedia(
|
||||||
title="Arcam FMJ Receiver",
|
title="Arcam FMJ Receiver",
|
||||||
media_class=MEDIA_CLASS_DIRECTORY,
|
media_class=MediaClass.DIRECTORY,
|
||||||
media_content_id="root",
|
media_content_id="root",
|
||||||
media_content_type="library",
|
media_content_type="library",
|
||||||
can_play=False,
|
can_play=False,
|
||||||
@ -237,7 +237,7 @@ class ArcamFmj(MediaPlayerEntity):
|
|||||||
return root
|
return root
|
||||||
|
|
||||||
async def async_play_media(
|
async def async_play_media(
|
||||||
self, media_type: str, media_id: str, **kwargs: Any
|
self, media_type: MediaType | str, media_id: str, **kwargs: Any
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Play media."""
|
"""Play media."""
|
||||||
|
|
||||||
@ -289,13 +289,13 @@ class ArcamFmj(MediaPlayerEntity):
|
|||||||
return value / 99.0
|
return value / 99.0
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def media_content_type(self):
|
def media_content_type(self) -> MediaType | None:
|
||||||
"""Content type of current playing media."""
|
"""Content type of current playing media."""
|
||||||
source = self._state.get_source()
|
source = self._state.get_source()
|
||||||
if source == SourceCodes.DAB:
|
if source == SourceCodes.DAB:
|
||||||
value = MEDIA_TYPE_MUSIC
|
value = MediaType.MUSIC
|
||||||
elif source == SourceCodes.FM:
|
elif source == SourceCodes.FM:
|
||||||
value = MEDIA_TYPE_MUSIC
|
value = MediaType.MUSIC
|
||||||
else:
|
else:
|
||||||
value = None
|
value = None
|
||||||
return value
|
return value
|
||||||
|
@ -12,6 +12,7 @@ from homeassistant.components.media_player import (
|
|||||||
PLATFORM_SCHEMA,
|
PLATFORM_SCHEMA,
|
||||||
MediaPlayerEntity,
|
MediaPlayerEntity,
|
||||||
MediaPlayerEntityFeature,
|
MediaPlayerEntityFeature,
|
||||||
|
MediaPlayerState,
|
||||||
)
|
)
|
||||||
from homeassistant.const import (
|
from homeassistant.const import (
|
||||||
ATTR_ENTITY_ID,
|
ATTR_ENTITY_ID,
|
||||||
@ -19,8 +20,6 @@ from homeassistant.const import (
|
|||||||
CONF_NAME,
|
CONF_NAME,
|
||||||
CONF_PORT,
|
CONF_PORT,
|
||||||
CONF_TYPE,
|
CONF_TYPE,
|
||||||
STATE_OFF,
|
|
||||||
STATE_ON,
|
|
||||||
)
|
)
|
||||||
from homeassistant.core import HomeAssistant, ServiceCall
|
from homeassistant.core import HomeAssistant, ServiceCall
|
||||||
import homeassistant.helpers.config_validation as cv
|
import homeassistant.helpers.config_validation as cv
|
||||||
@ -163,7 +162,7 @@ class BlackbirdZone(MediaPlayerEntity):
|
|||||||
state = self._blackbird.zone_status(self._zone_id)
|
state = self._blackbird.zone_status(self._zone_id)
|
||||||
if not state:
|
if not state:
|
||||||
return
|
return
|
||||||
self._attr_state = STATE_ON if state.power else STATE_OFF
|
self._attr_state = MediaPlayerState.ON if state.power else MediaPlayerState.OFF
|
||||||
idx = state.av
|
idx = state.av
|
||||||
if idx in self._source_id_name:
|
if idx in self._source_id_name:
|
||||||
self._attr_source = self._source_id_name[idx]
|
self._attr_source = self._source_id_name[idx]
|
||||||
|
@ -21,12 +21,12 @@ from homeassistant.components.media_player import (
|
|||||||
PLATFORM_SCHEMA,
|
PLATFORM_SCHEMA,
|
||||||
MediaPlayerEntity,
|
MediaPlayerEntity,
|
||||||
MediaPlayerEntityFeature,
|
MediaPlayerEntityFeature,
|
||||||
|
MediaType,
|
||||||
)
|
)
|
||||||
from homeassistant.components.media_player.browse_media import (
|
from homeassistant.components.media_player.browse_media import (
|
||||||
BrowseMedia,
|
BrowseMedia,
|
||||||
async_process_play_media_url,
|
async_process_play_media_url,
|
||||||
)
|
)
|
||||||
from homeassistant.components.media_player.const import MEDIA_TYPE_MUSIC
|
|
||||||
from homeassistant.const import (
|
from homeassistant.const import (
|
||||||
ATTR_ENTITY_ID,
|
ATTR_ENTITY_ID,
|
||||||
CONF_HOST,
|
CONF_HOST,
|
||||||
@ -205,6 +205,8 @@ async def async_setup_platform(
|
|||||||
class BluesoundPlayer(MediaPlayerEntity):
|
class BluesoundPlayer(MediaPlayerEntity):
|
||||||
"""Representation of a Bluesound Player."""
|
"""Representation of a Bluesound Player."""
|
||||||
|
|
||||||
|
_attr_media_content_type = MediaType.MUSIC
|
||||||
|
|
||||||
def __init__(self, hass, host, port=None, name=None, init_callback=None):
|
def __init__(self, hass, host, port=None, name=None, init_callback=None):
|
||||||
"""Initialize the media player."""
|
"""Initialize the media player."""
|
||||||
self.host = host
|
self.host = host
|
||||||
@ -551,11 +553,6 @@ class BluesoundPlayer(MediaPlayerEntity):
|
|||||||
|
|
||||||
return self._services_items
|
return self._services_items
|
||||||
|
|
||||||
@property
|
|
||||||
def media_content_type(self):
|
|
||||||
"""Content type of current playing media."""
|
|
||||||
return MEDIA_TYPE_MUSIC
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def state(self):
|
def state(self):
|
||||||
"""Return the state of the device."""
|
"""Return the state of the device."""
|
||||||
@ -1022,7 +1019,7 @@ class BluesoundPlayer(MediaPlayerEntity):
|
|||||||
return await self.send_bluesound_command(f"Play?seek={float(position)}")
|
return await self.send_bluesound_command(f"Play?seek={float(position)}")
|
||||||
|
|
||||||
async def async_play_media(
|
async def async_play_media(
|
||||||
self, media_type: str, media_id: str, **kwargs: Any
|
self, media_type: MediaType | str, media_id: str, **kwargs: Any
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Send the play_media command to the media player."""
|
"""Send the play_media command to the media player."""
|
||||||
if self.is_grouped and not self.is_master:
|
if self.is_grouped and not self.is_master:
|
||||||
@ -1069,7 +1066,9 @@ class BluesoundPlayer(MediaPlayerEntity):
|
|||||||
return await self.send_bluesound_command("Volume?mute=0")
|
return await self.send_bluesound_command("Volume?mute=0")
|
||||||
|
|
||||||
async def async_browse_media(
|
async def async_browse_media(
|
||||||
self, media_content_type: str | None = None, media_content_id: str | None = None
|
self,
|
||||||
|
media_content_type: MediaType | str | None = None,
|
||||||
|
media_content_id: str | None = None,
|
||||||
) -> BrowseMedia:
|
) -> BrowseMedia:
|
||||||
"""Implement the websocket media browsing helper."""
|
"""Implement the websocket media browsing helper."""
|
||||||
return await media_source.async_browse_media(
|
return await media_source.async_browse_media(
|
||||||
|
@ -16,10 +16,7 @@ from pybravia import (
|
|||||||
)
|
)
|
||||||
from typing_extensions import Concatenate, ParamSpec
|
from typing_extensions import Concatenate, ParamSpec
|
||||||
|
|
||||||
from homeassistant.components.media_player.const import (
|
from homeassistant.components.media_player import MediaType
|
||||||
MEDIA_TYPE_APP,
|
|
||||||
MEDIA_TYPE_CHANNEL,
|
|
||||||
)
|
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.helpers.debounce import Debouncer
|
from homeassistant.helpers.debounce import Debouncer
|
||||||
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
|
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
|
||||||
@ -74,7 +71,7 @@ class BraviaTVCoordinator(DataUpdateCoordinator[None]):
|
|||||||
self.source_map: dict[str, dict] = {}
|
self.source_map: dict[str, dict] = {}
|
||||||
self.media_title: str | None = None
|
self.media_title: str | None = None
|
||||||
self.media_content_id: str | None = None
|
self.media_content_id: str | None = None
|
||||||
self.media_content_type: str | None = None
|
self.media_content_type: MediaType | None = None
|
||||||
self.media_uri: str | None = None
|
self.media_uri: str | None = None
|
||||||
self.media_duration: int | None = None
|
self.media_duration: int | None = None
|
||||||
self.volume_level: float | None = None
|
self.volume_level: float | None = None
|
||||||
@ -182,7 +179,7 @@ class BraviaTVCoordinator(DataUpdateCoordinator[None]):
|
|||||||
self.is_channel = self.media_uri[:2] == "tv"
|
self.is_channel = self.media_uri[:2] == "tv"
|
||||||
if self.is_channel:
|
if self.is_channel:
|
||||||
self.media_content_id = playing_info.get("dispNum")
|
self.media_content_id = playing_info.get("dispNum")
|
||||||
self.media_content_type = MEDIA_TYPE_CHANNEL
|
self.media_content_type = MediaType.CHANNEL
|
||||||
else:
|
else:
|
||||||
self.media_content_id = self.media_uri
|
self.media_content_id = self.media_uri
|
||||||
self.media_content_type = None
|
self.media_content_type = None
|
||||||
@ -193,7 +190,7 @@ class BraviaTVCoordinator(DataUpdateCoordinator[None]):
|
|||||||
self.media_content_type = None
|
self.media_content_type = None
|
||||||
if not playing_info:
|
if not playing_info:
|
||||||
self.media_title = "Smart TV"
|
self.media_title = "Smart TV"
|
||||||
self.media_content_type = MEDIA_TYPE_APP
|
self.media_content_type = MediaType.APP
|
||||||
|
|
||||||
@catch_braviatv_errors
|
@catch_braviatv_errors
|
||||||
async def async_turn_on(self) -> None:
|
async def async_turn_on(self) -> None:
|
||||||
|
@ -5,9 +5,10 @@ from homeassistant.components.media_player import (
|
|||||||
MediaPlayerDeviceClass,
|
MediaPlayerDeviceClass,
|
||||||
MediaPlayerEntity,
|
MediaPlayerEntity,
|
||||||
MediaPlayerEntityFeature,
|
MediaPlayerEntityFeature,
|
||||||
|
MediaPlayerState,
|
||||||
|
MediaType,
|
||||||
)
|
)
|
||||||
from homeassistant.config_entries import ConfigEntry
|
from homeassistant.config_entries import ConfigEntry
|
||||||
from homeassistant.const import STATE_OFF, STATE_PAUSED, STATE_PLAYING
|
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||||
|
|
||||||
@ -50,11 +51,15 @@ class BraviaTVMediaPlayer(BraviaTVEntity, MediaPlayerEntity):
|
|||||||
)
|
)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def state(self) -> str | None:
|
def state(self) -> MediaPlayerState:
|
||||||
"""Return the state of the device."""
|
"""Return the state of the device."""
|
||||||
if self.coordinator.is_on:
|
if self.coordinator.is_on:
|
||||||
return STATE_PLAYING if self.coordinator.playing else STATE_PAUSED
|
return (
|
||||||
return STATE_OFF
|
MediaPlayerState.PLAYING
|
||||||
|
if self.coordinator.playing
|
||||||
|
else MediaPlayerState.PAUSED
|
||||||
|
)
|
||||||
|
return MediaPlayerState.OFF
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def source(self) -> str | None:
|
def source(self) -> str | None:
|
||||||
@ -87,7 +92,7 @@ class BraviaTVMediaPlayer(BraviaTVEntity, MediaPlayerEntity):
|
|||||||
return self.coordinator.media_content_id
|
return self.coordinator.media_content_id
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def media_content_type(self) -> str | None:
|
def media_content_type(self) -> MediaType | None:
|
||||||
"""Content type of current playing media."""
|
"""Content type of current playing media."""
|
||||||
return self.coordinator.media_content_type
|
return self.coordinator.media_content_type
|
||||||
|
|
||||||
|
@ -10,22 +10,10 @@ from homeassistant.components.media_player import (
|
|||||||
PLATFORM_SCHEMA,
|
PLATFORM_SCHEMA,
|
||||||
MediaPlayerEntity,
|
MediaPlayerEntity,
|
||||||
MediaPlayerEntityFeature,
|
MediaPlayerEntityFeature,
|
||||||
|
MediaPlayerState,
|
||||||
|
MediaType,
|
||||||
)
|
)
|
||||||
from homeassistant.components.media_player.const import (
|
from homeassistant.const import ATTR_SECONDS, CONF_HOST, CONF_NAME, CONF_PORT
|
||||||
MEDIA_TYPE_CHANNEL,
|
|
||||||
MEDIA_TYPE_EPISODE,
|
|
||||||
MEDIA_TYPE_MOVIE,
|
|
||||||
MEDIA_TYPE_TVSHOW,
|
|
||||||
)
|
|
||||||
from homeassistant.const import (
|
|
||||||
ATTR_SECONDS,
|
|
||||||
CONF_HOST,
|
|
||||||
CONF_NAME,
|
|
||||||
CONF_PORT,
|
|
||||||
STATE_IDLE,
|
|
||||||
STATE_PAUSED,
|
|
||||||
STATE_PLAYING,
|
|
||||||
)
|
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.helpers import config_validation as cv, entity_platform
|
from homeassistant.helpers import config_validation as cv, entity_platform
|
||||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||||
@ -78,6 +66,7 @@ async def async_setup_platform(
|
|||||||
class ChannelsPlayer(MediaPlayerEntity):
|
class ChannelsPlayer(MediaPlayerEntity):
|
||||||
"""Representation of a Channels instance."""
|
"""Representation of a Channels instance."""
|
||||||
|
|
||||||
|
_attr_media_content_type = MediaType.CHANNEL
|
||||||
_attr_supported_features = (
|
_attr_supported_features = (
|
||||||
MediaPlayerEntityFeature.PLAY
|
MediaPlayerEntityFeature.PLAY
|
||||||
| MediaPlayerEntityFeature.PAUSE
|
| MediaPlayerEntityFeature.PAUSE
|
||||||
@ -156,16 +145,16 @@ class ChannelsPlayer(MediaPlayerEntity):
|
|||||||
return self._name
|
return self._name
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def state(self):
|
def state(self) -> MediaPlayerState | None:
|
||||||
"""Return the state of the player."""
|
"""Return the state of the player."""
|
||||||
if self.status == "stopped":
|
if self.status == "stopped":
|
||||||
return STATE_IDLE
|
return MediaPlayerState.IDLE
|
||||||
|
|
||||||
if self.status == "paused":
|
if self.status == "paused":
|
||||||
return STATE_PAUSED
|
return MediaPlayerState.PAUSED
|
||||||
|
|
||||||
if self.status == "playing":
|
if self.status == "playing":
|
||||||
return STATE_PLAYING
|
return MediaPlayerState.PLAYING
|
||||||
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
@ -190,11 +179,6 @@ class ChannelsPlayer(MediaPlayerEntity):
|
|||||||
"""Content ID of current playing channel."""
|
"""Content ID of current playing channel."""
|
||||||
return self.channel_number
|
return self.channel_number
|
||||||
|
|
||||||
@property
|
|
||||||
def media_content_type(self):
|
|
||||||
"""Content type of current playing media."""
|
|
||||||
return MEDIA_TYPE_CHANNEL
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def media_image_url(self):
|
def media_image_url(self):
|
||||||
"""Image url of current playing media."""
|
"""Image url of current playing media."""
|
||||||
@ -253,12 +237,14 @@ class ChannelsPlayer(MediaPlayerEntity):
|
|||||||
self.update_state(response)
|
self.update_state(response)
|
||||||
break
|
break
|
||||||
|
|
||||||
def play_media(self, media_type: str, media_id: str, **kwargs: Any) -> None:
|
def play_media(
|
||||||
|
self, media_type: MediaType | str, media_id: str, **kwargs: Any
|
||||||
|
) -> None:
|
||||||
"""Send the play_media command to the player."""
|
"""Send the play_media command to the player."""
|
||||||
if media_type == MEDIA_TYPE_CHANNEL:
|
if media_type == MediaType.CHANNEL:
|
||||||
response = self.client.play_channel(media_id)
|
response = self.client.play_channel(media_id)
|
||||||
self.update_state(response)
|
self.update_state(response)
|
||||||
elif media_type in (MEDIA_TYPE_MOVIE, MEDIA_TYPE_EPISODE, MEDIA_TYPE_TVSHOW):
|
elif media_type in {MediaType.MOVIE, MediaType.EPISODE, MediaType.TVSHOW}:
|
||||||
response = self.client.play_recording(media_id)
|
response = self.client.play_recording(media_id)
|
||||||
self.update_state(response)
|
self.update_state(response)
|
||||||
|
|
||||||
|
@ -11,17 +11,10 @@ from homeassistant.components.media_player import (
|
|||||||
PLATFORM_SCHEMA,
|
PLATFORM_SCHEMA,
|
||||||
MediaPlayerEntity,
|
MediaPlayerEntity,
|
||||||
MediaPlayerEntityFeature,
|
MediaPlayerEntityFeature,
|
||||||
|
MediaPlayerState,
|
||||||
|
MediaType,
|
||||||
)
|
)
|
||||||
from homeassistant.components.media_player.const import MEDIA_TYPE_MUSIC
|
from homeassistant.const import CONF_ACCESS_TOKEN, CONF_HOST, CONF_NAME, CONF_PORT
|
||||||
from homeassistant.const import (
|
|
||||||
CONF_ACCESS_TOKEN,
|
|
||||||
CONF_HOST,
|
|
||||||
CONF_NAME,
|
|
||||||
CONF_PORT,
|
|
||||||
STATE_OFF,
|
|
||||||
STATE_PAUSED,
|
|
||||||
STATE_PLAYING,
|
|
||||||
)
|
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
import homeassistant.helpers.config_validation as cv
|
import homeassistant.helpers.config_validation as cv
|
||||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||||
@ -62,7 +55,7 @@ def setup_platform(
|
|||||||
class ClementineDevice(MediaPlayerEntity):
|
class ClementineDevice(MediaPlayerEntity):
|
||||||
"""Representation of Clementine Player."""
|
"""Representation of Clementine Player."""
|
||||||
|
|
||||||
_attr_media_content_type = MEDIA_TYPE_MUSIC
|
_attr_media_content_type = MediaType.MUSIC
|
||||||
_attr_supported_features = (
|
_attr_supported_features = (
|
||||||
MediaPlayerEntityFeature.PAUSE
|
MediaPlayerEntityFeature.PAUSE
|
||||||
| MediaPlayerEntityFeature.VOLUME_STEP
|
| MediaPlayerEntityFeature.VOLUME_STEP
|
||||||
@ -84,16 +77,16 @@ class ClementineDevice(MediaPlayerEntity):
|
|||||||
client = self._client
|
client = self._client
|
||||||
|
|
||||||
if client.state == "Playing":
|
if client.state == "Playing":
|
||||||
self._attr_state = STATE_PLAYING
|
self._attr_state = MediaPlayerState.PLAYING
|
||||||
elif client.state == "Paused":
|
elif client.state == "Paused":
|
||||||
self._attr_state = STATE_PAUSED
|
self._attr_state = MediaPlayerState.PAUSED
|
||||||
elif client.state == "Disconnected":
|
elif client.state == "Disconnected":
|
||||||
self._attr_state = STATE_OFF
|
self._attr_state = MediaPlayerState.OFF
|
||||||
else:
|
else:
|
||||||
self._attr_state = STATE_PAUSED
|
self._attr_state = MediaPlayerState.PAUSED
|
||||||
|
|
||||||
if client.last_update and (time.time() - client.last_update > 40):
|
if client.last_update and (time.time() - client.last_update > 40):
|
||||||
self._attr_state = STATE_OFF
|
self._attr_state = MediaPlayerState.OFF
|
||||||
|
|
||||||
volume = float(client.volume) if client.volume else 0.0
|
volume = float(client.volume) if client.volume else 0.0
|
||||||
self._attr_volume_level = volume / 100.0
|
self._attr_volume_level = volume / 100.0
|
||||||
@ -112,7 +105,7 @@ class ClementineDevice(MediaPlayerEntity):
|
|||||||
self._attr_media_image_hash = None
|
self._attr_media_image_hash = None
|
||||||
|
|
||||||
except Exception:
|
except Exception:
|
||||||
self._attr_state = STATE_OFF
|
self._attr_state = MediaPlayerState.OFF
|
||||||
raise
|
raise
|
||||||
|
|
||||||
def select_source(self, source: str) -> None:
|
def select_source(self, source: str) -> None:
|
||||||
@ -150,19 +143,19 @@ class ClementineDevice(MediaPlayerEntity):
|
|||||||
|
|
||||||
def media_play_pause(self) -> None:
|
def media_play_pause(self) -> None:
|
||||||
"""Simulate play pause media player."""
|
"""Simulate play pause media player."""
|
||||||
if self.state == STATE_PLAYING:
|
if self.state == MediaPlayerState.PLAYING:
|
||||||
self.media_pause()
|
self.media_pause()
|
||||||
else:
|
else:
|
||||||
self.media_play()
|
self.media_play()
|
||||||
|
|
||||||
def media_play(self) -> None:
|
def media_play(self) -> None:
|
||||||
"""Send play command."""
|
"""Send play command."""
|
||||||
self._attr_state = STATE_PLAYING
|
self._attr_state = MediaPlayerState.PLAYING
|
||||||
self._client.play()
|
self._client.play()
|
||||||
|
|
||||||
def media_pause(self) -> None:
|
def media_pause(self) -> None:
|
||||||
"""Send media pause command to media player."""
|
"""Send media pause command to media player."""
|
||||||
self._attr_state = STATE_PAUSED
|
self._attr_state = MediaPlayerState.PAUSED
|
||||||
self._client.pause()
|
self._client.pause()
|
||||||
|
|
||||||
def media_next_track(self) -> None:
|
def media_next_track(self) -> None:
|
||||||
|
@ -11,20 +11,10 @@ from homeassistant.components.media_player import (
|
|||||||
PLATFORM_SCHEMA,
|
PLATFORM_SCHEMA,
|
||||||
MediaPlayerEntity,
|
MediaPlayerEntity,
|
||||||
MediaPlayerEntityFeature,
|
MediaPlayerEntityFeature,
|
||||||
|
MediaPlayerState,
|
||||||
|
MediaType,
|
||||||
)
|
)
|
||||||
from homeassistant.components.media_player.const import (
|
from homeassistant.const import CONF_HOST, CONF_NAME, CONF_PASSWORD, CONF_PORT
|
||||||
MEDIA_TYPE_MUSIC,
|
|
||||||
MEDIA_TYPE_PLAYLIST,
|
|
||||||
)
|
|
||||||
from homeassistant.const import (
|
|
||||||
CONF_HOST,
|
|
||||||
CONF_NAME,
|
|
||||||
CONF_PASSWORD,
|
|
||||||
CONF_PORT,
|
|
||||||
STATE_OFF,
|
|
||||||
STATE_PAUSED,
|
|
||||||
STATE_PLAYING,
|
|
||||||
)
|
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
import homeassistant.helpers.config_validation as cv
|
import homeassistant.helpers.config_validation as cv
|
||||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||||
@ -92,7 +82,7 @@ class CmusRemote:
|
|||||||
class CmusDevice(MediaPlayerEntity):
|
class CmusDevice(MediaPlayerEntity):
|
||||||
"""Representation of a running cmus."""
|
"""Representation of a running cmus."""
|
||||||
|
|
||||||
_attr_media_content_type = MEDIA_TYPE_MUSIC
|
_attr_media_content_type = MediaType.MUSIC
|
||||||
_attr_supported_features = (
|
_attr_supported_features = (
|
||||||
MediaPlayerEntityFeature.PAUSE
|
MediaPlayerEntityFeature.PAUSE
|
||||||
| MediaPlayerEntityFeature.VOLUME_SET
|
| MediaPlayerEntityFeature.VOLUME_SET
|
||||||
@ -128,11 +118,11 @@ class CmusDevice(MediaPlayerEntity):
|
|||||||
else:
|
else:
|
||||||
self.status = status
|
self.status = status
|
||||||
if self.status.get("status") == "playing":
|
if self.status.get("status") == "playing":
|
||||||
self._attr_state = STATE_PLAYING
|
self._attr_state = MediaPlayerState.PLAYING
|
||||||
elif self.status.get("status") == "paused":
|
elif self.status.get("status") == "paused":
|
||||||
self._attr_state = STATE_PAUSED
|
self._attr_state = MediaPlayerState.PAUSED
|
||||||
else:
|
else:
|
||||||
self._attr_state = STATE_OFF
|
self._attr_state = MediaPlayerState.OFF
|
||||||
self._attr_media_content_id = self.status.get("file")
|
self._attr_media_content_id = self.status.get("file")
|
||||||
self._attr_media_duration = self.status.get("duration")
|
self._attr_media_duration = self.status.get("duration")
|
||||||
self._attr_media_title = self.status["tag"].get("title")
|
self._attr_media_title = self.status["tag"].get("title")
|
||||||
@ -187,16 +177,18 @@ class CmusDevice(MediaPlayerEntity):
|
|||||||
if current_volume <= 100:
|
if current_volume <= 100:
|
||||||
self._remote.cmus.set_volume(int(current_volume) - 5)
|
self._remote.cmus.set_volume(int(current_volume) - 5)
|
||||||
|
|
||||||
def play_media(self, media_type: str, media_id: str, **kwargs: Any) -> None:
|
def play_media(
|
||||||
|
self, media_type: MediaType | str, media_id: str, **kwargs: Any
|
||||||
|
) -> None:
|
||||||
"""Send the play command."""
|
"""Send the play command."""
|
||||||
if media_type in [MEDIA_TYPE_MUSIC, MEDIA_TYPE_PLAYLIST]:
|
if media_type in {MediaType.MUSIC, MediaType.PLAYLIST}:
|
||||||
self._remote.cmus.player_play_file(media_id)
|
self._remote.cmus.player_play_file(media_id)
|
||||||
else:
|
else:
|
||||||
_LOGGER.error(
|
_LOGGER.error(
|
||||||
"Invalid media type %s. Only %s and %s are supported",
|
"Invalid media type %s. Only %s and %s are supported",
|
||||||
media_type,
|
media_type,
|
||||||
MEDIA_TYPE_MUSIC,
|
MediaType.MUSIC,
|
||||||
MEDIA_TYPE_PLAYLIST,
|
MediaType.PLAYLIST,
|
||||||
)
|
)
|
||||||
|
|
||||||
def media_pause(self) -> None:
|
def media_pause(self) -> None:
|
||||||
|
@ -10,8 +10,9 @@ from homeassistant.components.media_player import (
|
|||||||
PLATFORM_SCHEMA,
|
PLATFORM_SCHEMA,
|
||||||
MediaPlayerEntity,
|
MediaPlayerEntity,
|
||||||
MediaPlayerEntityFeature,
|
MediaPlayerEntityFeature,
|
||||||
|
MediaPlayerState,
|
||||||
)
|
)
|
||||||
from homeassistant.const import CONF_HOST, CONF_NAME, STATE_OFF, STATE_ON
|
from homeassistant.const import CONF_HOST, CONF_NAME
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
import homeassistant.helpers.config_validation as cv
|
import homeassistant.helpers.config_validation as cv
|
||||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||||
@ -214,12 +215,12 @@ class DenonDevice(MediaPlayerEntity):
|
|||||||
return self._name
|
return self._name
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def state(self):
|
def state(self) -> MediaPlayerState | None:
|
||||||
"""Return the state of the device."""
|
"""Return the state of the device."""
|
||||||
if self._pwstate == "PWSTANDBY":
|
if self._pwstate == "PWSTANDBY":
|
||||||
return STATE_OFF
|
return MediaPlayerState.OFF
|
||||||
if self._pwstate == "PWON":
|
if self._pwstate == "PWON":
|
||||||
return STATE_ON
|
return MediaPlayerState.ON
|
||||||
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
@ -22,19 +22,11 @@ import voluptuous as vol
|
|||||||
from homeassistant.components.media_player import (
|
from homeassistant.components.media_player import (
|
||||||
MediaPlayerEntity,
|
MediaPlayerEntity,
|
||||||
MediaPlayerEntityFeature,
|
MediaPlayerEntityFeature,
|
||||||
)
|
MediaPlayerState,
|
||||||
from homeassistant.components.media_player.const import (
|
MediaType,
|
||||||
MEDIA_TYPE_CHANNEL,
|
|
||||||
MEDIA_TYPE_MUSIC,
|
|
||||||
)
|
)
|
||||||
from homeassistant.config_entries import ConfigEntry
|
from homeassistant.config_entries import ConfigEntry
|
||||||
from homeassistant.const import (
|
from homeassistant.const import ATTR_COMMAND, CONF_HOST, CONF_MODEL
|
||||||
ATTR_COMMAND,
|
|
||||||
CONF_HOST,
|
|
||||||
CONF_MODEL,
|
|
||||||
STATE_PAUSED,
|
|
||||||
STATE_PLAYING,
|
|
||||||
)
|
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.helpers import config_validation as cv, entity_platform
|
from homeassistant.helpers import config_validation as cv, entity_platform
|
||||||
from homeassistant.helpers.entity import DeviceInfo
|
from homeassistant.helpers.entity import DeviceInfo
|
||||||
@ -297,11 +289,11 @@ class DenonDevice(MediaPlayerEntity):
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def media_content_type(self):
|
def media_content_type(self) -> MediaType:
|
||||||
"""Content type of current playing media."""
|
"""Content type of current playing media."""
|
||||||
if self._receiver.state in (STATE_PLAYING, STATE_PAUSED):
|
if self._receiver.state in {MediaPlayerState.PLAYING, MediaPlayerState.PAUSED}:
|
||||||
return MEDIA_TYPE_MUSIC
|
return MediaType.MUSIC
|
||||||
return MEDIA_TYPE_CHANNEL
|
return MediaType.CHANNEL
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def media_duration(self):
|
def media_duration(self):
|
||||||
|
@ -10,15 +10,10 @@ from homeassistant.components.media_player import (
|
|||||||
MediaPlayerDeviceClass,
|
MediaPlayerDeviceClass,
|
||||||
MediaPlayerEntity,
|
MediaPlayerEntity,
|
||||||
MediaPlayerEntityFeature,
|
MediaPlayerEntityFeature,
|
||||||
)
|
MediaPlayerState,
|
||||||
from homeassistant.components.media_player.const import (
|
MediaType,
|
||||||
MEDIA_TYPE_CHANNEL,
|
|
||||||
MEDIA_TYPE_MOVIE,
|
|
||||||
MEDIA_TYPE_MUSIC,
|
|
||||||
MEDIA_TYPE_TVSHOW,
|
|
||||||
)
|
)
|
||||||
from homeassistant.config_entries import ConfigEntry
|
from homeassistant.config_entries import ConfigEntry
|
||||||
from homeassistant.const import STATE_OFF, STATE_PAUSED, STATE_PLAYING
|
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||||
from homeassistant.util import dt as dt_util
|
from homeassistant.util import dt as dt_util
|
||||||
@ -34,7 +29,7 @@ from .entity import DIRECTVEntity
|
|||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
KNOWN_MEDIA_TYPES = [MEDIA_TYPE_MOVIE, MEDIA_TYPE_MUSIC, MEDIA_TYPE_TVSHOW]
|
KNOWN_MEDIA_TYPES = {MediaType.MOVIE, MediaType.MUSIC, MediaType.TVSHOW}
|
||||||
|
|
||||||
SUPPORT_DTV = (
|
SUPPORT_DTV = (
|
||||||
MediaPlayerEntityFeature.PAUSE
|
MediaPlayerEntityFeature.PAUSE
|
||||||
@ -134,18 +129,18 @@ class DIRECTVMediaPlayer(DIRECTVEntity, MediaPlayerEntity):
|
|||||||
|
|
||||||
# MediaPlayerEntity properties and methods
|
# MediaPlayerEntity properties and methods
|
||||||
@property
|
@property
|
||||||
def state(self):
|
def state(self) -> MediaPlayerState:
|
||||||
"""Return the state of the device."""
|
"""Return the state of the device."""
|
||||||
if self._is_standby:
|
if self._is_standby:
|
||||||
return STATE_OFF
|
return MediaPlayerState.OFF
|
||||||
|
|
||||||
# For recorded media we can determine if it is paused or not.
|
# For recorded media we can determine if it is paused or not.
|
||||||
# For live media we're unable to determine and will always return
|
# For live media we're unable to determine and will always return
|
||||||
# playing instead.
|
# playing instead.
|
||||||
if self._paused:
|
if self._paused:
|
||||||
return STATE_PAUSED
|
return MediaPlayerState.PAUSED
|
||||||
|
|
||||||
return STATE_PLAYING
|
return MediaPlayerState.PLAYING
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def media_content_id(self):
|
def media_content_id(self):
|
||||||
@ -156,7 +151,7 @@ class DIRECTVMediaPlayer(DIRECTVEntity, MediaPlayerEntity):
|
|||||||
return self._program.program_id
|
return self._program.program_id
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def media_content_type(self):
|
def media_content_type(self) -> MediaType | None:
|
||||||
"""Return the content type of current playing media."""
|
"""Return the content type of current playing media."""
|
||||||
if self._is_standby or self._program is None:
|
if self._is_standby or self._program is None:
|
||||||
return None
|
return None
|
||||||
@ -164,7 +159,7 @@ class DIRECTVMediaPlayer(DIRECTVEntity, MediaPlayerEntity):
|
|||||||
if self._program.program_type in KNOWN_MEDIA_TYPES:
|
if self._program.program_type in KNOWN_MEDIA_TYPES:
|
||||||
return self._program.program_type
|
return self._program.program_type
|
||||||
|
|
||||||
return MEDIA_TYPE_MOVIE
|
return MediaType.MOVIE
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def media_duration(self):
|
def media_duration(self):
|
||||||
@ -196,7 +191,7 @@ class DIRECTVMediaPlayer(DIRECTVEntity, MediaPlayerEntity):
|
|||||||
if self._is_standby or self._program is None:
|
if self._is_standby or self._program is None:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
if self.media_content_type == MEDIA_TYPE_MUSIC:
|
if self.media_content_type == MediaType.MUSIC:
|
||||||
return self._program.music_title
|
return self._program.music_title
|
||||||
|
|
||||||
return self._program.title
|
return self._program.title
|
||||||
@ -320,14 +315,14 @@ class DIRECTVMediaPlayer(DIRECTVEntity, MediaPlayerEntity):
|
|||||||
await self.dtv.remote("ffwd", self._address)
|
await self.dtv.remote("ffwd", self._address)
|
||||||
|
|
||||||
async def async_play_media(
|
async def async_play_media(
|
||||||
self, media_type: str, media_id: str, **kwargs: Any
|
self, media_type: MediaType | str, media_id: str, **kwargs: Any
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Select input source."""
|
"""Select input source."""
|
||||||
if media_type != MEDIA_TYPE_CHANNEL:
|
if media_type != MediaType.CHANNEL:
|
||||||
_LOGGER.error(
|
_LOGGER.error(
|
||||||
"Invalid media type %s. Only %s is supported",
|
"Invalid media type %s. Only %s is supported",
|
||||||
media_type,
|
media_type,
|
||||||
MEDIA_TYPE_CHANNEL,
|
MediaType.CHANNEL,
|
||||||
)
|
)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -8,9 +8,9 @@ from pdunehd import DuneHDPlayer
|
|||||||
from homeassistant.components.media_player import (
|
from homeassistant.components.media_player import (
|
||||||
MediaPlayerEntity,
|
MediaPlayerEntity,
|
||||||
MediaPlayerEntityFeature,
|
MediaPlayerEntityFeature,
|
||||||
|
MediaPlayerState,
|
||||||
)
|
)
|
||||||
from homeassistant.config_entries import ConfigEntry
|
from homeassistant.config_entries import ConfigEntry
|
||||||
from homeassistant.const import STATE_OFF, STATE_ON, STATE_PAUSED, STATE_PLAYING
|
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.helpers.entity import DeviceInfo
|
from homeassistant.helpers.entity import DeviceInfo
|
||||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||||
@ -57,17 +57,17 @@ class DuneHDPlayerEntity(MediaPlayerEntity):
|
|||||||
self.__update_title()
|
self.__update_title()
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def state(self) -> str | None:
|
def state(self) -> MediaPlayerState:
|
||||||
"""Return player state."""
|
"""Return player state."""
|
||||||
state = STATE_OFF
|
state = MediaPlayerState.OFF
|
||||||
if "playback_position" in self._state:
|
if "playback_position" in self._state:
|
||||||
state = STATE_PLAYING
|
state = MediaPlayerState.PLAYING
|
||||||
if self._state.get("player_state") in ("playing", "buffering", "photo_viewer"):
|
if self._state.get("player_state") in ("playing", "buffering", "photo_viewer"):
|
||||||
state = STATE_PLAYING
|
state = MediaPlayerState.PLAYING
|
||||||
if int(self._state.get("playback_speed", 1234)) == 0:
|
if int(self._state.get("playback_speed", 1234)) == 0:
|
||||||
state = STATE_PAUSED
|
state = MediaPlayerState.PAUSED
|
||||||
if self._state.get("player_state") == "navigator":
|
if self._state.get("player_state") == "navigator":
|
||||||
state = STATE_ON
|
state = MediaPlayerState.ON
|
||||||
return state
|
return state
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
Loading…
x
Reference in New Issue
Block a user