mirror of
https://github.com/home-assistant/core.git
synced 2025-07-24 05:37:44 +00:00
Activate kodi media player progress bar (#17626)
* Added code for progress bar * Added doc string * Using in * More cleaning * Only update position if needed.
This commit is contained in:
parent
26ba4a56e8
commit
b261c4b7f8
@ -33,6 +33,7 @@ from homeassistant.helpers import script
|
||||
from homeassistant.helpers.aiohttp_client import async_get_clientsession
|
||||
from homeassistant.helpers.template import Template
|
||||
from homeassistant.util.yaml import dump
|
||||
import homeassistant.util.dt as dt_util
|
||||
|
||||
REQUIREMENTS = ['jsonrpc-async==0.6', 'jsonrpc-websocket==0.6']
|
||||
|
||||
@ -281,6 +282,8 @@ class KodiDevice(MediaPlayerDevice):
|
||||
self.hass = hass
|
||||
self._name = name
|
||||
self._unique_id = unique_id
|
||||
self._media_position_updated_at = None
|
||||
self._media_position = None
|
||||
|
||||
kwargs = {
|
||||
'timeout': timeout,
|
||||
@ -313,6 +316,7 @@ class KodiDevice(MediaPlayerDevice):
|
||||
self._ws_server.Player.OnAVChange = self.async_on_speed_event
|
||||
self._ws_server.Player.OnResume = self.async_on_speed_event
|
||||
self._ws_server.Player.OnSpeedChanged = self.async_on_speed_event
|
||||
self._ws_server.Player.OnSeek = self.async_on_speed_event
|
||||
self._ws_server.Player.OnStop = self.async_on_stop
|
||||
self._ws_server.Application.OnVolumeChanged = \
|
||||
self.async_on_volume_changed
|
||||
@ -371,6 +375,8 @@ class KodiDevice(MediaPlayerDevice):
|
||||
self._players = []
|
||||
self._properties = {}
|
||||
self._item = {}
|
||||
self._media_position_updated_at = None
|
||||
self._media_position = None
|
||||
self.async_schedule_update_ha_state()
|
||||
|
||||
@callback
|
||||
@ -473,6 +479,11 @@ class KodiDevice(MediaPlayerDevice):
|
||||
['time', 'totaltime', 'speed', 'live']
|
||||
)
|
||||
|
||||
position = self._properties['time']
|
||||
if self._media_position != position:
|
||||
self._media_position_updated_at = dt_util.utcnow()
|
||||
self._media_position = position
|
||||
|
||||
self._item = (await self.server.Player.GetItem(
|
||||
player_id,
|
||||
['title', 'file', 'uniqueid', 'thumbnail', 'artist',
|
||||
@ -482,6 +493,8 @@ class KodiDevice(MediaPlayerDevice):
|
||||
self._properties = {}
|
||||
self._item = {}
|
||||
self._app_properties = {}
|
||||
self._media_position = None
|
||||
self._media_position_updated_at = None
|
||||
|
||||
@property
|
||||
def server(self):
|
||||
@ -543,6 +556,24 @@ class KodiDevice(MediaPlayerDevice):
|
||||
total_time['minutes'] * 60 +
|
||||
total_time['seconds'])
|
||||
|
||||
@property
|
||||
def media_position(self):
|
||||
"""Position of current playing media in seconds."""
|
||||
time = self._properties.get('time')
|
||||
|
||||
if time is None:
|
||||
return None
|
||||
|
||||
return (
|
||||
time['hours'] * 3600 +
|
||||
time['minutes'] * 60 +
|
||||
time['seconds'])
|
||||
|
||||
@property
|
||||
def media_position_updated_at(self):
|
||||
"""Last valid time of media position."""
|
||||
return self._media_position_updated_at
|
||||
|
||||
@property
|
||||
def media_image_url(self):
|
||||
"""Image url of current playing media."""
|
||||
|
Loading…
x
Reference in New Issue
Block a user