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

View File

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

View File

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

View File

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

View File

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