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