The branch, eden has been updated
       via  c8b3d8e9b769a4983b53b59fc605f1e3631a04e8 (commit)
      from  6b3867a3e5bb34f76363d535a5711f9f4245d471 (commit)

- Log -----------------------------------------------------------------
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/scripts;a=commit;h=c8b3d8e9b769a4983b53b59fc605f1e3631a04e8

commit c8b3d8e9b769a4983b53b59fc605f1e3631a04e8
Author: ronie <[email protected]>
Date:   Tue Feb 28 21:01:14 2012 +0100

    [script.artistslideshow] -v1.2.0
    
    added ability to use local or remote images

diff --git a/script.artistslideshow/README.txt 
b/script.artistslideshow/README.txt
index c793e7b..aad07f3 100644
--- a/script.artistslideshow/README.txt
+++ b/script.artistslideshow/README.txt
@@ -1,6 +1,57 @@
-
-How to use this addon in your skin:
-
+-----How to use this addon:
+
+You must have a compatible skin (or update your skin using the instructions 
below).
+
+There are three groupings of settings: Download, Slideshow, and Advanced.
+
+Download
+-Download images from last.fm (default true)
+ (self expanitory)
+-Download images from htbackdrops.com (default false)
+ (self expanitory)
+-Minimal image width and height: (default 0,0)
+ any images smaller than the set dimensions will not be downloaded.
+-Download only 16:9 images: (default false)
+ will discard any images that aren't really, really close to a 16:9 aspect 
ratio.
+-Download additional artist info: (default false)
+ includes information like the artist's bio and artists similar to the one to 
which you are
+ listening.  includes option to select download language.  skin must support 
this extra
+ information, or nothing will be displayed.
+
+Slideshow
+-Local artist folder: (default none)
+ path to a directory that has artist images.  Images must be organized in 
artist/extrafanart/
+-Fallback slideshow folder: (default none)
+ path to a directory of images that should be used if no local or remote 
images can be found.
+-Priority: (default remote first)
+ three options: remote first, local first, both
+  remote first will try and download images from remote sites.  if none found 
will use local
+  images. if none found will use fallback slideshow
+  local first will use local images.  if none found will try and download 
remote images. if none
+  found will use fallback slideshow
+  both will check for local images first.  if they exist the downloaded images 
will be placed in
+  the same directory as the local images.  if not remote images will be stored 
in normal cache dir.
+-Override slideshow folder: (default none)
+ path to a directory of images that should be used intead of artist artwork. 
With this set no
+ artwork will ever be downloaded.
+-Refresh slideshow before all downloads complete: (default false)
+ by default the add-on shows the first image downloaded and then doesn't show 
anymore until the
+ all the downloads are done. if set to true, the slideshow will refresh after 
every x seconds
+ instead of after all the images are downloaded.
+-Minimum time between refresh: (default 20)
+ if the above setting is enabled, this allows the user to change the period of 
time between
+ refreshes of the image directory during downloads
+ 
+Advanced
+-Limit size of download cache: (default false)
+ if enabled, the download cache will be trimmed (oldest first) to keep the 
size below the specified
+ minimum
+-Maximum cache size (in megabytes): (default 256)
+ if Limit size of download cache is set to true, this allows the user to 
specify the maximum size
+ of the cache
+
+
+-----How to use this addon in your skin:
 
 In MusicVisualisation.xml:
 
@@ -29,7 +80,6 @@ In MusicVisualisation.xml:
        <randomize>true</randomize>
        <animation effect="fade" start="0" end="100" 
time="300">Visible</animation>
        <animation effect="fade" start="100" end="0" 
time="300">Hidden</animation>
-       
<visible>IsEmpty(Window(Visualisation).Property(ArtistSlideshowRefresh))</visible>
 </control>
 
 
@@ -40,26 +90,25 @@ this will keep the script running all the time.
 
 The script provides these properties to the skin:
 
