mirror of
https://github.com/home-assistant/core.git
synced 2025-07-22 12:47:08 +00:00
Handle media position in Bravia TV (#107080)
Handle media position in BraviaTV
This commit is contained in:
parent
ef66560744
commit
a7a19786cc
@ -2,7 +2,7 @@
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from collections.abc import Awaitable, Callable, Coroutine, Iterable
|
from collections.abc import Awaitable, Callable, Coroutine, Iterable
|
||||||
from datetime import timedelta
|
from datetime import datetime, timedelta
|
||||||
from functools import wraps
|
from functools import wraps
|
||||||
import logging
|
import logging
|
||||||
from types import MappingProxyType
|
from types import MappingProxyType
|
||||||
@ -87,6 +87,8 @@ class BraviaTVCoordinator(DataUpdateCoordinator[None]):
|
|||||||
self.media_content_type: MediaType | None = None
|
self.media_content_type: MediaType | None = None
|
||||||
self.media_uri: str | None = None
|
self.media_uri: str | None = None
|
||||||
self.media_duration: int | 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_level: float | None = None
|
||||||
self.volume_target: str | None = None
|
self.volume_target: str | None = None
|
||||||
self.volume_muted = False
|
self.volume_muted = False
|
||||||
@ -185,6 +187,16 @@ class BraviaTVCoordinator(DataUpdateCoordinator[None]):
|
|||||||
self.media_content_id = None
|
self.media_content_id = None
|
||||||
self.media_content_type = None
|
self.media_content_type = None
|
||||||
self.source = 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:
|
if self.media_uri:
|
||||||
self.media_content_id = self.media_uri
|
self.media_content_id = self.media_uri
|
||||||
if self.media_uri[:8] == "extInput":
|
if self.media_uri[:8] == "extInput":
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
"""Media player support for Bravia TV integration."""
|
"""Media player support for Bravia TV integration."""
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
|
from datetime import datetime
|
||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
from homeassistant.components.media_player import (
|
from homeassistant.components.media_player import (
|
||||||
@ -111,6 +112,16 @@ class BraviaTVMediaPlayer(BraviaTVEntity, MediaPlayerEntity):
|
|||||||
"""Duration of current playing media in seconds."""
|
"""Duration of current playing media in seconds."""
|
||||||
return self.coordinator.media_duration
|
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:
|
async def async_turn_on(self) -> None:
|
||||||
"""Turn the device on."""
|
"""Turn the device on."""
|
||||||
await self.coordinator.async_turn_on()
|
await self.coordinator.async_turn_on()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user