diff --git a/homeassistant/components/media_player/spotify.py b/homeassistant/components/media_player/spotify.py index 9b9a8c5bb2d..7b1e4bcc1e5 100644 --- a/homeassistant/components/media_player/spotify.py +++ b/homeassistant/components/media_player/spotify.py @@ -40,6 +40,7 @@ AUTH_CALLBACK_NAME = 'api:spotify' ICON = 'mdi:spotify' DEFAULT_NAME = 'Spotify' DOMAIN = 'spotify' +CONF_ALIASES = 'aliases' CONF_CLIENT_ID = 'client_id' CONF_CLIENT_SECRET = 'client_secret' CONF_CACHE_PATH = 'cache_path' @@ -52,7 +53,8 @@ PLATFORM_SCHEMA = PLATFORM_SCHEMA.extend({ vol.Required(CONF_CLIENT_ID): cv.string, vol.Required(CONF_CLIENT_SECRET): cv.string, vol.Optional(CONF_NAME): cv.string, - vol.Optional(CONF_CACHE_PATH): cv.string + vol.Optional(CONF_CACHE_PATH): cv.string, + vol.Optional(CONF_ALIASES, default={}): {cv.string: cv.string} }) SCAN_INTERVAL = timedelta(seconds=30) @@ -89,7 +91,8 @@ def setup_platform(hass, config, add_devices, discovery_info=None): configurator = get_component('configurator') configurator.request_done(hass.data.get(DOMAIN)) del hass.data[DOMAIN] - player = SpotifyMediaPlayer(oauth, config.get(CONF_NAME, DEFAULT_NAME)) + player = SpotifyMediaPlayer(oauth, config.get(CONF_NAME, DEFAULT_NAME), + config[CONF_ALIASES]) add_devices([player], True) @@ -117,7 +120,7 @@ class SpotifyAuthCallbackView(HomeAssistantView): class SpotifyMediaPlayer(MediaPlayerDevice): """Representation of a Spotify controller.""" - def __init__(self, oauth, name): + def __init__(self, oauth, name, aliases): """Initialize.""" self._name = name self._oauth = oauth @@ -128,10 +131,11 @@ class SpotifyMediaPlayer(MediaPlayerDevice): self._image_url = None self._state = STATE_UNKNOWN self._current_device = None - self._devices = None + self._devices = {} self._volume = None self._shuffle = False self._player = None + self._aliases = aliases self._token_info = self._oauth.get_cached_token() def refresh_spotify_instance(self): @@ -154,10 +158,19 @@ class SpotifyMediaPlayer(MediaPlayerDevice): """Update state and attributes.""" self.refresh_spotify_instance() # Available devices - devices = self._player.devices().get('devices') + player_devices = self._player.devices() + if player_devices is not None: + devices = player_devices.get('devices') if devices is not None: - self._devices = {device.get('name'): device.get('id') + old_devices = self._devices + self._devices = {self._aliases.get(device.get('id'), + device.get('name')): + device.get('id') for device in devices} + device_diff = {name: id for name, id in self._devices.items() + if old_devices.get(name, None) is None} + if len(device_diff) > 0: + _LOGGER.info("New Devices: %s", str(device_diff)) # Current playback state current = self._player.current_playback() if current is None: