diff --git a/homeassistant/components/media_player/liveboxplaytv.py b/homeassistant/components/media_player/liveboxplaytv.py index 594e9b20432392930465a1193c6a777c8c3ac477..15698ec50223bda597cbb3bbfeb4c1c0c06a329f 100644 --- a/homeassistant/components/media_player/liveboxplaytv.py +++ b/homeassistant/components/media_player/liveboxplaytv.py @@ -4,13 +4,13 @@ Support for interface with an Orange Livebox Play TV appliance. For more details about this platform, please refer to the documentation at https://home-assistant.io/components/media_player.liveboxplaytv/ """ +import asyncio import logging from datetime import timedelta import requests import voluptuous as vol -import homeassistant.util as util from homeassistant.components.media_player import ( SUPPORT_TURN_ON, SUPPORT_TURN_OFF, SUPPORT_PLAY, SUPPORT_NEXT_TRACK, SUPPORT_PAUSE, SUPPORT_PREVIOUS_TRACK, @@ -21,7 +21,7 @@ from homeassistant.const import ( STATE_PAUSED, CONF_NAME) import homeassistant.helpers.config_validation as cv -REQUIREMENTS = ['liveboxplaytv==1.5.0'] +REQUIREMENTS = ['liveboxplaytv==2.0.0'] _LOGGER = logging.getLogger(__name__) @@ -43,8 +43,8 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ }) -# pylint: disable=unused-argument -def setup_platform(hass, config, add_devices, discovery_info=None): +@asyncio.coroutine +def async_setup_platform(hass, config, async_add_devices, discovery_info=None): """Set up the Orange Livebox Play TV platform.""" host = config.get(CONF_HOST) port = config.get(CONF_PORT) @@ -58,7 +58,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None): except IOError: _LOGGER.error("Failed to connect to Livebox Play TV at %s:%s. " "Please check your configuration", host, port) - add_devices(livebox_devices, True) + async_add_devices(livebox_devices, True) class LiveboxPlayTvDevice(MediaPlayerDevice): @@ -78,18 +78,28 @@ class LiveboxPlayTvDevice(MediaPlayerDevice): self._current_program = None self._media_image_url = None - @util.Throttle(MIN_TIME_BETWEEN_SCANS, MIN_TIME_BETWEEN_FORCED_SCANS) - def update(self): + @asyncio.coroutine + def async_update(self): """Retrieve the latest data.""" try: self._state = self.refresh_state() # Update current channel - channel = self._client.get_current_channel() + channel = self._client.channel if channel is not None: - self._current_program = self._client.program - self._current_channel = channel.get('name', None) - self._media_image_url = \ - self._client.get_current_channel_image(img_size=300) + self._current_program = yield from \ + self._client.async_get_current_program_name() + self._current_channel = channel + # Set media image to current program if a thumbnail is + # available. Otherwise we'll use the channel's image. + img_size = 800 + prg_img_url = yield from \ + self._client.async_get_current_program_image(img_size) + if prg_img_url: + self._media_image_url = prg_img_url + else: + chan_img_url = \ + self._client.get_current_channel_image(img_size) + self._media_image_url = chan_img_url self.refresh_channel_list() except requests.ConnectionError: self._state = None @@ -136,8 +146,11 @@ class LiveboxPlayTvDevice(MediaPlayerDevice): def media_title(self): """Title of current playing media.""" if self._current_channel: - return '{}: {}'.format(self._current_channel, - self._current_program) + if self._current_program: + return '{}: {}'.format(self._current_channel, + self._current_program) + else: + return self._current_channel @property def supported_features(self): diff --git a/requirements_all.txt b/requirements_all.txt index 5891c62f7ea4cbb716fea9af2bfa5fbdd34e0437..814f0442292fa9e528e0931c9a1eb629e31f684a 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -411,7 +411,7 @@ lightify==1.0.6 limitlessled==1.0.8 # homeassistant.components.media_player.liveboxplaytv -liveboxplaytv==1.5.0 +liveboxplaytv==2.0.0 # homeassistant.components.lametric # homeassistant.components.notify.lametric