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