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

2 files
+ 41
14
Compare changes
  • Side-by-side
  • Inline

Files

+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"/>
+40 −13
Original line number Original line Diff line number Diff line
@@ -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):
            )
            )
            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,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