The branch, eden has been updated
       via  c16d0e6761ef2cbeea56698e8675886bd4c3da0b (commit)
      from  2c1281ce9429562be2ba0510e6887bd4003c8933 (commit)

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

commit c16d0e6761ef2cbeea56698e8675886bd4c3da0b
Author: ronie <[email protected]>
Date:   Tue Mar 20 17:58:29 2012 +0100

    [script.artworkorganizer] -v0.1.8
    
    use title instead of label

diff --git a/script.artworkorganizer/addon.xml 
b/script.artworkorganizer/addon.xml
index 005a28d..c8cbd97 100644
--- a/script.artworkorganizer/addon.xml
+++ b/script.artworkorganizer/addon.xml
@@ -1,7 +1,8 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<addon id="script.artworkorganizer" name="Artwork Organizer" version="0.1.4" 
provider-name="ronie">
+<addon id="script.artworkorganizer" name="Artwork Organizer" version="0.1.8" 
provider-name="ronie">
        <requires>
                <import addon="xbmc.python" version="2.0"/>
+               <import addon="script.module.simplejson" version="2.0.10"/>
        </requires>
        <extension point="xbmc.python.script" library="default.py">
                <provides>executable</provides>
diff --git a/script.artworkorganizer/changelog.txt 
b/script.artworkorganizer/changelog.txt
index 0896da2..3821e2b 100644
--- a/script.artworkorganizer/changelog.txt
+++ b/script.artworkorganizer/changelog.txt
@@ -1,3 +1,15 @@
+v0.1.8
+- use title instead of label
+
+v0.1.7
+- use json if python 2.7 is available
+
+v0.1.6
+- use simplejson
+
+v0.1.5
+- ignore possible encoding errors
+
 v0.1.4
 - show correct labels in dialog
 
diff --git a/script.artworkorganizer/default.py 
b/script.artworkorganizer/default.py
index 7280da5..50aa85f 100644
--- a/script.artworkorganizer/default.py
+++ b/script.artworkorganizer/default.py
@@ -1,5 +1,9 @@
 import os, shutil, re, unicodedata
 import xbmc, xbmcgui, xbmcaddon, xbmcvfs
+if sys.version_info < (2, 7):
+    import simplejson
+else:
+    import json as simplejson
 
 __addon__ = xbmcaddon.Addon()
 __addonid__ = __addon__.getAddonInfo('id')
@@ -7,19 +11,16 @@ __addonname__ = __addon__.getAddonInfo('name')
 __addonversion__ = __addon__.getAddonInfo('version')
 __language__ = __addon__.getLocalizedString
 
-
 def log(txt):
-    message = 'script.artworkorganizer: %s' % txt
+    message = '%s: %s' % (__addonid__, txt)
     xbmc.log(msg=message, level=xbmc.LOGDEBUG)
 
-
 def clean_filename(filename):
     illegal_char = '^<>:"/\|?*'
     for char in illegal_char:
         filename = filename.replace( char , '' )
     return filename
 
-
 class Main:
     def __init__ ( self ):
         self._load_settings()
@@ -29,7 +30,6 @@ class Main:
         if self.directoriescreated == 'true':
             self._copy_artwork()
 
-
     def _load_settings( self ):
         self.moviefanart = __addon__.getSetting( "moviefanart" )
         self.tvshowfanart = __addon__.getSetting( "tvshowfanart" )
@@ -44,7 +44,6 @@ class Main:
         self.albumthumbs = __addon__.getSetting( "albumthumbs" )
         self.directory = __addon__.getSetting( "directory" )
 
-
     def _init_variables( self ):
         self.moviefanartdir = 'MovieFanart'
         self.tvshowfanartdir = 'TVShowFanart'
@@ -96,7 +95,6 @@ class Main:
             self.albumthumbspath = os.path.join( self.directory, 
self.albumthumbsdir )
             self.artworklist.append( self.albumthumbspath )
 
-
     def _delete_directories( self ):
         for path in self.artworklist:
             if xbmcvfs.exists( path ):
@@ -105,7 +103,6 @@ class Main:
                 except:
                     pass
 
-
     def _create_directories( self ):
         if not xbmcvfs.exists( self.directory ):
             try:
@@ -120,7 +117,6 @@ class Main:
                 self.directoriescreated = 'false'
                 log( 'failed to create directories' )
 
