2 files + 41 − 14 Side-by-side Compare changes Side-by-side Inline Show whitespace changes Files 2 addon.xml +1 −1 Original line number Original line Diff line number Diff line <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <addon id="script.spotify.screensaver" <addon id="script.spotify.screensaver" name="Spotify Screensaver" name="Spotify Screensaver" version="0.0.11" version="0.0.13" provider-name="Benoît Harrault"> provider-name="Benoît Harrault"> <requires> <requires> <import addon="xbmc.python" version="2.25.0"/> <import addon="xbmc.python" version="2.25.0"/> Loading gui.py +40 −13 Original line number Original line Diff line number Diff line Loading @@ -154,17 +154,18 @@ class GUI(xbmcgui.WindowXMLDialog): self.log('load images for track: ' + track_id) self.log('load images for track: ' + track_id) self.PanelItems = self.getControl(101) self.PanelItems = self.getControl(101) self.PanelItems.reset() self.PanelItems.reset() self.PanelItems.addItems(self._get_track_data(track_id)) self.PanelItems.addItems(self._build_items_list(track_id)) def _remove_images(self): def _remove_images(self): self.log('no played track. remove images') self.log('no played track. remove images') self.PanelItems = self.getControl(101) self.PanelItems = self.getControl(101) self.PanelItems.reset() self.PanelItems.reset() def _get_track_data(self, track_id): def _get_track_data(self, track_id, try_count=1): self.log('track_id: [' + str(track_id) + ']') self.log('track_id: [' + str(track_id) + ']') self.log('(try: ' + str(try_count) + ')') imageLST = [] track_data = {} headers = { headers = { 'Authorization': 'Bearer {token}'.format( 'Authorization': 'Bearer {token}'.format( Loading @@ -179,13 +180,21 @@ class GUI(xbmcgui.WindowXMLDialog): ) ) data = response.json() data = response.json() track_name = data.get('name', '') track_data['track_name'] = data.get('name', '') # album/track image # album/track image album = data.get('album') album = data.get('album') if album is None: if album is None: self.log('failed to get album from API', xbmc.LOGERROR) self.log('failed to get album from API', xbmc.LOGERROR) self.log(json.dumps(data), xbmc.LOGERROR) self.log(json.dumps(data), xbmc.LOGERROR) if json.dumps(data) == '{"error": {"status": 401, "message": "The access token expired"}}': self.log('trying to refresh access token') self._init_spotify_access_token() self.log('retry get image') self._get_track_data(track_id, try_count + 1) else: self.log('unknown error getting image', xbmc.LOGERROR) else: else: self.log('ok got album from API') self.log('ok got album from API') self.log(json.dumps(album)) self.log(json.dumps(album)) Loading @@ -203,19 +212,37 @@ class GUI(xbmcgui.WindowXMLDialog): else: else: self.log('ok got image from API') self.log('ok got image from API') self.log(json.dumps(image)) self.log(json.dumps(image)) image_url = image.get('url') track_image_url = image.get('url') if image_url is None: if track_image_url is None: self.log('failed to get image_url from API', xbmc.LOGERROR) self.log( 'failed to get track_image_url from API', xbmc.LOGERROR) self.log(json.dumps(image), xbmc.LOGERROR) self.log(json.dumps(image), xbmc.LOGERROR) else: else: self.log('ok got image_url from API') self.log('ok got track_image_url from API') self.log(image_url) self.log(track_image_url) track_data['track_image_url'] = track_image_url except Exception as e: self.log('failed to get track data ' + str(e), xbmc.LOGERROR) return track_data def _build_items_list(self, track_id): imageLST = [] track_data = self._get_track_data(track_id) track_name = track_data.get('track_name') track_image_url = track_data.get('track_image_url') if (track_name is None) or (track_image_url is None): self.log('failed to get track data', xbmc.LOGERROR) else: imageLST.append( imageLST.append( xbmcgui.ListItem( xbmcgui.ListItem( track_name, thumbnailImage=image_url) track_name, thumbnailImage=track_image_url ) ) ) except Exception as e: self.log('failed to get track data ' + str(e), xbmc.LOGERROR) return imageLST return imageLST Loading
addon.xml +1 −1 Original line number Original line Diff line number Diff line <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <addon id="script.spotify.screensaver" <addon id="script.spotify.screensaver" name="Spotify Screensaver" name="Spotify Screensaver" version="0.0.11" version="0.0.13" provider-name="Benoît Harrault"> provider-name="Benoît Harrault"> <requires> <requires> <import addon="xbmc.python" version="2.25.0"/> <import addon="xbmc.python" version="2.25.0"/> Loading
gui.py +40 −13 Original line number Original line Diff line number Diff line Loading @@ -154,17 +154,18 @@ class GUI(xbmcgui.WindowXMLDialog): self.log('load images for track: ' + track_id) self.log('load images for track: ' + track_id) self.PanelItems = self.getControl(101) self.PanelItems = self.getControl(101) self.PanelItems.reset() self.PanelItems.reset() self.PanelItems.addItems(self._get_track_data(track_id)) self.PanelItems.addItems(self._build_items_list(track_id)) def _remove_images(self): def _remove_images(self): self.log('no played track. remove images') self.log('no played track. remove images') self.PanelItems = self.getControl(101) self.PanelItems = self.getControl(101) self.PanelItems.reset() self.PanelItems.reset() def _get_track_data(self, track_id): def _get_track_data(self, track_id, try_count=1): self.log('track_id: [' + str(track_id) + ']') self.log('track_id: [' + str(track_id) + ']') self.log('(try: ' + str(try_count) + ')') imageLST = [] track_data = {} headers = { headers = { 'Authorization': 'Bearer {token}'.format( 'Authorization': 'Bearer {token}'.format( Loading @@ -179,13 +180,21 @@ class GUI(xbmcgui.WindowXMLDialog): ) ) data = response.json() data = response.json() track_name = data.get('name', '') track_data['track_name'] = data.get('name', '') # album/track image # album/track image album = data.get('album') album = data.get('album') if album is None: if album is None: self.log('failed to get album from API', xbmc.LOGERROR) self.log('failed to get album from API', xbmc.LOGERROR) self.log(json.dumps(data), xbmc.LOGERROR) self.log(json.dumps(data), xbmc.LOGERROR) if json.dumps(data) == '{"error": {"status": 401, "message": "The access token expired"}}': self.log('trying to refresh access token') self._init_spotify_access_token() self.log('retry get image') self._get_track_data(track_id, try_count + 1) else: self.log('unknown error getting image', xbmc.LOGERROR) else: else: self.log('ok got album from API') self.log('ok got album from API') self.log(json.dumps(album)) self.log(json.dumps(album)) Loading @@ -203,19 +212,37 @@ class GUI(xbmcgui.WindowXMLDialog): else: else: self.log('ok got image from API') self.log('ok got image from API') self.log(json.dumps(image)) self.log(json.dumps(image)) image_url = image.get('url') track_image_url = image.get('url') if image_url is None: if track_image_url is None: self.log('failed to get image_url from API', xbmc.LOGERROR) self.log( 'failed to get track_image_url from API', xbmc.LOGERROR) self.log(json.dumps(image), xbmc.LOGERROR) self.log(json.dumps(image), xbmc.LOGERROR) else: else: self.log('ok got image_url from API') self.log('ok got track_image_url from API') self.log(image_url) self.log(track_image_url) track_data['track_image_url'] = track_image_url except Exception as e: self.log('failed to get track data ' + str(e), xbmc.LOGERROR) return track_data def _build_items_list(self, track_id): imageLST = [] track_data = self._get_track_data(track_id) track_name = track_data.get('track_name') track_image_url = track_data.get('track_image_url') if (track_name is None) or (track_image_url is None): self.log('failed to get track data', xbmc.LOGERROR) else: imageLST.append( imageLST.append( xbmcgui.ListItem( xbmcgui.ListItem( track_name, thumbnailImage=image_url) track_name, thumbnailImage=track_image_url ) ) ) except Exception as e: self.log('failed to get track data ' + str(e), xbmc.LOGERROR) return imageLST return imageLST Loading