mirror of
https://github.com/home-assistant/core.git
synced 2025-07-20 11:47:06 +00:00
Use new media player enums [m-o] (#78057)
This commit is contained in:
parent
56c4e0391d
commit
2f8af92735
@ -7,9 +7,10 @@ from homeassistant import core
|
|||||||
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 CONF_PORT, STATE_OFF, STATE_ON
|
from homeassistant.const import CONF_PORT
|
||||||
from homeassistant.core import HomeAssistant
|
from homeassistant.core import HomeAssistant
|
||||||
from homeassistant.helpers import config_validation as cv, entity_platform, service
|
from homeassistant.helpers import config_validation as cv, entity_platform, service
|
||||||
from homeassistant.helpers.entity import DeviceInfo
|
from homeassistant.helpers.entity import DeviceInfo
|
||||||
@ -155,7 +156,7 @@ class MonopriceZone(MediaPlayerEntity):
|
|||||||
self._update_success = False
|
self._update_success = False
|
||||||
return
|
return
|
||||||
|
|
||||||
self._state = STATE_ON if state.power else STATE_OFF
|
self._state = MediaPlayerState.ON if state.power else MediaPlayerState.OFF
|
||||||
self._volume = state.volume
|
self._volume = state.volume
|
||||||
self._mute = state.mute
|
self._mute = state.mute
|
||||||
idx = state.source
|
idx = state.source
|
||||||
|
@ -15,29 +15,15 @@ import voluptuous as vol
|
|||||||
from homeassistant.components import media_source
|
from homeassistant.components import media_source
|
||||||
from homeassistant.components.media_player import (
|
from homeassistant.components.media_player import (
|
||||||
PLATFORM_SCHEMA,
|
PLATFORM_SCHEMA,
|
||||||
|
BrowseMedia,
|
||||||
MediaPlayerEntity,
|
MediaPlayerEntity,
|
||||||
MediaPlayerEntityFeature,
|
MediaPlayerEntityFeature,
|
||||||
)
|
MediaPlayerState,
|
||||||
from homeassistant.components.media_player.browse_media import (
|
MediaType,
|
||||||
BrowseMedia,
|
RepeatMode,
|
||||||
async_process_play_media_url,
|
async_process_play_media_url,
|
||||||
)
|
)
|
||||||
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,
|
|
||||||
REPEAT_MODE_ALL,
|
|
||||||
REPEAT_MODE_OFF,
|
|
||||||
REPEAT_MODE_ONE,
|
|
||||||
)
|
|
||||||
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
|
||||||
@ -97,6 +83,8 @@ async def async_setup_platform(
|
|||||||
class MpdDevice(MediaPlayerEntity):
|
class MpdDevice(MediaPlayerEntity):
|
||||||
"""Representation of a MPD server."""
|
"""Representation of a MPD server."""
|
||||||
|
|
||||||
|
_attr_media_content_type = MediaType.MUSIC
|
||||||
|
|
||||||
# pylint: disable=no-member
|
# pylint: disable=no-member
|
||||||
def __init__(self, server, port, password, name):
|
def __init__(self, server, port, password, name):
|
||||||
"""Initialize the MPD device."""
|
"""Initialize the MPD device."""
|
||||||
@ -185,18 +173,18 @@ class MpdDevice(MediaPlayerEntity):
|
|||||||
return self._name
|
return self._name
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def state(self):
|
def state(self) -> MediaPlayerState:
|
||||||
"""Return the media state."""
|
"""Return the media state."""
|
||||||
if self._status is None:
|
if self._status is None:
|
||||||
return STATE_OFF
|
return MediaPlayerState.OFF
|
||||||
if self._status["state"] == "play":
|
if self._status["state"] == "play":
|
||||||
return STATE_PLAYING
|
return MediaPlayerState.PLAYING
|
||||||
if self._status["state"] == "pause":
|
if self._status["state"] == "pause":
|
||||||
return STATE_PAUSED
|
return MediaPlayerState.PAUSED
|
||||||
if self._status["state"] == "stop":
|
if self._status["state"] == "stop":
|
||||||
return STATE_OFF
|
return MediaPlayerState.OFF
|
||||||
|
|
||||||
return STATE_OFF
|
return MediaPlayerState.OFF
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def is_volume_muted(self):
|
def is_volume_muted(self):
|
||||||
@ -208,11 +196,6 @@ class MpdDevice(MediaPlayerEntity):
|
|||||||
"""Return the content ID of current playing media."""
|
"""Return the content ID of current playing media."""
|
||||||
return self._currentsong.get("file")
|
return self._currentsong.get("file")
|
||||||
|
|
||||||
@property
|
|
||||||
def media_content_type(self):
|
|
||||||
"""Return the content type of current playing media."""
|
|
||||||
return MEDIA_TYPE_MUSIC
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def media_duration(self):
|
def media_duration(self):
|
||||||
"""Return the duration of current playing media in seconds."""
|
"""Return the duration of current playing media in seconds."""
|
||||||
@ -384,7 +367,7 @@ class MpdDevice(MediaPlayerEntity):
|
|||||||
|
|
||||||
async def async_select_source(self, source: str) -> None:
|
async def async_select_source(self, source: str) -> None:
|
||||||
"""Choose a different available playlist and play it."""
|
"""Choose a different available playlist and play it."""
|
||||||
await self.async_play_media(MEDIA_TYPE_PLAYLIST, source)
|
await self.async_play_media(MediaType.PLAYLIST, source)
|
||||||
|
|
||||||
@Throttle(PLAYLIST_UPDATE_INTERVAL)
|
@Throttle(PLAYLIST_UPDATE_INTERVAL)
|
||||||
async def _update_playlists(self, **kwargs: Any) -> None:
|
async def _update_playlists(self, **kwargs: Any) -> None:
|
||||||
@ -456,13 +439,13 @@ class MpdDevice(MediaPlayerEntity):
|
|||||||
) -> None:
|
) -> None:
|
||||||
"""Send the media player the command for playing a playlist."""
|
"""Send the media player the command for playing a playlist."""
|
||||||
if media_source.is_media_source_id(media_id):
|
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(
|
play_item = await media_source.async_resolve_media(
|
||||||
self.hass, media_id, self.entity_id
|
self.hass, media_id, self.entity_id
|
||||||
)
|
)
|
||||||
media_id = async_process_play_media_url(self.hass, play_item.url)
|
media_id = async_process_play_media_url(self.hass, play_item.url)
|
||||||
|
|
||||||
if media_type == MEDIA_TYPE_PLAYLIST:
|
if media_type == MediaType.PLAYLIST:
|
||||||
_LOGGER.debug("Playing playlist: %s", media_id)
|
_LOGGER.debug("Playing playlist: %s", media_id)
|
||||||
if media_id in self._playlists:
|
if media_id in self._playlists:
|
||||||
self._currentplaylist = media_id
|
self._currentplaylist = media_id
|
||||||
@ -479,22 +462,22 @@ class MpdDevice(MediaPlayerEntity):
|
|||||||
await self._client.play()
|
await self._client.play()
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def repeat(self):
|
def repeat(self) -> RepeatMode:
|
||||||
"""Return current repeat mode."""
|
"""Return current repeat mode."""
|
||||||
if self._status["repeat"] == "1":
|
if self._status["repeat"] == "1":
|
||||||
if self._status["single"] == "1":
|
if self._status["single"] == "1":
|
||||||
return REPEAT_MODE_ONE
|
return RepeatMode.ONE
|
||||||
return REPEAT_MODE_ALL
|
return RepeatMode.ALL
|
||||||
return REPEAT_MODE_OFF
|
return RepeatMode.OFF
|
||||||
|
|
||||||
async def async_set_repeat(self, repeat: str) -> None:
|
async def async_set_repeat(self, repeat: RepeatMode) -> None:
|
||||||
"""Set repeat mode."""
|
"""Set repeat mode."""
|
||||||
if repeat == REPEAT_MODE_OFF:
|
if repeat == RepeatMode.OFF:
|
||||||
await self._client.repeat(0)
|
await self._client.repeat(0)
|
||||||
await self._client.single(0)
|
await self._client.single(0)
|
||||||
else:
|
else:
|
||||||
await self._client.repeat(1)
|
await self._client.repeat(1)
|
||||||
if repeat == REPEAT_MODE_ONE:
|
if repeat == RepeatMode.ONE:
|
||||||
await self._client.single(1)
|
await self._client.single(1)
|
||||||
else:
|
else:
|
||||||
await self._client.single(0)
|
await self._client.single(0)
|
||||||
|
@ -8,15 +8,9 @@ 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_NAME, CONF_PORT, CONF_TYPE
|
||||||
CONF_HOST,
|
|
||||||
CONF_NAME,
|
|
||||||
CONF_PORT,
|
|
||||||
CONF_TYPE,
|
|
||||||
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
|
||||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||||
@ -186,10 +180,12 @@ class NAD(MediaPlayerEntity):
|
|||||||
self._state = None
|
self._state = None
|
||||||
return
|
return
|
||||||
self._state = (
|
self._state = (
|
||||||
STATE_ON if self._nad_receiver.main_power("?") == "On" else STATE_OFF
|
MediaPlayerState.ON
|
||||||
|
if self._nad_receiver.main_power("?") == "On"
|
||||||
|
else MediaPlayerState.OFF
|
||||||
)
|
)
|
||||||
|
|
||||||
if self._state == STATE_ON:
|
if self._state == MediaPlayerState.ON:
|
||||||
self._mute = self._nad_receiver.main_mute("?") == "On"
|
self._mute = self._nad_receiver.main_mute("?") == "On"
|
||||||
volume = self._nad_receiver.main_volume("?")
|
volume = self._nad_receiver.main_volume("?")
|
||||||
# Some receivers cannot report the volume, e.g. C 356BEE,
|
# Some receivers cannot report the volume, e.g. C 356BEE,
|
||||||
@ -312,9 +308,9 @@ class NADtcp(MediaPlayerEntity):
|
|||||||
|
|
||||||
# Update on/off state
|
# Update on/off state
|
||||||
if nad_status["power"]:
|
if nad_status["power"]:
|
||||||
self._state = STATE_ON
|
self._state = MediaPlayerState.ON
|
||||||
else:
|
else:
|
||||||
self._state = STATE_OFF
|
self._state = MediaPlayerState.OFF
|
||||||
|
|
||||||
# Update current volume
|
# Update current volume
|
||||||
self._volume = self.nad_vol_to_internal_vol(nad_status["volume"])
|
self._volume = self.nad_vol_to_internal_vol(nad_status["volume"])
|
||||||
|
@ -12,15 +12,10 @@ from homeassistant.components.media_player import (
|
|||||||
PLATFORM_SCHEMA,
|
PLATFORM_SCHEMA,
|
||||||
MediaPlayerEntity,
|
MediaPlayerEntity,
|
||||||
MediaPlayerEntityFeature,
|
MediaPlayerEntityFeature,
|
||||||
|
MediaPlayerState,
|
||||||
)
|
)
|
||||||
from homeassistant.components.media_player.const import DOMAIN
|
from homeassistant.components.media_player.const import DOMAIN
|
||||||
from homeassistant.const import (
|
from homeassistant.const import ATTR_ENTITY_ID, CONF_HOST, CONF_NAME
|
||||||
ATTR_ENTITY_ID,
|
|
||||||
CONF_HOST,
|
|
||||||
CONF_NAME,
|
|
||||||
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
|
||||||
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
from homeassistant.helpers.entity_platform import AddEntitiesCallback
|
||||||
@ -259,7 +254,7 @@ class OnkyoDevice(MediaPlayerEntity):
|
|||||||
self._receiver = receiver
|
self._receiver = receiver
|
||||||
self._muted = False
|
self._muted = False
|
||||||
self._volume = 0
|
self._volume = 0
|
||||||
self._pwstate = STATE_OFF
|
self._pwstate = MediaPlayerState.OFF
|
||||||
if name:
|
if name:
|
||||||
# not discovered
|
# not discovered
|
||||||
self._name = name
|
self._name = name
|
||||||
@ -303,9 +298,9 @@ class OnkyoDevice(MediaPlayerEntity):
|
|||||||
if not status:
|
if not status:
|
||||||
return
|
return
|
||||||
if status[1] == "on":
|
if status[1] == "on":
|
||||||
self._pwstate = STATE_ON
|
self._pwstate = MediaPlayerState.ON
|
||||||
else:
|
else:
|
||||||
self._pwstate = STATE_OFF
|
self._pwstate = MediaPlayerState.OFF
|
||||||
self._attributes.pop(ATTR_AUDIO_INFORMATION, None)
|
self._attributes.pop(ATTR_AUDIO_INFORMATION, None)
|
||||||
self._attributes.pop(ATTR_VIDEO_INFORMATION, None)
|
self._attributes.pop(ATTR_VIDEO_INFORMATION, None)
|
||||||
self._attributes.pop(ATTR_PRESET, None)
|
self._attributes.pop(ATTR_PRESET, None)
|
||||||
@ -514,9 +509,9 @@ class OnkyoDeviceZone(OnkyoDevice):
|
|||||||
if not status:
|
if not status:
|
||||||
return
|
return
|
||||||
if status[1] == "on":
|
if status[1] == "on":
|
||||||
self._pwstate = STATE_ON
|
self._pwstate = MediaPlayerState.ON
|
||||||
else:
|
else:
|
||||||
self._pwstate = STATE_OFF
|
self._pwstate = MediaPlayerState.OFF
|
||||||
return
|
return
|
||||||
|
|
||||||
volume_raw = self.command(f"zone{self._zone}.volume=query")
|
volume_raw = self.command(f"zone{self._zone}.volume=query")
|
||||||
|
@ -15,15 +15,13 @@ import voluptuous as vol
|
|||||||
|
|
||||||
from homeassistant.components import media_source
|
from homeassistant.components import media_source
|
||||||
from homeassistant.components.media_player import (
|
from homeassistant.components.media_player import (
|
||||||
|
BrowseMedia,
|
||||||
MediaPlayerEntity,
|
MediaPlayerEntity,
|
||||||
MediaPlayerEntityFeature,
|
MediaPlayerEntityFeature,
|
||||||
)
|
MediaPlayerState,
|
||||||
from homeassistant.components.media_player.browse_media import (
|
MediaType,
|
||||||
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 STATE_IDLE, STATE_OFF, 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
|
||||||
@ -126,7 +124,7 @@ class OpenhomeDevice(MediaPlayerEntity):
|
|||||||
self._source_index = {}
|
self._source_index = {}
|
||||||
self._source = {}
|
self._source = {}
|
||||||
self._name = None
|
self._name = None
|
||||||
self._state = STATE_PLAYING
|
self._state = MediaPlayerState.PLAYING
|
||||||
self._available = True
|
self._available = True
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@ -180,16 +178,16 @@ class OpenhomeDevice(MediaPlayerEntity):
|
|||||||
)
|
)
|
||||||
|
|
||||||
if self._in_standby:
|
if self._in_standby:
|
||||||
self._state = STATE_OFF
|
self._state = MediaPlayerState.OFF
|
||||||
elif self._transport_state == "Paused":
|
elif self._transport_state == "Paused":
|
||||||
self._state = STATE_PAUSED
|
self._state = MediaPlayerState.PAUSED
|
||||||
elif self._transport_state in ("Playing", "Buffering"):
|
elif self._transport_state in ("Playing", "Buffering"):
|
||||||
self._state = STATE_PLAYING
|
self._state = MediaPlayerState.PLAYING
|
||||||
elif self._transport_state == "Stopped":
|
elif self._transport_state == "Stopped":
|
||||||
self._state = STATE_IDLE
|
self._state = MediaPlayerState.IDLE
|
||||||
else:
|
else:
|
||||||
# Device is playing an external source with no transport controls
|
# Device is playing an external source with no transport controls
|
||||||
self._state = STATE_PLAYING
|
self._state = MediaPlayerState.PLAYING
|
||||||
|
|
||||||
self._available = True
|
self._available = True
|
||||||
except (asyncio.TimeoutError, aiohttp.ClientError, UpnpError):
|
except (asyncio.TimeoutError, aiohttp.ClientError, UpnpError):
|
||||||
@ -211,17 +209,17 @@ class OpenhomeDevice(MediaPlayerEntity):
|
|||||||
) -> None:
|
) -> None:
|
||||||
"""Send the play_media command to the media player."""
|
"""Send the play_media command to the media player."""
|
||||||
if media_source.is_media_source_id(media_id):
|
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(
|
play_item = await media_source.async_resolve_media(
|
||||||
self.hass, media_id, self.entity_id
|
self.hass, media_id, self.entity_id
|
||||||
)
|
)
|
||||||
media_id = play_item.url
|
media_id = play_item.url
|
||||||
|
|
||||||
if media_type != MEDIA_TYPE_MUSIC:
|
if media_type != MediaType.MUSIC:
|
||||||
_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_MUSIC,
|
MediaType.MUSIC,
|
||||||
)
|
)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user