-
     def _copy_artwork( self ):
         self.dialog.create( __addonname__ )
         self.dialog.update(0)
@@ -159,32 +155,23 @@ class Main:
                 self._copy_albumthumbs()
         self.dialog.close()
 
-
     def _copy_moviefanart( self ):
         count = 0
         processeditems = 0
-        json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": 
"VideoLibrary.GetMovies", "params": {"properties": ["fanart", "year"] }, "id": 
1}')
-        json_response = re.compile( "{(.*?)}", re.DOTALL ).findall(json_query)
+        json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": 
"VideoLibrary.GetMovies", "params": {"properties": ["title", "fanart", "year"] 
}, "id": 1}')
+        json_query = unicode(json_query, 'utf-8', errors='ignore')
+        json_response = simplejson.loads(json_query)
         totalitems = len( json_response )
-        for item in json_response:
-            if self.dialog.iscanceled():
-                log('script cancelled')
-                return
-            processeditems = processeditems + 1
-            self.dialog.update( int( float( processeditems ) / float( 
totalitems ) * 100), __language__(32001) + ': ' + str( count + 1 ) )
-            findname = re.search( '"label": ?"(.*?)",["\n]', item )
-            if findname:
-                name = (findname.group(1))
-            else:
-                continue
-            findyear = re.search( '"year": ?(.*)', item )
-            if findyear:
-                year = (findyear.group(1))
-            else:
-                year = ""
-            findartwork = re.search( '"fanart": ?"(.*?)",["\n]', item )
-            if findartwork:
-                artwork = (findartwork.group(1))[:-4]
+        if json_response['result'].has_key('movies'):
+            for item in json_response['result']['movies']:
+                if self.dialog.iscanceled():
+                    log('script cancelled')
+                    return
+                processeditems = processeditems + 1
+                self.dialog.update( int( float( processeditems ) / float( 
totalitems ) * 100), __language__(32001) + ': ' + str( count + 1 ) )
+                name = item['title']
+                year = str(item['year'])
+                artwork = item['fanart'][:-4]
                 tmp_filename = name + ' (' + year + ')'
                 filename = clean_filename( tmp_filename )
                 for ext in (".dds", ".tbn"):
@@ -198,27 +185,22 @@ class Main:
                             log( 'failed to copy moviefanart' )
         log( 'moviefanart copied: %s' % count )
 
-
     def _copy_tvshowfanart( self ):
         count = 0
         processeditems = 0
-        json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": 
"VideoLibrary.GetTVShows", "params": {"properties": ["fanart"] }, "id": 1}')
-        json_response = re.compile( "{(.*?)}", re.DOTALL ).findall(json_query)
+        json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": 
"VideoLibrary.GetTVShows", "params": {"properties": ["title", "fanart"] }, 
"id": 1}')
+        json_query = unicode(json_query, 'utf-8', errors='ignore')
+        json_response = simplejson.loads(json_query)
         totalitems = len( json_response )
-        for item in json_response:
-            if self.dialog.iscanceled():
-                log('script cancelled')
-                return
-            processeditems = processeditems + 1
-            self.dialog.update( int( float( processeditems ) / float( 
totalitems ) * 100), __language__(32002) + ': ' + str( count + 1 ) )
-            findname = re.search( '"label": ?"(.*?)",["\n]', item )
-            if findname:
-                name = (findname.group(1))
-            else:
-                continue
-            findartwork = re.search( '"fanart": ?"(.*?)",["\n]', item )
-            if findartwork:
-                artwork = (findartwork.group(1))[:-4]
+        if json_response['result'].has_key('tvshows'):
+            for item in json_response['result']['tvshows']:
+                if self.dialog.iscanceled():
+                    log('script cancelled')
+                    return
+                processeditems = processeditems + 1
+                self.dialog.update( int( float( processeditems ) / float( 
totalitems ) * 100), __language__(32002) + ': ' + str( count + 1 ) )
+                name = item['title']
+                artwork = item['fanart'][:-4]
                 tmp_filename = name
                 filename = clean_filename( tmp_filename )
                 for ext in (".dds", ".tbn"):
@@ -232,32 +214,23 @@ class Main:
                             log( 'failed to copy tvshowfanart' )
         log( 'tvshowfanart copied: %s' % count )
 
-
     def _copy_musicvideofanart( self ):
         count = 0
         processeditems = 0
