mirror of
https://github.com/home-assistant/core.git
synced 2025-07-10 14:57:09 +00:00
Add available property to kodi, with some code cleanup (#69115)
* Add available property to kodi, with some code cleanup * Update homeassistant/components/kodi/media_player.py Co-authored-by: Shay Levy <levyshay1@gmail.com> Co-authored-by: Shay Levy <levyshay1@gmail.com>
This commit is contained in:
parent
7b682e2990
commit
5e3740d5ed
@ -9,7 +9,6 @@ import re
|
|||||||
from typing import Any, TypeVar
|
from typing import Any, TypeVar
|
||||||
import urllib.parse
|
import urllib.parse
|
||||||
|
|
||||||
import jsonrpc_base
|
|
||||||
from jsonrpc_base.jsonrpc import ProtocolError, TransportError
|
from jsonrpc_base.jsonrpc import ProtocolError, TransportError
|
||||||
from pykodi import CannotConnectError
|
from pykodi import CannotConnectError
|
||||||
from typing_extensions import Concatenate, ParamSpec
|
from typing_extensions import Concatenate, ParamSpec
|
||||||
@ -258,10 +257,7 @@ def cmd(
|
|||||||
"""Wrap all command methods."""
|
"""Wrap all command methods."""
|
||||||
try:
|
try:
|
||||||
await func(obj, *args, **kwargs)
|
await func(obj, *args, **kwargs)
|
||||||
except (
|
except (TransportError, ProtocolError) as exc:
|
||||||
jsonrpc_base.jsonrpc.TransportError,
|
|
||||||
jsonrpc_base.jsonrpc.ProtocolError,
|
|
||||||
) as exc:
|
|
||||||
# If Kodi is off, we expect calls to fail.
|
# If Kodi is off, we expect calls to fail.
|
||||||
if obj.state == STATE_OFF:
|
if obj.state == STATE_OFF:
|
||||||
log_function = _LOGGER.debug
|
log_function = _LOGGER.debug
|
||||||
@ -301,7 +297,6 @@ class KodiEntity(MediaPlayerEntity):
|
|||||||
"""Initialize the Kodi entity."""
|
"""Initialize the Kodi entity."""
|
||||||
self._connection = connection
|
self._connection = connection
|
||||||
self._kodi = kodi
|
self._kodi = kodi
|
||||||
self._name = name
|
|
||||||
self._unique_id = uid
|
self._unique_id = uid
|
||||||
self._players = None
|
self._players = None
|
||||||
self._properties = {}
|
self._properties = {}
|
||||||
@ -311,6 +306,8 @@ class KodiEntity(MediaPlayerEntity):
|
|||||||
self._media_position = None
|
self._media_position = None
|
||||||
self._connect_error = False
|
self._connect_error = False
|
||||||
|
|
||||||
|
self._attr_name = name
|
||||||
|
|
||||||
def _reset_state(self, players=None):
|
def _reset_state(self, players=None):
|
||||||
self._players = players
|
self._players = players
|
||||||
self._properties = {}
|
self._properties = {}
|
||||||
@ -440,7 +437,7 @@ class KodiEntity(MediaPlayerEntity):
|
|||||||
try:
|
try:
|
||||||
await self._connection.connect()
|
await self._connection.connect()
|
||||||
await self._on_ws_connected()
|
await self._on_ws_connected()
|
||||||
except (jsonrpc_base.jsonrpc.TransportError, CannotConnectError):
|
except (TransportError, CannotConnectError):
|
||||||
if not self._connect_error:
|
if not self._connect_error:
|
||||||
self._connect_error = True
|
self._connect_error = True
|
||||||
_LOGGER.warning("Unable to connect to Kodi via websocket")
|
_LOGGER.warning("Unable to connect to Kodi via websocket")
|
||||||
@ -451,7 +448,7 @@ class KodiEntity(MediaPlayerEntity):
|
|||||||
async def _ping(self):
|
async def _ping(self):
|
||||||
try:
|
try:
|
||||||
await self._kodi.ping()
|
await self._kodi.ping()
|
||||||
except (jsonrpc_base.jsonrpc.TransportError, CannotConnectError):
|
except (TransportError, CannotConnectError):
|
||||||
if not self._connect_error:
|
if not self._connect_error:
|
||||||
self._connect_error = True
|
self._connect_error = True
|
||||||
_LOGGER.warning("Unable to ping Kodi via websocket")
|
_LOGGER.warning("Unable to ping Kodi via websocket")
|
||||||
@ -528,11 +525,6 @@ class KodiEntity(MediaPlayerEntity):
|
|||||||
else:
|
else:
|
||||||
self._reset_state([])
|
self._reset_state([])
|
||||||
|
|
||||||
@property
|
|
||||||
def name(self):
|
|
||||||
"""Return the name of the device."""
|
|
||||||
return self._name
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def should_poll(self):
|
def should_poll(self):
|
||||||
"""Return True if entity has to be polled for state."""
|
"""Return True if entity has to be polled for state."""
|
||||||
@ -644,6 +636,11 @@ class KodiEntity(MediaPlayerEntity):
|
|||||||
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
@property
|
||||||
|
def available(self):
|
||||||
|
"""Return True if entity is available."""
|
||||||
|
return not self._connect_error
|
||||||
|
|
||||||
async def async_turn_on(self):
|
async def async_turn_on(self):
|
||||||
"""Turn the media player on."""
|
"""Turn the media player on."""
|
||||||
_LOGGER.debug("Firing event to turn on device")
|
_LOGGER.debug("Firing event to turn on device")
|
||||||
@ -765,7 +762,7 @@ class KodiEntity(MediaPlayerEntity):
|
|||||||
try:
|
try:
|
||||||
result = await self._kodi.call_method(method, **kwargs)
|
result = await self._kodi.call_method(method, **kwargs)
|
||||||
result_ok = True
|
result_ok = True
|
||||||
except jsonrpc_base.jsonrpc.ProtocolError as exc:
|
except ProtocolError as exc:
|
||||||
result = exc.args[2]["error"]
|
result = exc.args[2]["error"]
|
||||||
_LOGGER.error(
|
_LOGGER.error(
|
||||||
"Run API method %s.%s(%s) error: %s",
|
"Run API method %s.%s(%s) error: %s",
|
||||||
@ -774,7 +771,7 @@ class KodiEntity(MediaPlayerEntity):
|
|||||||
kwargs,
|
kwargs,
|
||||||
result,
|
result,
|
||||||
)
|
)
|
||||||
except jsonrpc_base.jsonrpc.TransportError:
|
except TransportError:
|
||||||
result = None
|
result = None
|
||||||
_LOGGER.warning(
|
_LOGGER.warning(
|
||||||
"TransportError trying to run API method %s.%s(%s)",
|
"TransportError trying to run API method %s.%s(%s)",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user