diff --git a/homeassistant/components/braviatv/coordinator.py b/homeassistant/components/braviatv/coordinator.py index 59219a34eb7..72d2107271f 100644 --- a/homeassistant/components/braviatv/coordinator.py +++ b/homeassistant/components/braviatv/coordinator.py @@ -2,7 +2,7 @@ from __future__ import annotations from collections.abc import Awaitable, Callable, Coroutine, Iterable -from datetime import timedelta +from datetime import datetime, timedelta from functools import wraps import logging from types import MappingProxyType @@ -87,6 +87,8 @@ class BraviaTVCoordinator(DataUpdateCoordinator[None]): self.media_content_type: MediaType | None = None self.media_uri: str | None = None self.media_duration: int | None = None + self.media_position: int | None = None + self.media_position_updated_at: datetime | None = None self.volume_level: float | None = None self.volume_target: str | None = None self.volume_muted = False @@ -185,6 +187,16 @@ class BraviaTVCoordinator(DataUpdateCoordinator[None]): self.media_content_id = None self.media_content_type = None self.source = None + if start_datetime := playing_info.get("startDateTime"): + start_datetime = datetime.fromisoformat(start_datetime) + current_datetime = datetime.now().replace(tzinfo=start_datetime.tzinfo) + self.media_position = int( + (current_datetime - start_datetime).total_seconds() + ) + self.media_position_updated_at = datetime.now() + else: + self.media_position = None + self.media_position_updated_at = None if self.media_uri: self.media_content_id = self.media_uri if self.media_uri[:8] == "extInput": diff --git a/homeassistant/components/braviatv/media_player.py b/homeassistant/components/braviatv/media_player.py index cfa388fcce7..111f08e441a 100644 --- a/homeassistant/components/braviatv/media_player.py +++ b/homeassistant/components/braviatv/media_player.py @@ -1,6 +1,7 @@ """Media player support for Bravia TV integration.""" from __future__ import annotations +from datetime import datetime from typing import Any from homeassistant.components.media_player import ( @@ -111,6 +112,16 @@ class BraviaTVMediaPlayer(BraviaTVEntity, MediaPlayerEntity): """Duration of current playing media in seconds.""" return self.coordinator.media_duration + @property + def media_position(self) -> int | None: + """Position of current playing media in seconds.""" + return self.coordinator.media_position + + @property + def media_position_updated_at(self) -> datetime | None: + """When was the position of the current playing media valid.""" + return self.coordinator.media_position_updated_at + async def async_turn_on(self) -> None: """Turn the device on.""" await self.coordinator.async_turn_on()