-        json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": 
"VideoLibrary.GetMusicVideos", "params": {"properties": ["fanart", "artist"] }, 
"id": 1}')
-        json_response = re.compile( "{(.*?)}", re.DOTALL ).findall(json_query)
+        json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": 
"VideoLibrary.GetMusicVideos", "params": {"properties": ["title", "fanart", 
"artist"] }, "id": 1}')
+        json_query = unicode(json_query, 'utf-8', errors='ignore')
+        json_response = simplejson.loads(json_query)
         totalitems = len( json_response )
-        for item in json_response:
-            if self.dialog.iscanceled():
-                log('script cancelled')
-                return
-            processeditems = processeditems + 1
-            self.dialog.update( int( float( processeditems ) / float( 
totalitems ) * 100), __language__(32003) + ': ' + str( count + 1 ) )
-            findname = re.search( '"label": ?"(.*?)",["\n]', item )
-            if findname:
-                name = (findname.group(1))
-            else:
-                continue
-            findartist = re.search( '"artist": ?"(.*?)",["\n]', item )
-            if findartist:
-                artist = (findartist.group(1))
-            else:
-                artist = ""
-            findartwork = re.search( '"fanart": ?"(.*?)",["\n]', item )
-            if findartwork:
-                artwork = (findartwork.group(1))[:-4]
+        if json_response['result'].has_key('musicvideos'):
+            for item in json_response['result']['musicvideos']:
+                if self.dialog.iscanceled():
+                    log('script cancelled')
+                    return
+                processeditems = processeditems + 1
+                self.dialog.update( int( float( processeditems ) / float( 
totalitems ) * 100), __language__(32003) + ': ' + str( count + 1 ) )
+                name = item['title']
+                artist = item['artist']
+                artwork = item['fanart'][:-4]
                 tmp_filename = artist + ' - ' + name
                 filename = clean_filename( tmp_filename )
                 for ext in (".dds", ".tbn"):
@@ -271,27 +244,22 @@ class Main:
                             log( 'failed to copy musicvideofanart' )
         log( 'musicvideofanart copied: %s' % count )
 
-
     def _copy_artistfanart( self ):
         count = 0
         processeditems = 0
         json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": 
"AudioLibrary.GetArtists", "params": {"properties": ["fanart"] }, "id": 1}')
-        json_response = re.compile( "{(.*?)}", re.DOTALL ).findall(json_query)
+        json_query = unicode(json_query, 'utf-8', errors='ignore')
+        json_response = simplejson.loads(json_query)
         totalitems = len( json_response )
-        for item in json_response:
-            if self.dialog.iscanceled():
-                log('script cancelled')
-                return
-            processeditems = processeditems + 1
-            self.dialog.update( int( float( processeditems ) / float( 
totalitems ) * 100), __language__(32004) + ': ' + str( count + 1 ) )
-            findname = re.search( '"artist": ?"(.*?)",["\n]', item )
-            if findname:
-                name = (findname.group(1))
-            else:
-                continue
-            findartwork = re.search( '"fanart": ?"(.*?)"', item )
-            if findartwork:
-                artwork = (findartwork.group(1))[:-4]
+        if json_response['result'].has_key('artists'):
+            for item in json_response['result']['artists']:
+                if self.dialog.iscanceled():
+                    log('script cancelled')
+                    return
+                processeditems = processeditems + 1
+                self.dialog.update( int( float( processeditems ) / float( 
totalitems ) * 100), __language__(32004) + ': ' + str( count + 1 ) )
+                name = item['label']
+                artwork = item['fanart'][:-4]
                 tmp_filename = name
                 filename = clean_filename( tmp_filename )
                 for ext in (".dds", ".tbn"):
@@ -305,32 +273,23 @@ class Main:
                             log( 'failed to copy artistfanart' )
         log( 'artistfanart copied: %s' % count )
 
-
     def _copy_moviethumbs( self ):
         count = 0
         processeditems = 0
-        json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": 
"VideoLibrary.GetMovies", "params": {"properties": ["thumbnail", "year"] }, 
"id": 1}')
-        json_response = re.compile( "{(.*?)}", re.DOTALL ).findall(json_query)
+        json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": 
"VideoLibrary.GetMovies", "params": {"properties": ["title", "thumbnail", 
"year"] }, "id": 1}')
+        json_query = unicode(json_query, 'utf-8', errors='ignore')
+        json_response = simplejson.loads(json_query)
         totalitems = len( json_response )