-- Window(Visualisation).Property(ArtistSlideshow)
-This is the path to the directory containing the downloaded images for the 
currently playing artist
-
-- Window(Visualisation).Property(ArtistSlideshowRefresh)
-This can be used to fade out/fade in the slideshow when the path is refreshed.
-The path will refresh after all images for a certain artist have been 
downloaded.
-This is needed since xbmc will not automatically pick up any new images after 
the multiimage control has been loaded.
+Window(Visualisation).Property(ArtistSlideshow)
+ This is the path to the directory containing the downloaded images for the 
currently playing
+ artist
 
-- Window(Visualisation).Property(ArtistSlideshowRunning)
-This one is used internally by the script to check if it is already running.
-There's no need to use this property in your skin.
+Window(Visualisation).Property(ArtistSlideshowRefresh)
+ DEPRECIATED.  No longer needed as of version 1.2
+ There is no harm if you leave it in the skin, but you should remove it when 
you have a chance.
 
-- Window(Visualisation).Property(ArtistSlideshow.ArtistBiography)
-Artist biography from last.fm
+Window(Visualisation).Property(ArtistSlideshowRunning)
+ This one is used internally by the script to check if it is already running.
+ There's no need to use this property in your skin.
 
-- Window(Visualisation).Property(ArtistSlideshow.%d.SimilarName)
-- Window(Visualisation).Property(ArtistSlideshow.%d.SimilarThumb)
-Similar artists
+Window(Visualisation).Property(ArtistSlideshow.ArtistBiography)
+ Artist biography from last.fm
 
-- Window(Visualisation).Property(ArtistSlideshow.%d.AlbumName)
-- Window(Visualisation).Property(ArtistSlideshow.%d.AlbumThumb)
-Albums by the artist
+Window(Visualisation).Property(ArtistSlideshow.%d.SimilarName)
+Window(Visualisation).Property(ArtistSlideshow.%d.SimilarThumb)
+ Similar artists
 
+Window(Visualisation).Property(ArtistSlideshow.%d.AlbumName)
+Window(Visualisation).Property(ArtistSlideshow.%d.AlbumThumb)
+ Albums by the artist
\ No newline at end of file
diff --git a/script.artistslideshow/addon.xml b/script.artistslideshow/addon.xml
index 97232fc..1097af9 100644
--- a/script.artistslideshow/addon.xml
+++ b/script.artistslideshow/addon.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<addon id="script.artistslideshow" name="Artist Slideshow" version="1.1.5" 
provider-name="ronie">
+<addon id="script.artistslideshow" name="Artist Slideshow" version="1.2.0" 
provider-name="ronie/kyleejohnson (pkscuot)">
        <requires>
                <import addon="xbmc.python" version="2.0"/>
                <import addon="script.module.elementtree" version="1.2.7"/>
@@ -9,7 +9,7 @@
        </extension>
        <extension point="xbmc.addon.metadata">
                <summary>Download images and additional info of the currently 
playing artist</summary>
-               <description>Addon to download images and additional 
information from Last.FM and htbackdrops.com of the currently playing artist. 
The images and info can be used by the skin to create a slideshow for the 
artist being listened to.</description>
+               <description>Addon to download images and additional 
information from Last.FM and htbackdrops.com of the currently playing artist. 
The images, along with local artists' images, and info can be used by the skin 
to create a slideshow for the artist being listened to.</description>
                <platform>all</platform>
        </extension>
 </addon>
diff --git a/script.artistslideshow/changelog.txt 
b/script.artistslideshow/changelog.txt
index 24f2016..273ae7a 100644
--- a/script.artistslideshow/changelog.txt
+++ b/script.artistslideshow/changelog.txt
@@ -1,3 +1,13 @@
+v1.2.0
+- added ability to use local or remote images
+- added priority image control to use local first, remote first, or both
+- added option to restrict downloads to 16:9 images
+- added option to have slideshow refresh after every image download or after x 
seconds
+- added option for override folder that will be showed instead of artists 
images
+- updated logic to refresh images after all are downloaded
+- fixed potential script crash if remote sites unavailable
+- experimental support for limiting size of cache folder
+
 v1.1.5
 - blank window property a little longer
 
diff --git a/script.artistslideshow/default.py 
b/script.artistslideshow/default.py
index f0568e0..5e87d4c 100644
--- a/script.artistslideshow/default.py
+++ b/script.artistslideshow/default.py
@@ -9,13 +9,14 @@
 # *  Last.fm:      http://www.last.fm/
 # *  htbackdrops:  http://www.htbackdrops.com/
 
