@util.Throttle(MIN_TIME_BETWEEN_SCANS, MIN_TIME_BETWEEN_FORCED_SCANS)
    def update(self):
        """Retrieve the latest data."""
        try:
            self._state = STATE_PLAYING
            self._muted = self._client.get_muted()
            self._volume = self._client.get_volume()
            self._current_source_id = self._client.get_input()

            self._source_list = {}
            self._source_label_list = []
            self._app_list = {}
            for app in self._client.get_apps():
                self._app_list[app['id']] = app

            for source in self._client.get_inputs():
                self._source_list[source['label']] = source
                self._app_list[source['appId']] = source
                self._source_label_list.append(source['label'])
                if source['appId'] == self._current_source_id:
                    self._current_source = source['label']

        except __HOLE__:
            self._state = STATE_OFF
dataset/ETHPy150Open home-assistant/home-assistant/homeassistant/components/media_player/webostv.py/LgWebOSDevice.update