-        for item in json_response:
-            if self.dialog.iscanceled():
-                log('script cancelled')
-                return
-            processeditems = processeditems + 1
-            self.dialog.update( int( float( processeditems ) / float( 
totalitems ) * 100), __language__(32005) + ': ' + str( count + 1 ) )
-            findname = re.search( '"label": ?"(.*?)",["\n]', item )
-            if findname:
-                name = (findname.group(1))
-            else:
-                continue
-            findyear = re.search( '"year": ?(.*)', item )
-            if findyear:
-                year = (findyear.group(1))
-            else:
-                year = ""
-            findartwork = re.search( '"thumbnail": ?"(.*?)",["\n]', item )
-            if findartwork:
-                artwork = (findartwork.group(1))[:-4]
+        if json_response['result'].has_key('movies'):
+            for item in json_response['result']['movies']:
+                if self.dialog.iscanceled():
+                    log('script cancelled')
+                    return
+                processeditems = processeditems + 1
+                self.dialog.update( int( float( processeditems ) / float( 
totalitems ) * 100), __language__(32005) + ': ' + str( count + 1 ) )
+                name = item['title']
+                year = str(item['year'])
+                artwork = item['thumbnail'][:-4]
                 tmp_filename = name + ' (' + year + ')'
                 filename = clean_filename( tmp_filename )
                 for ext in (".dds", ".tbn"):
@@ -344,27 +303,22 @@ class Main:
                             log( 'failed to copy moviethumb' )
         log( 'moviethumbs copied: %s' % count )
 
-
     def _copy_tvshowthumbs( self ):
         count = 0
         processeditems = 0
-        json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": 
"VideoLibrary.GetTVShows", "params": {"properties": ["thumbnail"] }, "id": 1}')
-        json_response = re.compile( "{(.*?)}", re.DOTALL ).findall(json_query)
+        json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": 
"VideoLibrary.GetTVShows", "params": {"properties": ["title", "thumbnail"] }, 
"id": 1}')
+        json_query = unicode(json_query, 'utf-8', errors='ignore')
+        json_response = simplejson.loads(json_query)
         totalitems = len( json_response )
-        for item in json_response:
-            if self.dialog.iscanceled():
-                log('script cancelled')
-                return
-            processeditems = processeditems + 1
-            self.dialog.update( int( float( processeditems ) / float( 
totalitems ) * 100), __language__(32006) + ': ' + str( count + 1 ) )
-            findname = re.search( '"label": ?"(.*?)",["\n]', item )
-            if findname:
-                name = (findname.group(1))
-            else:
-                continue
-            findartwork = re.search( '"thumbnail": ?"(.*?)"', item )
-            if findartwork:
-                artwork = (findartwork.group(1))[:-4]
+        if json_response['result'].has_key('tvshows'):
+            for item in json_response['result']['tvshows']:
+                if self.dialog.iscanceled():
+                    log('script cancelled')
+                    return
+                processeditems = processeditems + 1
+                self.dialog.update( int( float( processeditems ) / float( 
totalitems ) * 100), __language__(32006) + ': ' + str( count + 1 ) )
+                name = item['title']
+                artwork = item['thumbnail'][:-4]
                 tmp_filename = name
                 filename = clean_filename( tmp_filename )
                 for ext in (".dds", ".tbn"):
@@ -378,94 +332,68 @@ class Main:
                             log( 'failed to copy tvshowthumb' )
         log( 'tvshowthumbs copied: %s' % count )
 
-
     def _copy_seasonthumbs( self ):
         count = 0
         tvshowids = []
         json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": 
"VideoLibrary.GetTVShows", "id": 1}')
-        json_response = re.compile( "{(.*?)}", re.DOTALL ).findall(json_query)
-        for item in json_response:
-            if self.dialog.iscanceled():
-                log('script cancelled')
-                return
-            findid = re.search( '"tvshowid": ?(.*)', item )
-            if findid:
-                tvshowid = (findid.group(1))
-                tvshowids.append(tvshowid)
-        for tvshowid in tvshowids:
-            processeditems = 0
-            json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": 
"VideoLibrary.GetSeasons", "params": {"properties": ["thumbnail", "showtitle"], 
"tvshowid":%s }, "id": 1}' % tvshowid)
-            json_response = re.compile( "{(.*?)}", re.DOTALL 
).findall(json_query)
-            totalitems = len( json_response )
-            for item in json_response:
+        json_query = unicode(json_query, 'utf-8', errors='ignore')
+        json_response = simplejson.loads(json_query)
+        if json_response['result'].has_key('tvshows'):
+            for item in json_response['result']['tvshows']:
                 if self.dialog.iscanceled():
                     log('script cancelled')
                     return
