Use new media player enums [u-w] (#78067)
This commit is contained in:
parent
6b157921ea
commit
8bdeb3ca5b
8 changed files with 95 additions and 115 deletions
|
@ -10,16 +10,10 @@ from homeassistant.components.media_player import (
|
|||
PLATFORM_SCHEMA,
|
||||
MediaPlayerEntity,
|
||||
MediaPlayerEntityFeature,
|
||||
MediaPlayerState,
|
||||
MediaType,
|
||||
)
|
||||
from homeassistant.components.media_player.const import MEDIA_TYPE_MUSIC
|
||||
from homeassistant.const import (
|
||||
CONF_PASSWORD,
|
||||
CONF_USERNAME,
|
||||
STATE_IDLE,
|
||||
STATE_OFF,
|
||||
STATE_PAUSED,
|
||||
STATE_PLAYING,
|
||||
)
|
||||
from homeassistant.const import CONF_PASSWORD, CONF_USERNAME
|
||||
from homeassistant.core import HomeAssistant
|
||||
import homeassistant.helpers.config_validation as cv
|
||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||
|
@ -30,7 +24,11 @@ _LOGGER = logging.getLogger(__name__)
|
|||
ICON = "mdi:radio"
|
||||
URL = "http://decibel.logitechmusic.com/jsonrpc.js"
|
||||
|
||||
PLAYBACK_DICT = {"play": STATE_PLAYING, "pause": STATE_PAUSED, "stop": STATE_IDLE}
|
||||
PLAYBACK_DICT = {
|
||||
"play": MediaPlayerState.PLAYING,
|
||||
"pause": MediaPlayerState.PAUSED,
|
||||
"stop": MediaPlayerState.IDLE,
|
||||
}
|
||||
|
||||
PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend(
|
||||
{vol.Required(CONF_USERNAME): cv.string, vol.Required(CONF_PASSWORD): cv.string}
|
||||
|
@ -84,6 +82,7 @@ def setup_platform(
|
|||
class UERadioDevice(MediaPlayerEntity):
|
||||
"""Representation of a Logitech UE Smart Radio device."""
|
||||
|
||||
_attr_media_content_type = MediaType.MUSIC
|
||||
_attr_supported_features = (
|
||||
MediaPlayerEntityFeature.PLAY
|
||||
| MediaPlayerEntityFeature.PAUSE
|
||||
|
@ -133,7 +132,7 @@ class UERadioDevice(MediaPlayerEntity):
|
|||
return
|
||||
|
||||
if request["result"]["power"] == 0:
|
||||
self._state = STATE_OFF
|
||||
self._state = MediaPlayerState.OFF
|
||||
else:
|
||||
self._state = PLAYBACK_DICT[request["result"]["mode"]]
|
||||
|
||||
|
@ -172,11 +171,6 @@ class UERadioDevice(MediaPlayerEntity):
|
|||
"""Volume level of the media player (0..1)."""
|
||||
return self._volume
|
||||
|
||||
@property
|
||||
def media_content_type(self):
|
||||
"""Return the media content type."""
|
||||
return MEDIA_TYPE_MUSIC
|
||||
|
||||
@property
|
||||
def media_image_url(self):
|
||||
"""Image URL of current playing media."""
|
||||
|
|
|
@ -20,13 +20,11 @@ from homeassistant.components.media_player import (
|
|||
MediaPlayerEntity,
|
||||
MediaPlayerEntityDescription,
|
||||
MediaPlayerEntityFeature,
|
||||
)
|
||||
from homeassistant.components.media_player.browse_media import (
|
||||
MediaPlayerState,
|
||||
MediaType,
|
||||
async_process_play_media_url,
|
||||
)
|
||||
from homeassistant.components.media_player.const import MEDIA_TYPE_MUSIC
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import STATE_IDLE, STATE_PLAYING
|
||||
from homeassistant.core import HomeAssistant, callback
|
||||
from homeassistant.exceptions import HomeAssistantError
|
||||
from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
||||
|
@ -95,7 +93,7 @@ class ProtectMediaPlayer(ProtectDeviceEntity, MediaPlayerEntity):
|
|||
)
|
||||
|
||||
self._attr_name = f"{self.device.display_name} Speaker"
|
||||
self._attr_media_content_type = MEDIA_TYPE_MUSIC
|
||||
self._attr_media_content_type = MediaType.MUSIC
|
||||
|
||||
@callback
|
||||
def _async_update_device_from_protect(self, device: ProtectModelWithId) -> None:
|
||||
|
@ -106,9 +104,9 @@ class ProtectMediaPlayer(ProtectDeviceEntity, MediaPlayerEntity):
|
|||
self.device.talkback_stream is not None
|
||||
and self.device.talkback_stream.is_running
|
||||
):
|
||||
self._attr_state = STATE_PLAYING
|
||||
self._attr_state = MediaPlayerState.PLAYING
|
||||
else:
|
||||
self._attr_state = STATE_IDLE
|
||||
self._attr_state = MediaPlayerState.IDLE
|
||||
|
||||
is_connected = self.data.last_update_success and (
|
||||
self.device.state == StateType.CONNECTED
|
||||
|
@ -134,17 +132,17 @@ class ProtectMediaPlayer(ProtectDeviceEntity, MediaPlayerEntity):
|
|||
self._async_updated_event(self.device)
|
||||
|
||||
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:
|
||||
"""Play a piece of media."""
|
||||
if media_source.is_media_source_id(media_id):
|
||||
media_type = MEDIA_TYPE_MUSIC
|
||||
media_type = MediaType.MUSIC
|
||||
play_item = await media_source.async_resolve_media(
|
||||
self.hass, media_id, self.entity_id
|
||||
)
|
||||
media_id = async_process_play_media_url(self.hass, play_item.url)
|
||||
|
||||
if media_type != MEDIA_TYPE_MUSIC:
|
||||
if media_type != MediaType.MUSIC:
|
||||
raise HomeAssistantError("Only music media type is supported")
|
||||
|
||||
_LOGGER.debug(
|
||||
|
@ -164,7 +162,9 @@ class ProtectMediaPlayer(ProtectDeviceEntity, MediaPlayerEntity):
|
|||
self._async_updated_event(self.device)
|
||||
|
||||
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:
|
||||
"""Implement the websocket media browsing helper."""
|
||||
return await media_source.async_browse_media(
|
||||
|
|
|
@ -12,6 +12,7 @@ from homeassistant.components.media_player import (
|
|||
MediaPlayerDeviceClass,
|
||||
MediaPlayerEntity,
|
||||
MediaPlayerEntityFeature,
|
||||
MediaPlayerState,
|
||||
)
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import (
|
||||
|
@ -21,8 +22,6 @@ from homeassistant.const import (
|
|||
CONF_HOST,
|
||||
CONF_INCLUDE,
|
||||
CONF_NAME,
|
||||
STATE_OFF,
|
||||
STATE_ON,
|
||||
)
|
||||
from homeassistant.core import HomeAssistant, callback
|
||||
from homeassistant.helpers import entity_platform
|
||||
|
@ -207,7 +206,7 @@ class VizioDevice(MediaPlayerEntity):
|
|||
)
|
||||
|
||||
if not is_on:
|
||||
self._attr_state = STATE_OFF
|
||||
self._attr_state = MediaPlayerState.OFF
|
||||
self._attr_volume_level = None
|
||||
self._attr_is_volume_muted = None
|
||||
self._current_input = None
|
||||
|
@ -216,7 +215,7 @@ class VizioDevice(MediaPlayerEntity):
|
|||
self._attr_sound_mode = None
|
||||
return
|
||||
|
||||
self._attr_state = STATE_ON
|
||||
self._attr_state = MediaPlayerState.ON
|
||||
|
||||
if audio_settings := await self._device.get_all_settings(
|
||||
VIZIO_AUDIO_SETTINGS, log_api_exception=False
|
||||
|
|
|
@ -13,12 +13,11 @@ from homeassistant.components.media_player import (
|
|||
BrowseMedia,
|
||||
MediaPlayerEntity,
|
||||
MediaPlayerEntityFeature,
|
||||
)
|
||||
from homeassistant.components.media_player.browse_media import (
|
||||
MediaPlayerState,
|
||||
MediaType,
|
||||
async_process_play_media_url,
|
||||
)
|
||||
from homeassistant.components.media_player.const import MEDIA_TYPE_MUSIC
|
||||
from homeassistant.const import CONF_NAME, STATE_IDLE, STATE_PAUSED, STATE_PLAYING
|
||||
from homeassistant.const import CONF_NAME
|
||||
from homeassistant.core import HomeAssistant
|
||||
import homeassistant.helpers.config_validation as cv
|
||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||
|
@ -53,6 +52,7 @@ def setup_platform(
|
|||
class VlcDevice(MediaPlayerEntity):
|
||||
"""Representation of a vlc player."""
|
||||
|
||||
_attr_media_content_type = MediaType.MUSIC
|
||||
_attr_supported_features = (
|
||||
MediaPlayerEntityFeature.PAUSE
|
||||
| MediaPlayerEntityFeature.VOLUME_SET
|
||||
|
@ -79,11 +79,11 @@ class VlcDevice(MediaPlayerEntity):
|
|||
"""Get the latest details from the device."""
|
||||
status = self._vlc.get_state()
|
||||
if status == vlc.State.Playing:
|
||||
self._state = STATE_PLAYING
|
||||
self._state = MediaPlayerState.PLAYING
|
||||
elif status == vlc.State.Paused:
|
||||
self._state = STATE_PAUSED
|
||||
self._state = MediaPlayerState.PAUSED
|
||||
else:
|
||||
self._state = STATE_IDLE
|
||||
self._state = MediaPlayerState.IDLE
|
||||
self._media_duration = self._vlc.get_length() / 1000
|
||||
position = self._vlc.get_position() * self._media_duration
|
||||
if position != self._media_position:
|
||||
|
@ -115,11 +115,6 @@ class VlcDevice(MediaPlayerEntity):
|
|||
"""Boolean if volume is currently muted."""
|
||||
return self._muted
|
||||
|
||||
@property
|
||||
def media_content_type(self):
|
||||
"""Content type of current playing media."""
|
||||
return MEDIA_TYPE_MUSIC
|
||||
|
||||
@property
|
||||
def media_duration(self):
|
||||
"""Duration of current playing media in seconds."""
|
||||
|
@ -153,20 +148,20 @@ class VlcDevice(MediaPlayerEntity):
|
|||
def media_play(self) -> None:
|
||||
"""Send play command."""
|
||||
self._vlc.play()
|
||||
self._state = STATE_PLAYING
|
||||
self._state = MediaPlayerState.PLAYING
|
||||
|
||||
def media_pause(self) -> None:
|
||||
"""Send pause command."""
|
||||
self._vlc.pause()
|
||||
self._state = STATE_PAUSED
|
||||
self._state = MediaPlayerState.PAUSED
|
||||
|
||||
def media_stop(self) -> None:
|
||||
"""Send stop command."""
|
||||
self._vlc.stop()
|
||||
self._state = STATE_IDLE
|
||||
self._state = MediaPlayerState.IDLE
|
||||
|
||||
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:
|
||||
"""Play media from a URL or file."""
|
||||
# Handle media_source
|
||||
|
@ -176,11 +171,11 @@ class VlcDevice(MediaPlayerEntity):
|
|||
)
|
||||
media_id = sourced_media.url
|
||||
|
||||
elif media_type != MEDIA_TYPE_MUSIC:
|
||||
elif media_type != MediaType.MUSIC:
|
||||
_LOGGER.error(
|
||||
"Invalid media type %s. Only %s is supported",
|
||||
media_type,
|
||||
MEDIA_TYPE_MUSIC,
|
||||
MediaType.MUSIC,
|
||||
)
|
||||
return
|
||||
|
||||
|
@ -191,10 +186,12 @@ class VlcDevice(MediaPlayerEntity):
|
|||
self._vlc.play()
|
||||
|
||||
await self.hass.async_add_executor_job(play)
|
||||
self._state = STATE_PLAYING
|
||||
self._state = MediaPlayerState.PLAYING
|
||||
|
||||
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:
|
||||
"""Implement the websocket media browsing helper."""
|
||||
return await media_source.async_browse_media(
|
||||
|
|
|
@ -15,11 +15,12 @@ from homeassistant.components.media_player import (
|
|||
BrowseMedia,
|
||||
MediaPlayerEntity,
|
||||
MediaPlayerEntityFeature,
|
||||
MediaPlayerState,
|
||||
MediaType,
|
||||
async_process_play_media_url,
|
||||
)
|
||||
from homeassistant.components.media_player.const import MEDIA_TYPE_MUSIC
|
||||
from homeassistant.config_entries import SOURCE_HASSIO, ConfigEntry
|
||||
from homeassistant.const import CONF_NAME, STATE_IDLE, STATE_PAUSED, STATE_PLAYING
|
||||
from homeassistant.const import CONF_NAME
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.exceptions import HomeAssistantError
|
||||
from homeassistant.helpers.device_registry import DeviceEntryType
|
||||
|
@ -71,6 +72,7 @@ def catch_vlc_errors(
|
|||
class VlcDevice(MediaPlayerEntity):
|
||||
"""Representation of a vlc player."""
|
||||
|
||||
_attr_media_content_type = MediaType.MUSIC
|
||||
_attr_supported_features = (
|
||||
MediaPlayerEntityFeature.CLEAR_PLAYLIST
|
||||
| MediaPlayerEntityFeature.NEXT_TRACK
|
||||
|
@ -132,7 +134,7 @@ class VlcDevice(MediaPlayerEntity):
|
|||
)
|
||||
return
|
||||
|
||||
self._state = STATE_IDLE
|
||||
self._state = MediaPlayerState.IDLE
|
||||
self._available = True
|
||||
LOGGER.info("Connected to vlc host: %s", self._vlc.host)
|
||||
|
||||
|
@ -142,13 +144,13 @@ class VlcDevice(MediaPlayerEntity):
|
|||
self._volume = status.audio_volume / MAX_VOLUME
|
||||
state = status.state
|
||||
if state == "playing":
|
||||
self._state = STATE_PLAYING
|
||||
self._state = MediaPlayerState.PLAYING
|
||||
elif state == "paused":
|
||||
self._state = STATE_PAUSED
|
||||
self._state = MediaPlayerState.PAUSED
|
||||
else:
|
||||
self._state = STATE_IDLE
|
||||
self._state = MediaPlayerState.IDLE
|
||||
|
||||
if self._state != STATE_IDLE:
|
||||
if self._state != MediaPlayerState.IDLE:
|
||||
self._media_duration = (await self._vlc.get_length()).length
|
||||
time_output = await self._vlc.get_time()
|
||||
vlc_position = time_output.time
|
||||
|
@ -209,11 +211,6 @@ class VlcDevice(MediaPlayerEntity):
|
|||
"""Boolean if volume is currently muted."""
|
||||
return self._muted
|
||||
|
||||
@property
|
||||
def media_content_type(self) -> str:
|
||||
"""Content type of current playing media."""
|
||||
return MEDIA_TYPE_MUSIC
|
||||
|
||||
@property
|
||||
def media_duration(self) -> int | None:
|
||||
"""Duration of current playing media in seconds."""
|
||||
|
@ -270,7 +267,7 @@ class VlcDevice(MediaPlayerEntity):
|
|||
async def async_media_play(self) -> None:
|
||||
"""Send play command."""
|
||||
await self._vlc.play()
|
||||
self._state = STATE_PLAYING
|
||||
self._state = MediaPlayerState.PLAYING
|
||||
|
||||
@catch_vlc_errors
|
||||
async def async_media_pause(self) -> None:
|
||||
|
@ -281,17 +278,17 @@ class VlcDevice(MediaPlayerEntity):
|
|||
# pause.
|
||||
await self._vlc.pause()
|
||||
|
||||
self._state = STATE_PAUSED
|
||||
self._state = MediaPlayerState.PAUSED
|
||||
|
||||
@catch_vlc_errors
|
||||
async def async_media_stop(self) -> None:
|
||||
"""Send stop command."""
|
||||
await self._vlc.stop()
|
||||
self._state = STATE_IDLE
|
||||
self._state = MediaPlayerState.IDLE
|
||||
|
||||
@catch_vlc_errors
|
||||
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:
|
||||
"""Play media from a URL or file."""
|
||||
# Handle media_source
|
||||
|
@ -302,9 +299,9 @@ class VlcDevice(MediaPlayerEntity):
|
|||
media_type = sourced_media.mime_type
|
||||
media_id = sourced_media.url
|
||||
|
||||
if media_type != MEDIA_TYPE_MUSIC and not media_type.startswith("audio/"):
|
||||
if media_type != MediaType.MUSIC and not media_type.startswith("audio/"):
|
||||
raise HomeAssistantError(
|
||||
f"Invalid media type {media_type}. Only {MEDIA_TYPE_MUSIC} is supported"
|
||||
f"Invalid media type {media_type}. Only {MediaType.MUSIC} is supported"
|
||||
)
|
||||
|
||||
# If media ID is a relative URL, we serve it from HA.
|
||||
|
@ -313,7 +310,7 @@ class VlcDevice(MediaPlayerEntity):
|
|||
)
|
||||
|
||||
await self._vlc.add(media_id)
|
||||
self._state = STATE_PLAYING
|
||||
self._state = MediaPlayerState.PLAYING
|
||||
|
||||
@catch_vlc_errors
|
||||
async def async_media_previous_track(self) -> None:
|
||||
|
@ -337,7 +334,9 @@ class VlcDevice(MediaPlayerEntity):
|
|||
await self._vlc.random(shuffle_command)
|
||||
|
||||
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:
|
||||
"""Implement the websocket media browsing helper."""
|
||||
return await media_source.async_browse_media(
|
||||
|
|
|
@ -10,23 +10,15 @@ import json
|
|||
from typing import Any
|
||||
|
||||
from homeassistant.components.media_player import (
|
||||
BrowseMedia,
|
||||
MediaPlayerEntity,
|
||||
MediaPlayerEntityFeature,
|
||||
)
|
||||
from homeassistant.components.media_player.browse_media import BrowseMedia
|
||||
from homeassistant.components.media_player.const import (
|
||||
MEDIA_TYPE_MUSIC,
|
||||
REPEAT_MODE_ALL,
|
||||
REPEAT_MODE_OFF,
|
||||
MediaPlayerState,
|
||||
MediaType,
|
||||
RepeatMode,
|
||||
)
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import (
|
||||
CONF_ID,
|
||||
CONF_NAME,
|
||||
STATE_IDLE,
|
||||
STATE_PAUSED,
|
||||
STATE_PLAYING,
|
||||
)
|
||||
from homeassistant.const import CONF_ID, CONF_NAME
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.helpers.entity import DeviceInfo
|
||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||
|
@ -58,6 +50,7 @@ async def async_setup_entry(
|
|||
class Volumio(MediaPlayerEntity):
|
||||
"""Volumio Player Object."""
|
||||
|
||||
_attr_media_content_type = MediaType.MUSIC
|
||||
_attr_supported_features = (
|
||||
MediaPlayerEntityFeature.PAUSE
|
||||
| MediaPlayerEntityFeature.VOLUME_SET
|
||||
|
@ -114,20 +107,15 @@ class Volumio(MediaPlayerEntity):
|
|||
)
|
||||
|
||||
@property
|
||||
def media_content_type(self):
|
||||
"""Content type of current playing media."""
|
||||
return MEDIA_TYPE_MUSIC
|
||||
|
||||
@property
|
||||
def state(self):
|
||||
def state(self) -> MediaPlayerState:
|
||||
"""Return the state of the device."""
|
||||
status = self._state.get("status", None)
|
||||
if status == "pause":
|
||||
return STATE_PAUSED
|
||||
return MediaPlayerState.PAUSED
|
||||
if status == "play":
|
||||
return STATE_PLAYING
|
||||
return MediaPlayerState.PLAYING
|
||||
|
||||
return STATE_IDLE
|
||||
return MediaPlayerState.IDLE
|
||||
|
||||
@property
|
||||
def media_title(self):
|
||||
|
@ -179,11 +167,11 @@ class Volumio(MediaPlayerEntity):
|
|||
return self._state.get("random", False)
|
||||
|
||||
@property
|
||||
def repeat(self):
|
||||
def repeat(self) -> RepeatMode:
|
||||
"""Return current repeat mode."""
|
||||
if self._state.get("repeat", None):
|
||||
return REPEAT_MODE_ALL
|
||||
return REPEAT_MODE_OFF
|
||||
return RepeatMode.ALL
|
||||
return RepeatMode.OFF
|
||||
|
||||
@property
|
||||
def source_list(self):
|
||||
|
@ -241,9 +229,9 @@ class Volumio(MediaPlayerEntity):
|
|||
"""Enable/disable shuffle mode."""
|
||||
await self._volumio.set_shuffle(shuffle)
|
||||
|
||||
async def async_set_repeat(self, repeat: str) -> None:
|
||||
async def async_set_repeat(self, repeat: RepeatMode) -> None:
|
||||
"""Set repeat mode."""
|
||||
if repeat == REPEAT_MODE_OFF:
|
||||
if repeat == RepeatMode.OFF:
|
||||
await self._volumio.repeatAll("false")
|
||||
else:
|
||||
await self._volumio.repeatAll("true")
|
||||
|
@ -264,13 +252,15 @@ class Volumio(MediaPlayerEntity):
|
|||
self._playlists = await self._volumio.get_playlists()
|
||||
|
||||
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:
|
||||
"""Send the play_media command to the media player."""
|
||||
await self._volumio.replace_and_play(json.loads(media_id))
|
||||
|
||||
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:
|
||||
"""Implement the websocket media browsing helper."""
|
||||
self.thumbnail_cache = {}
|
||||
|
@ -283,7 +273,7 @@ class Volumio(MediaPlayerEntity):
|
|||
|
||||
async def async_get_browse_image(
|
||||
self,
|
||||
media_content_type: str,
|
||||
media_content_type: MediaType | str,
|
||||
media_content_id: str,
|
||||
media_image_id: str | None = None,
|
||||
) -> tuple[bytes | None, str | None]:
|
||||
|
|
|
@ -16,16 +16,15 @@ from homeassistant.components.media_player import (
|
|||
MediaPlayerDeviceClass,
|
||||
MediaPlayerEntity,
|
||||
MediaPlayerEntityFeature,
|
||||
MediaPlayerState,
|
||||
MediaType,
|
||||
)
|
||||
from homeassistant.components.media_player.const import MEDIA_TYPE_CHANNEL
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import (
|
||||
ATTR_ENTITY_ID,
|
||||
ATTR_SUPPORTED_FEATURES,
|
||||
ENTITY_MATCH_ALL,
|
||||
ENTITY_MATCH_NONE,
|
||||
STATE_OFF,
|
||||
STATE_ON,
|
||||
)
|
||||
from homeassistant.core import HomeAssistant
|
||||
from homeassistant.exceptions import HomeAssistantError
|
||||
|
@ -97,7 +96,7 @@ def cmd(
|
|||
try:
|
||||
await func(self, *args, **kwargs)
|
||||
except WEBOSTV_EXCEPTIONS as exc:
|
||||
if self.state != STATE_OFF:
|
||||
if self.state != MediaPlayerState.OFF:
|
||||
raise HomeAssistantError(
|
||||
f"Error calling {func.__name__} on entity {self.entity_id}, state:{self.state}"
|
||||
) from exc
|
||||
|
@ -154,7 +153,7 @@ class LgWebOSMediaPlayerEntity(RestoreEntity, MediaPlayerEntity):
|
|||
)
|
||||
|
||||
if (
|
||||
self.state == STATE_OFF
|
||||
self.state == MediaPlayerState.OFF
|
||||
and (state := await self.async_get_last_state()) is not None
|
||||
):
|
||||
self._supported_features = (
|
||||
|
@ -188,7 +187,9 @@ class LgWebOSMediaPlayerEntity(RestoreEntity, MediaPlayerEntity):
|
|||
"""Update entity state attributes."""
|
||||
self._update_sources()
|
||||
|
||||
self._attr_state = STATE_ON if self._client.is_on else STATE_OFF
|
||||
self._attr_state = (
|
||||
MediaPlayerState.ON if self._client.is_on else MediaPlayerState.OFF
|
||||
)
|
||||
self._attr_is_volume_muted = cast(bool, self._client.muted)
|
||||
|
||||
self._attr_volume_level = None
|
||||
|
@ -200,7 +201,7 @@ class LgWebOSMediaPlayerEntity(RestoreEntity, MediaPlayerEntity):
|
|||
|
||||
self._attr_media_content_type = None
|
||||
if self._client.current_app_id == LIVE_TV_APP_ID:
|
||||
self._attr_media_content_type = MEDIA_TYPE_CHANNEL
|
||||
self._attr_media_content_type = MediaType.CHANNEL
|
||||
|
||||
self._attr_media_title = None
|
||||
if (self._client.current_app_id == LIVE_TV_APP_ID) and (
|
||||
|
@ -217,7 +218,7 @@ class LgWebOSMediaPlayerEntity(RestoreEntity, MediaPlayerEntity):
|
|||
icon = self._client.apps[self._client.current_app_id]["icon"]
|
||||
self._attr_media_image_url = icon
|
||||
|
||||
if self.state != STATE_OFF or not self._supported_features:
|
||||
if self.state != MediaPlayerState.OFF or not self._supported_features:
|
||||
supported = SUPPORT_WEBOSTV
|
||||
if self._client.sound_output in ("external_arc", "external_speaker"):
|
||||
supported = supported | SUPPORT_WEBOSTV_VOLUME
|
||||
|
@ -236,7 +237,7 @@ class LgWebOSMediaPlayerEntity(RestoreEntity, MediaPlayerEntity):
|
|||
name=self.name,
|
||||
)
|
||||
|
||||
if self._client.system_info is not None or self.state != STATE_OFF:
|
||||
if self._client.system_info is not None or self.state != MediaPlayerState.OFF:
|
||||
maj_v = self._client.software_info.get("major_ver")
|
||||
min_v = self._client.software_info.get("minor_ver")
|
||||
if maj_v and min_v:
|
||||
|
@ -246,7 +247,7 @@ class LgWebOSMediaPlayerEntity(RestoreEntity, MediaPlayerEntity):
|
|||
self._attr_device_info["model"] = model
|
||||
|
||||
self._attr_extra_state_attributes = {}
|
||||
if self._client.sound_output is not None or self.state != STATE_OFF:
|
||||
if self._client.sound_output is not None or self.state != MediaPlayerState.OFF:
|
||||
self._attr_extra_state_attributes = {
|
||||
ATTR_SOUND_OUTPUT: self._client.sound_output
|
||||
}
|
||||
|
@ -376,12 +377,12 @@ class LgWebOSMediaPlayerEntity(RestoreEntity, MediaPlayerEntity):
|
|||
|
||||
@cmd
|
||||
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:
|
||||
"""Play a piece of media."""
|
||||
_LOGGER.debug("Call play media type <%s>, Id <%s>", media_type, media_id)
|
||||
|
||||
if media_type == MEDIA_TYPE_CHANNEL:
|
||||
if media_type == MediaType.CHANNEL:
|
||||
_LOGGER.debug("Searching channel")
|
||||
partial_match_channel_id = None
|
||||
perfect_match_channel_id = None
|
||||
|
|
|
@ -4,9 +4,9 @@ from pyws66i import WS66i, ZoneStatus
|
|||
from homeassistant.components.media_player import (
|
||||
MediaPlayerEntity,
|
||||
MediaPlayerEntityFeature,
|
||||
MediaPlayerState,
|
||||
)
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import STATE_OFF, STATE_ON
|
||||
from homeassistant.core import HomeAssistant, callback
|
||||
from homeassistant.helpers.entity import DeviceInfo
|
||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||
|
@ -96,7 +96,7 @@ class Ws66iZone(CoordinatorEntity[Ws66iDataUpdateCoordinator], MediaPlayerEntity
|
|||
def _set_attrs_from_status(self) -> None:
|
||||
status = self._status
|
||||
sources = self._ws66i_data.sources.id_name
|
||||
self._attr_state = STATE_ON if status.power else STATE_OFF
|
||||
self._attr_state = MediaPlayerState.ON if status.power else MediaPlayerState.OFF
|
||||
self._attr_volume_level = status.volume / float(MAX_VOL)
|
||||
self._attr_is_volume_muted = status.mute
|
||||
self._attr_source = self._attr_media_title = sources[status.source]
|
||||
|
|
Loading…
Add table
Reference in a new issue