-import urllib, re, os, sys, time, unicodedata, socket
+import urllib, re, os, sys, time, unicodedata, socket, shutil
 import xbmc, xbmcgui, xbmcaddon, xbmcvfs
 from elementtree import ElementTree as xmltree
 
 __addon__        = xbmcaddon.Addon()
 __addonname__    = __addon__.getAddonInfo('id')
 __addonversion__ = __addon__.getAddonInfo('version')
+__addonpath__    = __addon__.getAddonInfo('path')
 
 socket.setdefaulttimeout(10)
 
@@ -112,27 +113,33 @@ class Main:
         if xbmc.getInfoLabel( "Window(12006).Property(ArtistSlideshowRunning)" 
) == "True":
             log('script already running')
         else:
+            self.LastCacheTrim = 0
             self.WINDOW.setProperty("ArtistSlideshowRunning", "True")
             if xbmc.Player().isPlayingAudio() == False:
                 log('no music playing')
                 if self.DAEMON == "False":
                     self.WINDOW.clearProperty("ArtistSlideshowRunning")
+            elif(not self.OVERRIDEPATH == ''):
+                self.WINDOW.setProperty("ArtistSlideshow", self.OVERRIDEPATH)
             else:
                 log('first song started')
                 time.sleep(0.2) # it may take some time for xbmc to read tag 
info after playback started
-                self._start_download()
-            while (not xbmc.abortRequested):
+                self._use_correct_artwork()
+                self._trim_cache()
+            while (not xbmc.abortRequested and self.OVERRIDEPATH == ''):
                 time.sleep(0.5)
                 if xbmc.getInfoLabel( 
"Window(12006).Property(ArtistSlideshowRunning)" ) == "True":
                     if xbmc.Player().isPlayingAudio() == True:
                         currentname = 
xbmc.Player().getMusicInfoTag().getArtist()
                         if self.NAME != currentname:
-                            log('new artist playing, start download')
                             self._clear_properties()
-                            self._start_download()
-                        elif not self.DownloadedAllImages:
-                            log('same artist playing, continue download')
-                            self._start_download()
+                            self.UsingFallback = False
+                            self._use_correct_artwork()
+                            self._trim_cache()
+                        elif(not (self.DownloadedAllImages or 
self.UsingFallback)):
+                            if(not (self.LocalImagesFound and self.PRIORITY == 
'1')):
+                                log('same artist playing, continue download')
+                                self._use_correct_artwork()
                     else:
                         time.sleep(1) # doublecheck if playback really stopped
                         if xbmc.Player().isPlayingAudio() == False:
@@ -142,7 +149,34 @@ class Main:
                     self._clear_properties()
                     break
 