-                processeditems = processeditems + 1
-                self.dialog.update( int( float( processeditems ) / float( 
totalitems ) * 100), __language__(32007) + ': ' + str( count + 1 ) )
-                findname = re.search( '"label": ?"(.*?)",["\n]', item )
-                if findname:
-                    name = (findname.group(1))
-                else:
-                    continue
-                findtvshow = re.search( '"showtitle": ?"(.*?)",["\n]', item )
-                if findtvshow:
-                    tvshow = (findtvshow.group(1))
-                else:
-                    tvshow = ""
-                findartwork = re.search( '"thumbnail": ?"(.*?)"', item )
-                if findartwork:
-                    artwork = (findartwork.group(1))[:-4]
-                    tmp_filename = tvshow + ' - ' + name
-                    filename = clean_filename( tmp_filename )
-                    for ext in (".dds", ".tbn"):
-                        if xbmcvfs.exists( xbmc.translatePath( artwork + ext ) 
):
-                            try:
-                                count += 1
-                                xbmcvfs.copy( xbmc.translatePath( artwork + 
ext ), os.path.join( self.seasonthumbspath, '%s%s' % (filename, ext) ) )
-                                break
-                            except:
-                                count -= 1
-                                log( 'failed to copy seasonthumb' )
+                tvshowid = item['tvshowid']
+                tvshowids.append(tvshowid)
+            for tvshowid in tvshowids:
+                processeditems = 0
+                json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": 
"VideoLibrary.GetSeasons", "params": {"properties": ["title", "thumbnail", 
"showtitle"], "tvshowid":%s }, "id": 1}' % tvshowid)
+                json_query = unicode(json_query, 'utf-8', errors='ignore')
+                json_response = simplejson.loads(json_query)
+                totalitems = len( json_response )
+                if json_response['result'].has_key('seasons'):
+                    for item in json_response['result']['seasons']:
+                        if self.dialog.iscanceled():
+                            log('script cancelled')
+                            return
+                        processeditems = processeditems + 1
+                        self.dialog.update( int( float( processeditems ) / 
float( totalitems ) * 100), __language__(32007) + ': ' + str( count + 1 ) )
+                        name = item['title']
+                        tvshow = item['showtitle']
+                        artwork = item['thumbnail'][:-4]
+                        tmp_filename = tvshow + ' - ' + name
+                        filename = clean_filename( tmp_filename )
+                        for ext in (".dds", ".tbn"):
+                            if xbmcvfs.exists( xbmc.translatePath( artwork + 
ext ) ):
+                                try:
+                                    count += 1
+                                    xbmcvfs.copy( xbmc.translatePath( artwork 
+ ext ), os.path.join( self.seasonthumbspath, '%s%s' % (filename, ext) ) )
+                                    break
+                                except:
+                                    count -= 1
+                                    log( 'failed to copy seasonthumb' )
         log( 'seasonthumbs copied: %s' % count )
 
-
     def _copy_episodethumbs( self ):
         count = 0
         processeditems = 0
-        json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": 
"VideoLibrary.GetEpisodes", "params": {"properties": ["thumbnail", "season", 
"episode", "showtitle"] }, "id": 1}')
-        json_response = re.compile( "{(.*?)}", re.DOTALL ).findall(json_query)
+        json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": 
"VideoLibrary.GetEpisodes", "params": {"properties": ["title", "thumbnail", 
"season", "episode", "showtitle"] }, "id": 1}')
+        json_query = unicode(json_query, 'utf-8', errors='ignore')
+        json_response = simplejson.loads(json_query)
         totalitems = len( json_response )
