Use new media player enums in forked_daapd (#78100)

This commit is contained in:
epenet 2022-09-13 11:55:24 +02:00 committed by GitHub
parent d88334b2b2
commit 52ea9998bb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

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