-      
+
+    def _use_correct_artwork( self ):
+        if(self.PRIORITY == '1' and not self.LOCALARTISTPATH == ''):
+            log('looking for local artwork')
+            self._get_local_images()
+            if(not self.LocalImagesFound):
+                log('no local artist artwork found, start download')
+                self._start_download()
+        elif(self.PRIORITY == '2' and not self.LOCALARTISTPATH == ''):
+            log('looking for local artwork')
+            self._get_local_images()
+            log('start download')
+            self._start_download()
+        else:
+            log('start download')
+            self._start_download()
+            if(not (self.CachedImagesFound or self.ImageDownloaded)):
+                log('no remote artist artwork found, looking for local 
artwork')
+                self._get_local_images()
+        
+        if(not (self.LocalImagesFound or self.CachedImagesFound or 
self.ImageDownloaded)):
+            if (not self.FALLBACKPATH == ''):
+                log('no images found for artist, using fallback slideshow')
+                log('fallbackdir = ' +self.FALLBACKPATH)
+                self.UsingFallback = True
+                self.WINDOW.setProperty("ArtistSlideshow", self.FALLBACKPATH)  
                          
+
+
     def _parse_argv( self ):
         try:
             params = dict( arg.split( "=" ) for arg in sys.argv[ 1 ].split( 
"&" ) )
@@ -154,6 +188,8 @@ class Main:
 
 
     def _get_settings( self ):
+        self.LASTFM = __addon__.getSetting( "lastfm" )
+        self.HTBACKDROPS = __addon__.getSetting( "htbackdrops" )
         try:
             self.minwidth = int(__addon__.getSetting( "minwidth" ))
         except:
@@ -162,8 +198,7 @@ class Main:
             self.minheight = int(__addon__.getSetting( "minheight" ))
         except:
             self.minheight = 0
-        self.LASTFM = __addon__.getSetting( "lastfm" )
-        self.HTBACKDROPS = __addon__.getSetting( "htbackdrops" )
+        self.HDASPECTONLY = __addon__.getSetting( "hd_aspect_only" )
         self.ARTISTINFO = __addon__.getSetting( "artistinfo" )
         self.LANGUAGE = __addon__.getSetting( "language" )
         for language in LANGUAGES:
@@ -171,10 +206,31 @@ class Main:
                 self.LANGUAGE = language[1]
                 log('language = %s' % self.LANGUAGE)
                 break
+        self.LOCALARTISTPATH = __addon__.getSetting( "local_artist_path" )
+        self.PRIORITY = __addon__.getSetting( "priority" )
+        self.FALLBACKPATH = __addon__.getSetting( "fallback_path" )
+        self.OVERRIDEPATH = __addon__.getSetting( "slideshow_path" )
+        self.REFRESHEVERYIMAGE = __addon__.getSetting( "refresh_every_image" )
+        try:
+            self.minrefresh = int(__addon__.getSetting( "min_refresh" ))
+        except:
+            self.minrefresh = 20
+        self.RESTRICTCACHE = __addon__.getSetting( "restrict_cache" )
+        try:
+            self.maxcachesize = int(__addon__.getSetting( "max_cache_size" )) 
* 1000000
+        except:
+            self.maxcachesize = 1024 * 1000000
+
 
     def _init_vars( self ):
         self.WINDOW = xbmcgui.Window( 12006 )
         self.NAME = ''
+        self.LocalImagesFound = False
+        self.CachedImagesFound = False
+        self.ImageDownloaded = False
+        self.DownloadedAllImages = False
+        self.UsingFallback = False
+        self.BlankDir = xbmc.translatePath('%s/resources/blank/' % ( 
__addonpath__ ))
         LastfmApiKey = 'fbd57a1baddb983d1848a939665310f6'
         HtbackdropsApiKey = '96d681ea0dcb07ad9d27a347e64b652a'
         self.LastfmURL = 
'http://ws.audioscrobbler.com/2.0/?autocorrect=1&api_key=' + LastfmApiKey
@@ -193,15 +249,42 @@ class Main:
         self.DownloadedFirstImage = False
         self.DownloadedAllImages = False
         self.ImageDownloaded = False
-        self.NAME = xbmc.Player().getMusicInfoTag().getArtist()
+        try:
+            self.NAME = xbmc.Player().getMusicInfoTag().getArtist()
+        except:
+            return
         if len(self.NAME) == 0:
             log('no artist name provided')
             return
-        CacheName = xbmc.getCacheThumbName(self.NAME).replace('.tbn', '')
-        self.CacheDir = 
xbmc.translatePath('special://profile/addon_data/%s/ArtistSlideshow/%s/' % ( 
__addonname__ , CacheName, ))
-        checkDir(self.CacheDir)
+        if(self.PRIORITY == '2' and self.LocalImagesFound):
+            pass
+            #self.CacheDir was successfully set in _get_local_images
+        else:
+            CacheName = xbmc.getCacheThumbName(self.NAME).replace('.tbn', '')
+            self.CacheDir = 
xbmc.translatePath('special://profile/addon_data/%s/ArtistSlideshow/%s/' % ( 
__addonname__ , CacheName, ))
+            checkDir(self.CacheDir)
         log('cachedir = %s' % self.CacheDir)
-        files = os.listdir(self.CacheDir)
+
+        success = False
+        attempts = 0
+        while( not success ):
+            if( self._playback_stopped_or_changed() ):
+                    return
+            try:
+                files = os.listdir(self.CacheDir)
+            except OSError as (errno, strerror):
+                if( errno == 2 or errno == 3):
+                    checkDir( self.CacheDir )
+                else:
+                    log( 'error: %s %s' % (errno, strerror) )
+                    time.sleep(10)
+                success = False
+                attempts = attmepts + 1
+                if( attempts > 3 ):
+                    return
+            else:
+                success = True
+                
         for file in files:
             if file.endswith('tbn'):
                 self.CachedImagesFound = True
@@ -225,46 +308,133 @@ class Main:
         lastfmlist.extend(htbackdropslist)
         log('downloading images')
         for url in lastfmlist:
-            if xbmc.Player().isPlayingAudio() == True:
-                currentname = xbmc.Player().getMusicInfoTag().getArtist()
-                if self.NAME != currentname:
-                    return
-            else:
+            if( self._playback_stopped_or_changed() ):
                 return
-
             path = getCacheThumbName(url, self.CacheDir)
             if not xbmcvfs.exists(path):
-                download(url, path)
-                log('downloaded %s to %s' % (url, path) )
-                self.ImageDownloaded=True
+                try:
+                    download(url, path)
+                except:
+                    log ('site unreachable')
+                else:
+                    log('downloaded %s to %s' % (url, path) )
+                    self.ImageDownloaded=True
             if self.ImageDownloaded:
                 if not self.DownloadedFirstImage:
                     log('downloaded first image')
                     self.DownloadedFirstImage = True
+                    last_time = 0
                     if not self.CachedImagesFound:
                         self.WINDOW.setProperty("ArtistSlideshow", 
self.CacheDir)
                         if self.ARTISTINFO == "true":
                             self._get_artistinfo()
-
+                elif(self.REFRESHEVERYIMAGE == 'true' and (time.time() - 
last_time > self.minrefresh)):
+                    self._refresh_image_directory()
+                    last_time = time.time()
+                    
         if self.ImageDownloaded:
             log('finished downloading images')
             self.DownloadedAllImages = True
-            self.WINDOW.setProperty("ArtistSlideshowRefresh", "True")
-            time.sleep(0.3)
-            self.WINDOW.clearProperty("ArtistSlideshow")
-            time.sleep(1)
-            self.WINDOW.setProperty("ArtistSlideshow", self.CacheDir)
-            self.WINDOW.clearProperty("ArtistSlideshowRefresh")
+            self._refresh_image_directory()
 
         if not self.ImageDownloaded:
             log('no images downloaded')
             self.DownloadedAllImages = True
             if not self.CachedImagesFound:
+                log('clearing ArtistSlideshow property')
                 self.WINDOW.clearProperty("ArtistSlideshow")
                 if self.ARTISTINFO == "true":
                     self._get_artistinfo()
 
 
+    def _refresh_image_directory( self ):
+        self.WINDOW.setProperty("ArtistSlideshow", self.BlankDir)
+        time.sleep(2)
+        self.WINDOW.setProperty("ArtistSlideshow", self.CacheDir)
+
+
+    def _playback_stopped_or_changed( self ):
+        if xbmc.Player().isPlayingAudio() == True:
+            currentname = xbmc.Player().getMusicInfoTag().getArtist()
+            if self.NAME != currentname:
+                return True
+        else:
+            return True
+
+
+    def _get_local_images( self ):
+        self.LocalImagesFound = False
+        try:
+            self.NAME = xbmc.Player().getMusicInfoTag().getArtist()
+        except:
+            return
+        if len(self.NAME) == 0:
+            log('no artist name provided')
+            return
+        self.CacheDir = self.LOCALARTISTPATH + self.NAME + '/extrafanart'
+        log('cachedir = %s' % self.CacheDir)
+        try:
+            files = os.listdir(self.CacheDir)
+        except OSError:
+            files = []
+        for file in files:
+            if(file.endswith('tbn') or file.endswith('jpg') or 
file.endswith('jpeg') or file.endswith('gif') or file.endswith('png')):
+                self.LocalImagesFound = True
+
+        if self.LocalImagesFound:
+            log('local images found')
+            self.WINDOW.setProperty("ArtistSlideshow", self.CacheDir)
+            if self.ARTISTINFO == "true":
+                self._get_artistinfo()
+
+
+    def _trim_cache( self ):
+        if( self.RESTRICTCACHE == 'true' and not self.PRIORITY == '2' ):
+            now = time.time()
+            cache_trim_delay = 0   #delay time is in seconds
+            if( now - self.LastCacheTrim > cache_trim_delay ):
+                log(' trimming the cache down to %s bytes' % self.maxcachesize 
)
+                cache_root = xbmc.translatePath( 
'special://profile/addon_data/%s/ArtistSlideshow/' % __addonname__ )
+                os.chdir( cache_root )
+                folders = os.listdir( cache_root )
+
+                success = False
+                while( not success ):
+                    if( self._playback_stopped_or_changed() ):
+                        return
+                    try:
+                        folders.sort( key=lambda x: os.path.getmtime(x), 
reverse=True )
+                    except OSerror:
+                        time.sleep(10)
+                        success = False
+                    else:
+                        success = True                    
+
+                cache_size = 0
+                first_folder = True
+                for folder in folders:
+                    cache_size = cache_size + self._get_folder_size( 
cache_root + folder )
+                    log( 'looking at folder %s cache size is now %s' % 
(folder, cache_size) )
+                    if( cache_size > self.maxcachesize and not first_folder ):
+                        log( 'attempting to delete folder %s' % folder )
+                        try:
+                            shutil.rmtree( cache_root + folder, True )
+                            log( '%s successfully deleted' % folder )
+                        except:
+                            log( '%s was not deleted due to an error' % folder 
)                            
+                    first_folder = False
+                self.LastCacheTrim = now
+
+
+    def _get_folder_size( self, start_path ):
+        total_size = 0
+        for dirpath, dirnames, filenames in os.walk( start_path ):
+            for f in filenames:
+                fp = os.path.join( dirpath, f )
+                total_size += os.path.getsize( fp )
+        return total_size
+
+
     def _get_images( self, site ):
         if site == "lastfm":
             self.info = 'artist.getImages'
@@ -332,7 +502,12 @@ class Main:
                             width = element.attrib.get('width')
                             height = element.attrib.get('height')
                             if ( int(width) >= self.minwidth ) and ( 
int(height) >= self.minheight ):
-                                data.append(element.text)
+                                if(self.HDASPECTONLY == 'true'):
+                                    aspect_ratio = int(width)/int(height)
+                                    if(aspect_ratio > 1.770 and aspect_ratio < 
1.787):
+                                        data.append(element.text)
+                                else:
+                                    data.append(element.text)
                 elif site == "htbackdrops":
                     if element.tag == "id":
                         data.append(self.HtbackdropsDownloadURL + str( 
element.text ) + '/fullsize')
@@ -387,7 +562,6 @@ class Main:
     def _clear_properties( self ):
         if not xbmc.getInfoLabel( 
"Window(12006).Property(ArtistSlideshowRunning)" ) == "True":
             self.WINDOW.clearProperty("ArtistSlideshow")
-            self.WINDOW.clearProperty("ArtistSlideshowRefresh")
         self.WINDOW.clearProperty( "ArtistSlideshow.ArtistBiography" )
         for count in range( 50 ):
             self.WINDOW.clearProperty( "ArtistSlideshow.%d.SimilarName" % ( 
count ) )
diff --git a/script.artistslideshow/resources/language/English/strings.xml 
b/script.artistslideshow/resources/language/English/strings.xml
index e4a8ffa..8ebe5d5 100644
--- a/script.artistslideshow/resources/language/English/strings.xml
+++ b/script.artistslideshow/resources/language/English/strings.xml
@@ -46,11 +46,25 @@
     <string id="30246">Vietnamese</string>
     <string id="30247">Farsi</string>
   <!-- Settings  --> 
-    <string id="32000">General</string>
+    <string id="32000">Download</string>
     <string id="32001">Download images from last.fm</string>
     <string id="32002">Download images from htbackdrops.com</string>
     <string id="32003">Minimal image width</string>
     <string id="32004">Minimal image height</string>
     <string id="32005">Download additional artist information</string>
-    <string id="32006">Preferred language for artist information</string>
+    <string id="32006">  Preferred language for artist information</string>
+    <string id="32007">Download only 16:9 images</string>
+    <string id="32100">Slideshow</string>
+    <string id="32101">Local artist folder</string>
+    <string id="32102">  Image Priority</string>
+    <string id="32103">Fallback slideshow folder</string>
+    <string id="32104">Override slideshow folder</string>
+    <string id="32105">Refresh slideshow before all downloads complete</string>
+    <string id="32106">  Minimum time between refresh (in seconds)</string>    
+    <string id="32901">Use remote images first</string>
+    <string id="32902">Use local images first</string>
+    <string id="32903">Use both local and remote images</string>
+    <string id="32200">Advanced</string>
+    <string id="32201">Limit size of download cache</string>
+    <string id="32202">  Maximum cache size (in megabytes)</string>
 </strings>
diff --git a/script.artistslideshow/resources/settings.xml 
b/script.artistslideshow/resources/settings.xml
index 476f0c5..a9d9f96 100644
--- a/script.artistslideshow/resources/settings.xml
+++ b/script.artistslideshow/resources/settings.xml
@@ -1,11 +1,25 @@
 <?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <settings>
-    <category label="30100">
+    <category label="32000">
         <setting id="lastfm" type="bool" label="32001" default="true"/>
         <setting id="htbackdrops" type="bool" label="32002" default="false"/>
         <setting id="minwidth" type="text" label="32003" default="0"/>
         <setting id="minheight" type="text" label="32004" default="0"/>
+        <setting id="hd_aspect_only" type="bool" label="32007" 
default="false"/>
         <setting id="artistinfo" type="bool" label="32005" default="false"/>
         <setting id="language" type="enum" label="32006" enable="eq(-1,true)" 
default="11" 
lvalues="30201|30202|30203|30204|30205|30206|30207|30208|30209|30210|30211|30212|30213|30247|30214|30215|30216|30217|30218|30219|30220|30221|30222|30224|30225|30226|30227|30228|30229|30230|30232|30233|30234|30235|30236|30237|30238|30239|30240|30242|30243|30244|30245|30246"/>
     </category>
+    <category label="32100">
+        <setting id="local_artist_path" type="folder" label="32101" 
default=""/>
+        <setting id="priority" type="enum" label="32102" 
lvalues="32901|32902|32903" default="0"/>
+        <setting id="fallback_path" type="folder" label="32103" default=""/>
+        <setting id="slideshow_path" type="folder" label="32104" default=""/>
+        <setting type="sep" />
+        <setting id="refresh_every_image" type="bool" label="32105" 
default="false"/>
+        <setting id="min_refresh" type="text" label="32106" 
enable="eq(-1,true)" default="20" />
+    </category>
+    <category label="32200">
+        <setting id="restrict_cache" type="bool" label="32201" default="false" 
/>
+        <setting id="max_cache_size" label="32202" type="labelenum" 
values="256|512|768|1024|2048|3072|4096" enable="eq(-1,true)" default="1024" />
+    </category>
 </settings>

-----------------------------------------------------------------------

Summary of changes:
 script.artistslideshow/README.txt                  |   93 ++++++--
 script.artistslideshow/addon.xml                   |    4 +-
 script.artistslideshow/changelog.txt               |   10 +
 script.artistslideshow/default.py                  |  242 +++++++++++++++++---
 .../resources/blank/black-16x9.jpg                 |  Bin 0 -> 3196 bytes
 .../resources/language/English/strings.xml         |   18 ++-
 script.artistslideshow/resources/settings.xml      |   16 ++-
 7 files changed, 322 insertions(+), 61 deletions(-)
 create mode 100644 script.artistslideshow/resources/blank/black-16x9.jpg


hooks/post-receive
-- 
Scripts

------------------------------------------------------------------------------
Keep Your Developer Skills Current with LearnDevNow!
The most comprehensive online learning library for Microsoft developers
is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
Metro Style Apps, more. Free future releases when you subscribe now!
http://p.sf.net/sfu/learndevnow-d2d
_______________________________________________
Xbmc-addons mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xbmc-addons

Reply via email to