-        for item in json_response:
-            if self.dialog.iscanceled():
-                log('script cancelled')
-                return
-            processeditems = processeditems + 1
-            self.dialog.update( int( float( processeditems ) / float( 
totalitems ) * 100), __language__(32008) + ': ' + str( count + 1 ) )
-            findname = re.search( '"label": ?"(.*?)",["\n]', item )
-            if findname:
-                name = (findname.group(1))
-            else:
-                continue
-            findtvshow = re.search( '"showtitle": ?"(.*?)",["\n]', item )
-            if findtvshow:
-                tvshow = (findtvshow.group(1))
-            else:
-                tvshow = ""
-            findseason = re.search( '"season": ?(.*?),["\n]', item )
-            if findseason:
-                season = (findseason.group(1))
-            else:
-                season = ""
-            findepisode = re.search( '"episode": ?(.*?),["\n]', item )
-            if findepisode:
-                episode = (findepisode.group(1))
-            else:
-                episode = ""
-            findartwork = re.search( '"thumbnail": ?"(.*?)"', item )
-            episodenumber = "s%.2d%.2d" % (int( season ), int( episode ))
-            if findartwork:
-                artwork = (findartwork.group(1))[:-4]
+        if json_response['result'].has_key('episodes'):
+            for item in json_response['result']['episodes']:
+                if self.dialog.iscanceled():
+                    log('script cancelled')
+                    return
+                processeditems = processeditems + 1
+                self.dialog.update( int( float( processeditems ) / float( 
totalitems ) * 100), __language__(32008) + ': ' + str( count + 1 ) )
+                name = item['title']
+                tvshow = item['showtitle']
+                artwork = item['thumbnail'][:-4]
+                season = item['season']
+                episode = item['episode']
+                episodenumber = "s%.2d%.2d" % (int( season ), int( episode ))
                 tmp_filename = tvshow + ' - ' + episodenumber + ' - ' + name
                 filename = clean_filename( tmp_filename )
                 for ext in (".dds", ".tbn"):
@@ -479,32 +407,23 @@ class Main:
                             log( 'failed to copy episodethumb' )
         log( 'episodethumbs copied: %s' % count )
 
-
     def _copy_musicvideothumbs( self ):
         count = 0
         processeditems = 0
-        json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": 
"VideoLibrary.GetMusicVideos", "params": {"properties": ["thumbnail", "artist"] 
}, "id": 1}')
-        json_response = re.compile( "{(.*?)}", re.DOTALL ).findall(json_query)
+        json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": 
"VideoLibrary.GetMusicVideos", "params": {"properties": ["title", "thumbnail", 
"artist"] }, "id": 1}')
+        json_query = unicode(json_query, 'utf-8', errors='ignore')
+        json_response = simplejson.loads(json_query)
         totalitems = len( json_response )
-        for item in json_response:
-            if self.dialog.iscanceled():
-                log('script cancelled')
-                return
-            processeditems = processeditems + 1
-            self.dialog.update( int( float( processeditems ) / float( 
totalitems ) * 100), __language__(32009) + ': ' + str( count + 1 ) )
-            findname = re.search( '"label": ?"(.*?)",["\n]', item )
-            if findname:
-                name = (findname.group(1))
-            else:
-                continue
-            findartist = re.search( '"artist": ?"(.*?)",["\n]', item )
-            if findartist:
-                artist = (findartist.group(1))
-            else:
-                artist = ""
-            findartwork = re.search( '"thumbnail": ?"(.*?)"', item )
-            if findartwork:
-                artwork = (findartwork.group(1))[:-4]
+        if json_response['result'].has_key('musicvideos'):
+            for item in json_response['result']['musicvideos']:
+                if self.dialog.iscanceled():
+                    log('script cancelled')
+                    return
+                processeditems = processeditems + 1
+                self.dialog.update( int( float( processeditems ) / float( 
totalitems ) * 100), __language__(32009) + ': ' + str( count + 1 ) )
+                name = item['title']
+                artist = item['artist']
+                artwork = item['thumbnail'][:-4]
                 tmp_filename = artist + ' - ' + name
                 filename = clean_filename( tmp_filename )
                 for ext in (".dds", ".tbn"):
@@ -518,27 +437,22 @@ class Main:
                             log( 'failed to copy musicvideothumb' )
         log( 'musicvideothumbs copied: %s' % count )
 
-
     def _copy_artistthumbs( self ):
         count = 0
         processeditems = 0
         json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": 
"AudioLibrary.GetArtists", "params": {"properties": ["thumbnail"] }, "id": 1}')
-        json_response = re.compile( "{(.*?)}", re.DOTALL ).findall(json_query)
+        json_query = unicode(json_query, 'utf-8', errors='ignore')
+        json_response = simplejson.loads(json_query)
         totalitems = len( json_response )
