From 08169b72a505d9acaa82aae42e6ae646d2fe9d29 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Beno=C3=AEt=20Harrault?= <benoit@harrault.fr>
Date: Thu, 5 May 2022 10:28:06 +0200
Subject: [PATCH] Refresh Spotify access token if expired

---
 addon.xml |  2 +-
 gui.py    | 11 ++++++++++-
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/addon.xml b/addon.xml
index 2a5464f..c2cf515 100644
--- a/addon.xml
+++ b/addon.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <addon id="script.spotify.screensaver"
     name="Spotify Screensaver"
-    version="0.0.11"
+    version="0.0.12"
     provider-name="Benoît Harrault">
     <requires>
         <import addon="xbmc.python" version="2.25.0"/>
diff --git a/gui.py b/gui.py
index 8c4d591..ca0fc98 100644
--- a/gui.py
+++ b/gui.py
@@ -161,8 +161,9 @@ class GUI(xbmcgui.WindowXMLDialog):
         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 = []
 
@@ -186,6 +187,14 @@ class GUI(xbmcgui.WindowXMLDialog):
             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))
-- 
GitLab