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

Target

Select target project
  • kodi/script.spotify.screensaver
1 result
Select Git revision
Show changes
Commits on Source (2)
<?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.10" version="0.0.11"
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"/>
......
...@@ -3,6 +3,7 @@ import random ...@@ -3,6 +3,7 @@ import random
import xbmc import xbmc
import xbmcaddon import xbmcaddon
import xbmcgui import xbmcgui
import json
# Plugin data and configuration # Plugin data and configuration
ADDON_ID = 'script.spotify.screensaver' ADDON_ID = 'script.spotify.screensaver'
...@@ -22,6 +23,9 @@ class GUI(xbmcgui.WindowXMLDialog): ...@@ -22,6 +23,9 @@ class GUI(xbmcgui.WindowXMLDialog):
self.isExiting = False self.isExiting = False
def log(self, msg, level=xbmc.LOGDEBUG): def log(self, msg, level=xbmc.LOGDEBUG):
if self.force_debug:
level = xbmc.LOGERROR
xbmc.log(ADDON_ID + ' - ' + ADDON_VERSION + ' - ' + msg, level) xbmc.log(ADDON_ID + ' - ' + ADDON_VERSION + ' - ' + msg, level)
def onInit(self): def onInit(self):
...@@ -65,6 +69,8 @@ class GUI(xbmcgui.WindowXMLDialog): ...@@ -65,6 +69,8 @@ class GUI(xbmcgui.WindowXMLDialog):
self.spotify_client_secret = SETTINGS.getSetting( self.spotify_client_secret = SETTINGS.getSetting(
'SpotifyClientSecret').decode('utf-8') 'SpotifyClientSecret').decode('utf-8')
self.force_debug = SETTINGS.getSetting('ForceDebug') == 'true'
def _init_spotify_access_token(self): def _init_spotify_access_token(self):
auth_response = requests.post(SPOTIFY_AUTH_URL, { auth_response = requests.post(SPOTIFY_AUTH_URL, {
'grant_type': 'client_credentials', 'grant_type': 'client_credentials',
...@@ -137,27 +143,26 @@ class GUI(xbmcgui.WindowXMLDialog): ...@@ -137,27 +143,26 @@ class GUI(xbmcgui.WindowXMLDialog):
def _unimplemented_event_type(self, event_type, event_value): def _unimplemented_event_type(self, event_type, event_value):
self.log( self.log(
'unimplemented event type: ' + str(event_type) 'unimplemented event type: ' + str(event_type)
+ ' (value: ' + str(event_value) + ')', + ' (value: ' + str(event_value) + ')'
xbmc.LOGDEBUG
) )
def _preload_images(self, track_id): def _preload_images(self, track_id):
self.log('preload images for track: ' + track_id, xbmc.LOGERROR) self.log('preload images for track: ' + track_id)
self._get_track_data(track_id) self._get_track_data(track_id)
def _reload_images(self, track_id): def _reload_images(self, track_id):
self.log('load images for track: ' + track_id, xbmc.LOGERROR) 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._get_track_data(track_id))
def _remove_images(self): def _remove_images(self):
self.log('no played track. remove images', xbmc.LOGERROR) 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):
self.log('track_id: [' + str(track_id) + ']', xbmc.LOGERROR) self.log('track_id: [' + str(track_id) + ']')
imageLST = [] imageLST = []
...@@ -178,13 +183,33 @@ class GUI(xbmcgui.WindowXMLDialog): ...@@ -178,13 +183,33 @@ class GUI(xbmcgui.WindowXMLDialog):
# album/track image # album/track image
album = data.get('album') album = data.get('album')
if album is not None: if album is None:
self.log('failed to get album from API', xbmc.LOGERROR)
self.log(json.dumps(data), xbmc.LOGERROR)
else:
self.log('ok got album from API')
self.log(json.dumps(album))
images = album.get('images') images = album.get('images')
if images is not None: if images is None:
self.log('failed to get images from API', xbmc.LOGERROR)
self.log(json.dumps(album), xbmc.LOGERROR)
else:
self.log('ok got images from API')
self.log(json.dumps(images))
image = images[0] image = images[0]
if image is not None: if image is None:
self.log('failed to get image from API', xbmc.LOGERROR)
self.log(json.dumps(images), xbmc.LOGERROR)
else:
self.log('ok got image from API')
self.log(json.dumps(image))
image_url = image.get('url') image_url = image.get('url')
if image_url is not None: if image_url is None:
self.log('failed to get 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( imageLST.append(
xbmcgui.ListItem( xbmcgui.ListItem(
track_name, thumbnailImage=image_url) track_name, thumbnailImage=image_url)
......
...@@ -35,3 +35,7 @@ msgstr "Spotify Client Id" ...@@ -35,3 +35,7 @@ msgstr "Spotify Client Id"
msgctxt "#32005" msgctxt "#32005"
msgid "SpotifyClientSecret" msgid "SpotifyClientSecret"
msgstr "Spotify Client Secret" msgstr "Spotify Client Secret"
msgctxt "#32006"
msgid "ForceDebug"
msgstr "Force debug"
<?xml version="1.0" encoding="utf-8" standalone="yes"?> <?xml version="1.0" encoding="utf-8" standalone="yes"?>
<settings> <settings>
<setting id="RotateTime" type="enum" label="32001" default="0" values="30s|60s|120s|240s"/> <setting id="RotateTime" type="enum" label="32001" default="0" values="30s|60s|120s|240s"/>
<setting id="Randomize" type="bool" label="32002" default="false"/> <setting id="Randomize" type="bool" label="32002" default="false"/>
<setting id="Animate" type="bool" label="32003" default="false"/> <setting id="Animate" type="bool" label="32003" default="false"/>
<setting id="SpotifyClientId" type="text" label="32004" default="SpotifyClientId"/> <setting id="SpotifyClientId" type="text" label="32004" default="SpotifyClientId"/>
<setting id="SpotifyClientSecret" type="text" label="32005" default="SpotifyClientSecret"/> <setting id="SpotifyClientSecret" type="text" label="32005" default="SpotifyClientSecret"/>
<setting id="ForceDebug" type="bool" label="32006" default="false"/>
</settings> </settings>