Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • master
1 result

Target

Select target project
  • kodi/script.spotify.screensaver
1 result
Select Git revision
  • master
1 result
Show changes
Commits on Source (4)
<?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"/>
......
...@@ -154,17 +154,18 @@ class GUI(xbmcgui.WindowXMLDialog): ...@@ -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(
...@@ -179,13 +180,21 @@ class GUI(xbmcgui.WindowXMLDialog): ...@@ -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))
...@@ -203,20 +212,38 @@ class GUI(xbmcgui.WindowXMLDialog): ...@@ -203,20 +212,38 @@ 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)
imageLST.append( track_data['track_image_url'] = track_image_url
xbmcgui.ListItem(
track_name, thumbnailImage=image_url)
)
except Exception as e: except Exception as e:
self.log('failed to get track data ' + str(e), xbmc.LOGERROR) 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(
xbmcgui.ListItem(
track_name,
thumbnailImage=track_image_url
)
)
return imageLST return imageLST
def onFocus(self, controlId): def onFocus(self, controlId):
......