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