diff --git a/homeassistant/components/forked_daapd/media_player.py b/homeassistant/components/forked_daapd/media_player.py index 953461c1019..429c0d7ab60 100644 --- a/homeassistant/components/forked_daapd/media_player.py +++ b/homeassistant/components/forked_daapd/media_player.py @@ -10,22 +10,15 @@ from pyforked_daapd import ForkedDaapdAPI from pylibrespot_java import LibrespotJavaAPI from homeassistant.components import media_source -from homeassistant.components.media_player import BrowseMedia, MediaPlayerEntity -from homeassistant.components.media_player.browse_media import ( +from homeassistant.components.media_player import ( + BrowseMedia, + MediaPlayerEntity, + 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 ( - CONF_HOST, - CONF_PASSWORD, - CONF_PORT, - STATE_IDLE, - STATE_OFF, - STATE_ON, - STATE_PAUSED, - STATE_PLAYING, -) +from homeassistant.const import CONF_HOST, CONF_PASSWORD, CONF_PORT from homeassistant.core import HomeAssistant, callback from homeassistant.helpers.aiohttp_client import async_get_clientsession from homeassistant.helpers.dispatcher import ( @@ -171,7 +164,7 @@ class ForkedDaapdZone(MediaPlayerEntity): async def async_toggle(self) -> None: """Toggle the power on the zone.""" - if self.state == STATE_OFF: + if self.state == MediaPlayerState.OFF: await self.async_turn_on() else: await self.async_turn_off() @@ -195,11 +188,11 @@ class ForkedDaapdZone(MediaPlayerEntity): return f"{FD_NAME} output ({self._output['name']})" @property - def state(self) -> str: + def state(self) -> MediaPlayerState: """State of the zone.""" if self._output["selected"]: - return STATE_ON - return STATE_OFF + return MediaPlayerState.ON + return MediaPlayerState.OFF @property def volume_level(self): @@ -452,7 +445,7 @@ class ForkedDaapdMaster(MediaPlayerEntity): Default media player component method counts idle as off. We consider idle to be on but just not playing. """ - if self.state == STATE_OFF: + if self.state == MediaPlayerState.OFF: await self.async_turn_on() else: await self.async_turn_off() @@ -463,16 +456,17 @@ class ForkedDaapdMaster(MediaPlayerEntity): return f"{FD_NAME} server" @property - def state(self): + def state(self) -> MediaPlayerState | None: """State of the player.""" if self._player["state"] == "play": - return STATE_PLAYING + return MediaPlayerState.PLAYING if self._player["state"] == "pause": - return STATE_PAUSED + return MediaPlayerState.PAUSED if not any(output["selected"] for output in self._outputs): - return STATE_OFF + return MediaPlayerState.OFF if self._player["state"] == "stop": # this should catch all remaining cases - return STATE_IDLE + return MediaPlayerState.IDLE + return None @property def volume_level(self): @@ -661,17 +655,17 @@ class ForkedDaapdMaster(MediaPlayerEntity): self._paused_event.clear() 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 URI.""" 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: media_id = async_process_play_media_url(self.hass, media_id) saved_state = self.state # save play state @@ -717,7 +711,7 @@ class ForkedDaapdMaster(MediaPlayerEntity): await self._api.add_to_queue( uris=self._sources_uris[self._source], clear=True ) - if saved_state == STATE_PLAYING: + if saved_state == MediaPlayerState.PLAYING: await self.async_media_play() else: # restore stashed queue if saved_queue: @@ -731,9 +725,9 @@ class ForkedDaapdMaster(MediaPlayerEntity): clear=True, ) await self._api.seek(position_ms=saved_song_position) - if saved_state == STATE_PAUSED: + if saved_state == MediaPlayerState.PAUSED: await self.async_media_pause() - elif saved_state != STATE_PLAYING: + elif saved_state != MediaPlayerState.PLAYING: await self.async_media_stop() else: _LOGGER.debug("Media type '%s' not supported", media_type)