Use new media player enums [m-o] (#78057)

This commit is contained in:
epenet 2022-09-08 22:47:59 +02:00 committed by GitHub
parent 56c4e0391d
commit 2f8af92735
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 53 additions and 80 deletions

View File

@ -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

View File

@ -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)

View File

@ -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"])

View File

@ -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")

View File

@ -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