1 """Media Player platform for Tessie integration."""
3 from __future__
import annotations
6 MediaPlayerDeviceClass,
13 from .
import TessieConfigEntry
14 from .entity
import TessieEntity
15 from .models
import TessieVehicleData
18 "Playing": MediaPlayerState.PLAYING,
19 "Paused": MediaPlayerState.PAUSED,
20 "Stopped": MediaPlayerState.IDLE,
28 entry: TessieConfigEntry,
29 async_add_entities: AddEntitiesCallback,
31 """Set up the Tessie Media platform from a config entry."""
32 data = entry.runtime_data
38 """Vehicle Location Media Class."""
40 _attr_device_class = MediaPlayerDeviceClass.SPEAKER
44 vehicle: TessieVehicleData,
46 """Initialize the media player entity."""
50 def state(self) -> MediaPlayerState:
51 """State of the player."""
53 self.
getget(
"vehicle_state_media_info_media_playback_status"),
59 """Volume level of the media player (0..1)."""
60 return self.
getget(
"vehicle_state_media_info_audio_volume", 0) / self.
getget(
61 "vehicle_state_media_info_audio_volume_max", 10.333333
66 """Duration of current playing media in seconds."""
67 if duration := self.
getget(
"vehicle_state_media_info_now_playing_duration"):
68 return duration / 1000
73 """Position of current playing media in seconds."""
75 if self.
getget(
"vehicle_state_media_info_now_playing_duration"):
76 return self.
getget(
"vehicle_state_media_info_now_playing_elapsed") / 1000
81 """Title of current playing media."""
82 if title := self.
getget(
"vehicle_state_media_info_now_playing_title"):
88 """Artist of current playing media, music track only."""
89 if artist := self.
getget(
"vehicle_state_media_info_now_playing_artist"):
95 """Album name of current playing media, music track only."""
96 if album := self.
getget(
"vehicle_state_media_info_now_playing_album"):
102 """Title of Playlist currently playing."""
103 if playlist := self.
getget(
"vehicle_state_media_info_now_playing_station"):
109 """Name of the current input source."""
110 if source := self.
getget(
"vehicle_state_media_info_now_playing_source"):
Any get(self, str|None key=None, Any|None default=None)