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

Target

Select target project
  • kodi/script.spotify.screensaver
1 result
Show changes
Commits on Source (4)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="script.spotify.screensaver"
name="Spotify Screensaver"
version="0.0.11"
version="0.0.13"
provider-name="Benoît Harrault">
<requires>
<import addon="xbmc.python" version="2.25.0"/>
......
......@@ -154,17 +154,18 @@ class GUI(xbmcgui.WindowXMLDialog):
self.log('load images for track: ' + track_id)
self.PanelItems = self.getControl(101)
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):
self.log('no played track. remove images')
self.PanelItems = self.getControl(101)
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('(try: ' + str(try_count) + ')')
imageLST = []
track_data = {}
headers = {
'Authorization': 'Bearer {token}'.format(
......@@ -179,13 +180,21 @@ class GUI(xbmcgui.WindowXMLDialog):
)
data = response.json()
track_name = data.get('name', '')
track_data['track_name'] = data.get('name', '')
# album/track image
album = data.get('album')
if album is None:
self.log('failed to get album from API', 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:
self.log('ok got album from API')
self.log(json.dumps(album))
......@@ -203,20 +212,38 @@ class GUI(xbmcgui.WindowXMLDialog):
else:
self.log('ok got image from API')
self.log(json.dumps(image))
image_url = image.get('url')
if image_url is None:
self.log('failed to get image_url from API', xbmc.LOGERROR)
track_image_url = image.get('url')
if track_image_url is None:
self.log(
'failed to get track_image_url from API',
xbmc.LOGERROR)
self.log(json.dumps(image), xbmc.LOGERROR)
else:
self.log('ok got image_url from API')
self.log(image_url)
imageLST.append(
xbmcgui.ListItem(
track_name, thumbnailImage=image_url)
)
self.log('ok got track_image_url from API')
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(
xbmcgui.ListItem(
track_name,
thumbnailImage=track_image_url
)
)
return imageLST
def onFocus(self, controlId):
......