-        for item in json_response:
-            if self.dialog.iscanceled():
-                log('script cancelled')
-                return
-            processeditems = processeditems + 1
-            self.dialog.update( int( float( processeditems ) / float( 
totalitems ) * 100), __language__(32010) + ': ' + str( count + 1 ) )
-            findname = re.search( '"artist": ?"(.*?)",["\n]', item )
-            if findname:
-                name = (findname.group(1))
-            else:
-                continue
-            findartwork = re.search( '"thumbnail": ?"(.*?)"', item )
-            if findartwork:
-                artwork = (findartwork.group(1))[:-4]
+        if json_response['result'].has_key('artists'):
+            for item in json_response['result']['artists']:
+                if self.dialog.iscanceled():
+                    log('script cancelled')
+                    return
+                processeditems = processeditems + 1
+                self.dialog.update( int( float( processeditems ) / float( 
totalitems ) * 100), __language__(32010) + ': ' + str( count + 1 ) )
+                name = item['label']
+                artwork = item['thumbnail'][:-4]
                 tmp_filename = name
                 filename = clean_filename( tmp_filename )
                 for ext in (".dds", ".tbn"):
@@ -552,32 +466,23 @@ class Main:
                             log( 'failed to copy artistthumb' )
         log( 'artistthumbs copied: %s' % count )
 
-
     def _copy_albumthumbs( self ):
         count = 0
         processeditems = 0
-        json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": 
"AudioLibrary.GetAlbums", "params": {"properties": ["thumbnail", "artist"] }, 
"id": 1}')
-        json_response = re.compile( "{(.*?)}", re.DOTALL ).findall(json_query)
+        json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method": 
"AudioLibrary.GetAlbums", "params": {"properties": ["title", "thumbnail", 
"artist"] }, "id": 1}')
+        json_query = unicode(json_query, 'utf-8', errors='ignore')
+        json_response = simplejson.loads(json_query)
         totalitems = len( json_response )
-        for item in json_response:
-            if self.dialog.iscanceled():
-                log('script cancelled')
-                return
-            processeditems = processeditems + 1
-            self.dialog.update( int( float( processeditems ) / float( 
totalitems ) * 100), __language__(32011) + ': ' + str( count + 1 ) )
-            findname = re.search( '"label": ?"(.*?)",["\n]', item )
-            if findname:
-                name = (findname.group(1))
-            else:
-                continue
-            findartist = re.search( '"artist": ?"(.*?)",["\n]', item )
-            if findartist:
-                artist = (findartist.group(1))
-            else:
-                artist = ""
-            findartwork = re.search( '"thumbnail": ?"(.*?)"', item )
-            if findartwork:
-                artwork = (findartwork.group(1))[:-4]
+        if json_response['result'].has_key('albums'):
+            for item in json_response['result']['albums']:
+                if self.dialog.iscanceled():
+                    log('script cancelled')
+                    return
+                processeditems = processeditems + 1
+                self.dialog.update( int( float( processeditems ) / float( 
totalitems ) * 100), __language__(32011) + ': ' + str( count + 1 ) )
+                name = item['title']
+                artist = item['artist']
+                artwork = item['thumbnail'][:-4]
                 tmp_filename = artist + ' - ' + name
                 filename = clean_filename( tmp_filename )
                 for ext in (".dds", ".tbn"):
@@ -591,7 +496,6 @@ class Main:
                             log( 'failed to copy albumthumb' )
         log( 'albumthumbs copied: %s' % count )
 
-
 if ( __name__ == "__main__" ):
     log('script version %s started' % __addonversion__)
     Main()

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

Summary of changes:
 script.artworkorganizer/addon.xml     |    3 +-
 script.artworkorganizer/changelog.txt |   12 +
 script.artworkorganizer/default.py    |  426 +++++++++++++--------------------
 3 files changed, 179 insertions(+), 262 deletions(-)


hooks/post-receive
-- 
Scripts

------------------------------------------------------------------------------
This SF email is sponsosred by:
Try Windows Azure free for 90 days Click Here 
http://p.sf.net/sfu/sfd2d-msazure
_______________________________________________
Xbmc-addons mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xbmc-addons

Reply via email to