The branch, eden-pre has been updated
       via  943164f2bf6e76d4f63e5693a932a3e867f112eb (commit)
      from  0dd0db3c11b162278c9d3357f1a92d6b9e6e261e (commit)

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

commit 943164f2bf6e76d4f63e5693a932a3e867f112eb
Author: ronie <ro...@poedel.net>
Date:   Wed Dec 21 21:17:23 2011 +0100

    [script.artwork.downloader] -v1.0.3
    
    Downloads artwork for selected movie when multiple exist with same name

diff --git a/script.artwork.downloader/addon.xml 
b/script.artwork.downloader/addon.xml
index ccc1523..e099a05 100644
--- a/script.artwork.downloader/addon.xml
+++ b/script.artwork.downloader/addon.xml
@@ -2,7 +2,7 @@
 <addon
        id="script.artwork.downloader"
        name="Artwork Downloader"
-       version="1.0.2"
+       version="1.0.3"
        provider-name="paddycarey, putneyj, Martijn Kaijser"
     >
   <requires>
diff --git a/script.artwork.downloader/changelog.txt 
b/script.artwork.downloader/changelog.txt
index 511154f..0d9e439 100644
--- a/script.artwork.downloader/changelog.txt
+++ b/script.artwork.downloader/changelog.txt
@@ -1,3 +1,11 @@
+[B]1.0.3[/B]
+- Fixed: Error below limit check
+- Fixed: Custom download for specific movie artwork only
+- Fixed: Downloads artwork for selected movie when multiple exist with same 
name
+         Needs extra argument from skin (see runscript.txt)
+- Fixed: Did not run service when set to 00->09
+- Added: Try conversion of non standard IMDB Id
+
 [B]1.0.2[/B]
 - Added: Log summary on failed/missing items
 - Added: Support the providers message on finished
diff --git a/script.artwork.downloader/default.py 
b/script.artwork.downloader/default.py
index 231a402..8cdc10d 100644
--- a/script.artwork.downloader/default.py
+++ b/script.artwork.downloader/default.py
@@ -1,4 +1,4 @@
-### import
+#import modules
 import re
 import os
 import time
@@ -11,18 +11,18 @@ import urllib
 from traceback import print_exc
 
 ### import libraries
+from resources.lib import language
 from resources.lib import media_setup
 from resources.lib import provider
 from resources.lib.utils import _log as log
 from resources.lib.utils import _dialog as dialog
+from resources.lib.utils import _getUniq as getUniq
 from resources.lib.script_exceptions import DownloadError, 
CreateDirectoryError, HTTP404Error, HTTP503Error, NoFanartError, HTTPTimeout, 
ItemNotFoundError, CopyError
-from resources.lib import language
 from resources.lib.fileops import fileops
-from xml.parsers.expat import ExpatError
 from resources.lib.apply_filters import apply_filters
 from resources.lib.settings import _settings
 from resources.lib.media_setup import _media_listing as media_listing
-
+from xml.parsers.expat import ExpatError
 ### get addon info
 __addon__       = xbmcaddon.Addon()
 __addonid__     = __addon__.getAddonInfo('id')
@@ -33,6 +33,7 @@ __localize__    = __addon__.getLocalizedString
 __addonpath__   = __addon__.getAddonInfo('path')
 __language__    = language.get_abbrev()
 
+### set button actions for GUI
 ACTION_PREVIOUS_MENU = ( 9, 10, 92, 216, 247, 257, 275, 61467, 61448, )
 
 
@@ -65,9 +66,9 @@ class Main:
                 if not self.medianame == '':
                     if self.mode == 'gui':
                         # GUI mode check is at the end of: 'def 
download_artwork'
-                        self.solo_mode(self.mediatype, self.medianame)
+                        self.solo_mode(self.mediatype, self.medianame, 
self.mediapath)
                     else:
-                        self.solo_mode(self.mediatype, self.medianame)
+                        self.solo_mode(self.mediatype, self.medianame, 
self.mediapath)
                         if not dialog('iscanceled', background = 
self.settings.background) and not self.mode == 'customgui':
                             self._batch_download(self.download_list)
                 # No medianame specified
@@ -84,8 +85,6 @@ class Main:
                         self.Medialist = media_listing('tvshow')
                         log("Bulk mode: TV Shows")
                         self.download_artwork(self.Medialist, 
self.tv_providers)
-                    elif self.mediatype == 'music':
-                        log('Bulk mode: Music not yet implemented', 
xbmc.LOGNOTICE)
                     if not dialog('iscanceled', background = 
self.settings.background):
                         self._batch_download(self.download_list)
             # No mediatype is specified
@@ -95,13 +94,13 @@ class Main:
                     self.settings.movie_enable = True
                     self.settings.tvshow_enable = True
                 # Normal oprations check
-                if self.settings.movie_enable:
+                if self.settings.movie_enable and not dialog('iscanceled', 
background = True):
                     self.Medialist = media_listing('movie')
                     self.mediatype = 'movie'
                     self.download_artwork(self.Medialist, self.movie_providers)
                 else:
                     log('Movie fanart disabled, skipping', xbmc.LOGINFO)
-                if self.settings.tvshow_enable:
+                if self.settings.tvshow_enable and not dialog('iscanceled', 
background = True):
                     self.Medialist = media_listing('tvshow')
                     self.mediatype = 'tvshow'
                     self.download_artwork(self.Medialist, self.tv_providers)
@@ -127,6 +126,7 @@ class Main:
         self.download_counter['Total Artwork'] = 0
         self.mediatype = ''
         self.medianame = ''
+        self.mediapath = ''
         self.mode = ''
         self.silent = ''
         self.gui_selected_type = ''
@@ -138,28 +138,17 @@ class Main:
     ### load settings and initialise needed directories
     def initialise(self):
         log("## Checking for script arguments")
-        try: log( "## arg 0: %s" % sys.argv[0] )
-        except: log( "## no arg0" )
-        try: log( "## arg 1: %s" % sys.argv[1] )
-        except: log( "## no arg1" )
-        try: log( "## arg 2: %s" % sys.argv[2] )
-        except: log( "## no arg2" )
-        try: log( "## arg 3: %s" % sys.argv[3] )
-        except: log( "## no arg3" )
-        try: log( "## arg 4: %s" % sys.argv[4] )
-        except: log( "## no arg4" )
-        try: log( "## arg 5: %s" % sys.argv[5] )
-        except: log( "## no arg5" )
-        try: log( "## arg 6: %s" % sys.argv[6] )
-        except: log( "## no arg6" )
-        try: log( "## arg 7: %s" % sys.argv[7] )
-        except: log( "## no arg7" )
-        try: log( "## arg 8: %s" % sys.argv[8] )
-        except: log( "## no arg8" )
-        try: log( "## arg 9: %s" % sys.argv[9] )
-        except: log( "## no arg8" )
-        try: log( "## arg 10: %s" % sys.argv[10] )
-        except: log( "## no arg8" )
+        try:
+            log( "## arg 0: %s" % sys.argv[0] )
+            log( "## arg 1: %s" % sys.argv[1] )
+            log( "## arg 2: %s" % sys.argv[2] )
+            log( "## arg 3: %s" % sys.argv[3] )
+            log( "## arg 4: %s" % sys.argv[4] )
+            log( "## arg 5: %s" % sys.argv[5] )
+            log( "## arg 6: %s" % sys.argv[6] )
+            log( "## arg 7: %s" % sys.argv[7] )
+        except:
+            log( "## No more arg" )
         log("## Checking for downloading mode...")
         for item in sys.argv:
             # Check for download mode
@@ -180,11 +169,14 @@ class Main:
                     log('Error: invalid mediatype, must be one of movie, 
tvshow or music', xbmc.LOGERROR)
                     return False
             # Check for medianame
-            match = re.search("medianame=" , item)
+            match = re.search("medianame=(.*)" , item)
             if match:
-                self.medianame = item.replace("medianame=" , "")
-            else:
-                pass
+                self.medianame = match.group(1)
+            # Check for mediapath
+            match = re.search("mediapath=(.*)" , item)
+            if match:
+                self.mediapath = (match.group(1).rstrip(' /\ '))
+                log('matchgroup: %s' %self.mediapath)
         try:
             # Creates temp folder
             self.fileops = fileops()
@@ -217,8 +209,11 @@ class Main:
                 log('- %s: %s' % (artwork_type, 
self.download_counter[artwork_type]), xbmc.LOGNOTICE)
         # print failed items
         log('## Failed items:')
-        for item in self.getUniq(self.failed_items):
-            log(' - %s' %item, xbmc.LOGNOTICE)
+        if not self.failed_items:
+            log(' - No failed/missing items found')
+        else:
+            for item in getUniq(self.failed_items):
+                log(' - %s' %item, xbmc.LOGNOTICE)
         # dialogs
         summary = __localize__(32012) + ': %s ' % self.download_counter['Total 
Artwork'] + __localize__(32016)
         summary_notify = ': %s ' % self.download_counter['Total Artwork'] + 
__localize__(32016)
@@ -253,9 +248,13 @@ class Main:
                 xbmc.executebuiltin( 'XBMC.ReloadSkin()' )
         '''
 
-
     ### solo mode
-    def solo_mode(self, itemtype, itemname):
+    def solo_mode(self, itemtype, itemname, itempath):
+        log('################')
+        log('Debugging type: %s' %itemtype)
+        log('Debugging name: %s' %itemname)
+        log('Debugging path: %s' %itempath)
+        log('################')
         # activate both movie/tvshow for custom r
         if self.mode == 'custom':
             self.settings.movie_enable = True
@@ -270,17 +269,20 @@ class Main:
             log("Error: type must be one of 'movie', 'tvshow', aborting", 
xbmc.LOGERROR)
             return False
         log('Retrieving fanart for: %s' % itemname)
+        # Search through the media lists for match
         for currentitem in self.Medialist:
             if itemname == currentitem["name"]:
-                if itemtype == 'movie':
+                # Check on exact path match when provided
+                if itempath == currentitem['path'] or itempath == '':
                     self.Medialist = []
                     self.Medialist.append(currentitem)
-                    self.download_artwork(self.Medialist, self.movie_providers)
-                if itemtype == 'tvshow':
+                else:
                     self.Medialist = []
-                    self.Medialist.append(currentitem)
-                    self.download_artwork(self.Medialist, self.tv_providers)
-                break
+        if itemtype == 'movie':
+            self.download_artwork(self.Medialist, self.movie_providers)
+        elif itemtype == 'tvshow':
+            self.download_artwork(self.Medialist, self.tv_providers)
+
 
     ### download media fanart
     def download_artwork(self, media_list, providers):
@@ -295,17 +297,10 @@ class Main:
                 break
             if not self.settings.failcount < self.settings.failthreshold:
                 break
-            # Check for stacked movies
-            try:
-                self.media_path = 
os.path.split(currentmedia["path"])[0].rsplit(' , ', 1)[1]
-            except:
-                self.media_path = os.path.split(currentmedia["path"])[0]
-            # Fixes problems with rared movies
-            if self.media_path.startswith("rar"):
-                self.media_path = 
os.path.split(urllib.url2pathname(self.media_path.replace("rar://","")))[0]
             # Declare some vars
-            self.media_id = currentmedia["id"]
+            self.media_id   = currentmedia["id"]
             self.media_name = currentmedia["name"]
+            self.media_path = currentmedia["path"]
             dialog('update', percentage = int(float(self.processeditems) / 
float(len(media_list)) * 100.0), line1 = self.media_name, line2 = 
__localize__(32008), line3 = '', background = self.settings.background)
             log('########################################################')
             log('Processing media: %s' % self.media_name, xbmc.LOGNOTICE)
@@ -334,6 +329,10 @@ class Main:
             elif self.media_id == '':
                 log('%s: No ID found, skipping' % self.media_name, 
xbmc.LOGNOTICE)
                 self.failed_items.append('%s: No ID found, skipping' % 
self.media_name)
+            elif self.mediatype == 'movie' and not 
self.media_id.startswith('tt'):
+                self.media_id_old = self.media_id
+                self.media_id = "tt%.7d" % int(self.media_id)
+                log('%s: No IMDB ID found, try ID conversion: %s -> %s' % 
(self.media_name, self.media_id_old,self.media_id), xbmc.LOGNOTICE)
             elif self.mediatype == 'tvshow' and self.media_id.startswith('tt'):
                 log('%s: IMDB ID found for TV show, skipping' % 
self.media_name, xbmc.LOGNOTICE)
                 self.failed_items.append('%s: IMDB ID found for TV show, 
skipping' % self.media_name)
@@ -407,34 +406,23 @@ class Main:
     def _download_process(self):
         if not self.mode == 'custom':
             self.download_arttypes = []
-            if self.mediatype == 'tvshow':
-                for arttypes in self.settings.tvshow_arttype_list:
-                    if arttypes['bulk_enabled']:
-                        self.download_arttypes.append(arttypes['art_type'])
-            elif self.mediatype == 'movie':
-                for arttypes in self.settings.movie_arttype_list:
-                    if arttypes['bulk_enabled']:
-                        self.download_arttypes.append(arttypes['art_type'])
-        if self.settings.movie_enable and self.mediatype == 'movie':
-            for arttypes in self.settings.movie_arttype_list:
-                if arttypes['art_type'] in self.download_arttypes:
-                    if arttypes['art_type'] == 'extrafanart':
-                        self._download_art(arttypes['art_type'], 'fanart', 
arttypes['filename'], self.target_extrafanartdirs,  arttypes['gui_string'])
-                    elif arttypes['art_type'] == 'defaultthumb':
-                        self._download_art(arttypes['art_type'], 'poster', 
arttypes['filename'], self.target_artworkdir,  arttypes['gui_string'])    
-                    elif arttypes['art_type'] == 'extrathumbs':
-                        self._download_art(arttypes['art_type'], 'thumb', 
arttypes['filename'], self.target_extrathumbsdirs,  arttypes['gui_string'])
-                    else:
-                        self._download_art(arttypes['art_type'], 
arttypes['art_type'], arttypes['filename'], self.target_artworkdir,  
arttypes['gui_string'])
-        if self.settings.tvshow_enable and self.mediatype == 'tvshow':
-            for arttypes in self.settings.tvshow_arttype_list:
-                if arttypes['art_type'] in self.download_arttypes:
-                    if arttypes['art_type'] == 'extrafanart':
-                        self._download_art(arttypes['art_type'], 'fanart', 
arttypes['filename'], self.target_extrafanartdirs,  arttypes['gui_string'])
-                    elif arttypes['art_type'] == 'defaultthumb':
-                        self._download_art(arttypes['art_type'],  
str.lower(self.settings.tvshow_defaultthumb_type), arttypes['filename'], 
self.target_artworkdir,  arttypes['gui_string'])
-                    else:
-                        self._download_art(arttypes['art_type'], 
arttypes['art_type'], arttypes['filename'], self.target_artworkdir,  
arttypes['gui_string'])
+            for item in self.settings.available_arttypes:
+                if item['bulk_enabled'] and self.mediatype == 
item['media_type']:
+                    self.download_arttypes.append(item['art_type'])
+
+        for item in self.settings.available_arttypes:
+            if item['art_type'] in self.download_arttypes and 
((self.settings.movie_enable and self.mediatype == item['media_type']) or 
(self.settings.tvshow_enable and self.mediatype == item['media_type'])):
+                if item['art_type'] == 'extrafanart':
+                    self._download_art(item['art_type'], 'fanart', 
item['filename'], self.target_extrafanartdirs,  item['gui_string'])
+                elif item['art_type'] == 'defaultthumb' and self.mediatype == 
'movie':
+                    self._download_art(item['art_type'], 'poster', 
item['filename'], self.target_artworkdir,  item['gui_string'])    
+                elif item['art_type'] == 'defaultthumb' and self.mediatype == 
'tvshow':
+                    self._download_art(item['art_type'],  
str.lower(self.settings.tvshow_defaultthumb_type), item['filename'], 
self.target_artworkdir,  item['gui_string'])
+                elif item['art_type'] == 'extrathumbs':
+                    self._download_art(item['art_type'], 'thumb', 
item['filename'], self.target_extrathumbsdirs,  item['gui_string'])
+                else:
+                    self._download_art(item['art_type'], item['art_type'], 
item['filename'], self.target_artworkdir,  item['gui_string'])
+
 
     ### Retrieves imagelist for GUI solo mode
     def _gui_imagelist(self, art_type):
@@ -526,8 +514,9 @@ class Main:
                     elif limited[0]:
                         log("Ignoring (%s): %s" % (limited[1], 
image['filename']))
                         # Check if artwork doesn't exist and the one available 
below settings
-                        if not self.fileops._exists(os.path.join(targetdir, 
image['filename'])) and not image['artwork_type'] =='extrafanart' and not 
image['artwork_type'] =='extrathumbs':
-                            self.failed_items.append('%s: Skipping %s - Below 
limit setting' % (self.media_name,image['artwork_type']))
+                        for targetdir in image['targetdirs']:
+                            if not 
self.fileops._exists(os.path.join(targetdir, image['filename'])) and not 
image['artwork_type'] =='extrafanart' and not image['artwork_type'] 
=='extrathumbs':
+                                self.failed_items.append('%s: Skipping %s - 
Below limit setting' % (self.media_name,image['artwork_type']))
                     else:
                         if self.settings.files_overwrite:
                             download_list.append(image)
@@ -581,18 +570,10 @@ class Main:
         dialog('close', background = self.settings.background)
         self.GUI_type_list = []
         # Fill GUI art type list
-        if self.mediatype == 'tvshow':
-            for arttypes in self.settings.tvshow_arttype_list:
-                if arttypes['solo_enabled'] == 'true':
-                    gui = arttypes['gui_string']
-                    self.GUI_type_list.append (gui)
-        
-        # Fill GUI art type list
-        if self.mediatype == 'movie':
-            for arttypes in self.settings.movie_arttype_list:
-                if arttypes['solo_enabled'] == 'true':
-                    gui = arttypes['gui_string']
-                    self.GUI_type_list.append (gui)
+        for item in self.settings.available_arttypes:
+            if item['solo_enabled'] == 'true' and self.mediatype == 
item['media_type']:
+                gui = item['gui_string']
+                self.GUI_type_list.append (gui)
         # 
         if len(self.GUI_type_list) == 1:
             self.GUI_type_list[0] = "True"
@@ -627,20 +608,12 @@ class Main:
             return False
         else:
             # Check what artwork type has been chosen and parse the image 
restraints
-            if self.mediatype == 'tvshow':
-                for arttypes in self.settings.tvshow_arttype_list:
-                    if self.GUI_type_list[select] == arttypes['gui_string']:
-                        self.gui_selected_type = arttypes['art_type']
-                        self.gui_selected_filename = arttypes['filename']
-                        self.gui_selected_msg = arttypes['gui_string']
-                        return True
-            if self.mediatype == 'movie':
-                for arttypes in self.settings.movie_arttype_list:
-                    if self.GUI_type_list[select] == arttypes['gui_string']:
-                        self.gui_selected_type = arttypes['art_type']
-                        self.gui_selected_filename = arttypes['filename']
-                        self.gui_selected_msg = arttypes['gui_string']
-                        return True
+            for item in self.settings.available_arttypes:
+                if self.GUI_type_list[select] == item['gui_string'] and 
self.mediatype == item['media_type']:
+                    self.gui_selected_type = item['art_type']
+                    self.gui_selected_filename = item['filename']
+                    self.gui_selected_msg = item['gui_string']
+                    return True
             else:
                 return False
 
@@ -648,10 +621,11 @@ class Main:
         self.download_arttypes = []
         # Look for argument matching artwork types
         for item in sys.argv:
-            for type in (self.settings.tvshow_arttype_list or 
self.settings.movie_arttype_list):
-                if type['art_type'] in item:
+            for type in self.settings.available_arttypes:
+                if item == type['art_type'] and self.mediatype == 
type['media_type']:
                     log('Custom mode arttype: %s' %type['art_type'])
                     self.download_arttypes.append(item)
+
         # If only one specified
         if len(self.download_arttypes) == 1 and not self.medianame == '':
             log('Start custom solomode')
@@ -664,18 +638,11 @@ class Main:
                 log('Image list larger than 1')
                 if self._choose_image():
                     log('Chosen: %s'%self.image_url)
-                    if self.mediatype == 'tvshow':
-                        for arttypes in self.settings.tvshow_arttype_list:
-                            if gui_arttype == arttypes['art_type']:
-                                self.gui_selected_type = arttypes['art_type']
-                                self.gui_selected_filename = 
arttypes['filename']
-                                self.gui_selected_msg = arttypes['gui_string']
-                    if self.mediatype == 'movie':
-                        for arttypes in self.settings.movie_arttype_list:
-                            if gui_arttype == arttypes['art_type']:
-                                self.gui_selected_type = arttypes['art_type']
-                                self.gui_selected_filename = 
arttypes['filename']
-                                self.gui_selected_msg = arttypes['gui_string']
+                    for item in self.settings.available_arttypes:
+                        if gui_arttype == item['art_type'] and self.mediatype 
== item['media_type']:
+                            self.gui_selected_type = item['art_type']
+                            self.gui_selected_filename = item['filename']
+                            self.gui_selected_msg = item['gui_string']
                     self._download_art(self.gui_selected_type, 
self.gui_selected_type, self.gui_selected_filename, self.target_artworkdir, 
self.gui_selected_msg)
                     self._batch_download(self.download_list)
                     if not self._download_art_succes:
@@ -687,22 +654,13 @@ class Main:
                     xbmcgui.Dialog().ok(__localize__(32017) , 
__localize__(32018) )
             else:
                 self._download_process()
-                log('Debug: Image list not larger than 1')
+                log('Debug: More than 1 image available')
 
         # If more than one specified
         else:
             log('Start custom bulkmode')
             self._download_process()
 
-    # order preserving and get unique entry
-    def getUniq(self,seq):
-        seen = []
-        result = []
-        for item in seq:
-            if item in seen: continue
-            seen.append(item)
-            result.append(item)
-        return result
 
     def _choose_image(self):
         log( "### image list: %s" % self.gui_imagelist)
@@ -773,4 +731,4 @@ if (__name__ == "__main__"):
     log('## Authors     = %s' % str(__author__))
     log('## Version     = %s' % str(__version__))
     Main()
-    log('script stopped')
+    log('script stopped')
\ No newline at end of file
diff --git a/script.artwork.downloader/readme.txt 
b/script.artwork.downloader/readme.txt
index f275871..d243d30 100644
--- a/script.artwork.downloader/readme.txt
+++ b/script.artwork.downloader/readme.txt
@@ -57,6 +57,7 @@ Skins using this Add-On:
     - reFocus (made by Jeroen)
     - Convergence (made by Mudislander)
     - Backrow (by Sharpe)
+    - Glass (by Ronan/Frost/Kbalist)
 
 
----------------------------------------------------------------------------------------------
 To run the script in bulk mode simply click on it in the 'Addons' or 
'Programs' menu in XBMC.
diff --git a/script.artwork.downloader/resources/docs/pre-eden.xml 
b/script.artwork.downloader/resources/docs/pre-eden.xml
index 9682374..7a41fc6 100644
--- a/script.artwork.downloader/resources/docs/pre-eden.xml
+++ b/script.artwork.downloader/resources/docs/pre-eden.xml
@@ -7,7 +7,7 @@
                <description>Get Artwork</description>
                <label>$LOCALIZE[31316]</label>
                <onclick 
condition="Container.Content(tvshows)">XBMC.RunScript(script.artwork.downloader,
 mediatype=tvshow, medianame=$INFO[ListItem.TVShowTitle])</onclick>
-               <onclick 
condition="Container.Content(movies)">XBMC.RunScript(script.artwork.downloader, 
mediatype=movie, medianame=$INFO[ListItem.Title])</onclick>
+               <onclick 
condition="Container.Content(movies)">XBMC.RunScript(script.artwork.downloader, 
mediatype=movie, 
medianame=$INFO[ListItem.Title],mediapath=$INFO[ListItem.Path])</onclick>
                
<visible>[Container.Content(tvshows)|Container.Content(movies)]+system.hasaddon(script.artwork.downloader)</visible>
        </item>
                  
@@ -18,7 +18,7 @@
                <description>Get Artwork</description>
                <label>$LOCALIZE[31316]</label>
                <onclick 
condition="Container.Content(tvshows)">XBMC.RunScript(script.artwork.downloader,
 mode=gui, mediatype=tvshow, medianame=$INFO[ListItem.TVShowTitle])</onclick>
-               <onclick 
condition="Container.Content(movies)">XBMC.RunScript(script.artwork.downloader, 
mode=gui, mediatype=movie, medianame=$INFO[ListItem.Title])</onclick>
+               <onclick 
condition="Container.Content(movies)">XBMC.RunScript(script.artwork.downloader, 
mode=gui, mediatype=movie, 
medianame=$INFO[ListItem.Title],mediapath=$INFO[ListItem.Path])</onclick>
                
<visible>[Container.Content(tvshows)|Container.Content(movies)]+system.hasaddon(script.artwork.downloader)</visible>
        </item>
 
@@ -50,4 +50,4 @@
                <aspectratio align="center">scale</aspectratio>
                <imagepath 
background="true">$INFO[ListItem.Path,,extrafanart]</imagepath>
                
<visible>Container.Content(movies)+Container(5000).HasFocus(8)</visible>
-       </control>
+       </control>
\ No newline at end of file
diff --git a/script.artwork.downloader/resources/docs/runscript.txt 
b/script.artwork.downloader/resources/docs/runscript.txt
index 247450e..89f4794 100644
--- a/script.artwork.downloader/resources/docs/runscript.txt
+++ b/script.artwork.downloader/resources/docs/runscript.txt
@@ -14,11 +14,15 @@ Code to run script solo:
 
     XBMC.RunScript(script.artwork.downloader, mode=gui, mediatype=?, 
medianame=?)
             -> Runs using the GUI dialog. No add-on settings applied
+
+    XBMC.RunScript(script.artwork.downloader, mode=gui, mediatype=?, 
medianame=?,mediapath=?)
+            -> Runs using the GUI dialog. No add-on settings applied. 
'mediapath'is meant for movies but can work for tvshows to.
     
     XBMC.runscript(script.artwork.downloader, mode=custom, 
mediatype=?,medianame=?,<art_type>,<art_type>,<art_type>)
             -> downloads according to specified art_type. Use as many as you 
like. Only add-on limits apply
 
 
+
 Code to run script bulk mode:
     XBMC.runscript(script.artwork.downloader)
             -> downloads according to add-on settings    
@@ -51,6 +55,7 @@ Available options "mode=?"
 Available options "medianame=?":
     Any name/title that fits the corresponding "mediatype="
             -> example: mediatype=movie, medianame=$INFO[ListItem.Title]
+            -> example: mediatype=movie, medianame=$INFO[ListItem.Title], 
mediapath=$INFO[ListItem.Path]
             -> example: mediatype=movie, medianame=Avatar
             -> example: mediatype=tvshow, medianame=$INFO[ListItem.TVShowTitle]
             -> example: mediatype=tvshow, medianame=House
diff --git a/script.artwork.downloader/resources/language/English/strings.xml 
b/script.artwork.downloader/resources/language/English/strings.xml
index 9881b6c..c074847 100644
--- a/script.artwork.downloader/resources/language/English/strings.xml
+++ b/script.artwork.downloader/resources/language/English/strings.xml
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <strings>
     <!-- Add-on messages id=32001 to 32030 -->
-        <string id="32001">Please help get more art or donate on:</string>
-        <string id="32002">Run add-on at time: (24h)</string>
+        <string id="32001">Please help get more artwork or donate on:</string>
+        <string id="32002">Scheduled run at time: (24h)</string>
         <string id="32003">Faulty/empty settings combination found!</string>
         <string id="32004">Select your preferences and press OK to 
save</string>
         <string id="32005">Cleaning up</string>
@@ -26,11 +26,11 @@
         <string id="32023">Run add-on at start-up / login</string>
         <string id="32024">Run add-on as a service</string>
         <string id="32025">-</string>
-        <string id="32026">24</string>
-        <string id="32027">36</string>
-        <string id="32028">48</string>
+        <string id="32026">-</string>
+        <string id="32027">-</string>
+        <string id="32028">-</string>
         <string id="32029">[I](After changes are made you must restart XBMC) 
[/I]</string>
-        <string id="32030">No ID found for looking up artwork</string>
+        <string id="32030">No provider ID found for looking up artwork</string>
 
     <!-- Add-on settings: General section id=32031 to 32050 -->
         <string id="32031">General settings</string>
@@ -38,7 +38,7 @@
         <string id="32033">Run in background</string>        
         <string id="32034">Show dialog on finished/errors</string>
         <string id="32035">Overwrite all existing artwork [I](will be 
automaticly disabled after downloading)[/I] </string>
-        <string id="32036">Centralize fanart [I](Can be used for fanart 
slideshow)[/I] </string>
+        <string id="32036">Centralize extrafanart [I](Can be used for 
extrafanart slideshow)[/I] </string>
         <string id="32037">Central TV fanart directory</string>
         <string id="32038">Central Movie fanart directory</string>
         <string id="32039">-</string>
diff --git a/script.artwork.downloader/resources/lib/media_setup.py 
b/script.artwork.downloader/resources/lib/media_setup.py
index 8cdca06..e806ee2 100644
--- a/script.artwork.downloader/resources/lib/media_setup.py
+++ b/script.artwork.downloader/resources/lib/media_setup.py
@@ -1,3 +1,4 @@
+import os
 import re
 import xbmc
 import urllib
@@ -10,7 +11,6 @@ from resources.lib.utils import _log as log
 
 # Retrieve JSON list
 def _media_listing(media_type):
-        
         log('Using JSON for retrieving %s info' %media_type)
         Medialist = []
         if media_type == 'tvshow':
@@ -21,7 +21,7 @@ def _media_listing(media_type):
                 for item in jsonobject['result']['tvshows']:
                     Media = {}
                     Media['name'] = item['label']
-                    Media['path'] = item['file']
+                    Media['path'] = _media_path(item['file'])
                     Media['id'] = item['imdbnumber']
                     Media['tvshowid'] = item['tvshowid']
                     ### Search for season numbers
@@ -41,10 +41,22 @@ def _media_listing(media_type):
                 for item in jsonobject['result']['movies']:
                     Media = {}
                     Media['name'] = item['label']
-                    Media['path'] = item['file']
+                    Media['path'] = _media_path(item['file'])
                     Media['id'] = item['imdbnumber']
                     Media['movieid'] = item['movieid']
                     Medialist.append(Media)
         else:
             log('No JSON results found')
-        return Medialist
\ No newline at end of file
+        return Medialist
+
+
+def _media_path(path):
+    # Check for stacked movies
+    try:
+        path = os.path.split(path)[0].rsplit(' , ', 1)[1]
+    except:
+        path = os.path.split(path)[0]
+    # Fixes problems with rared movies
+    if path.startswith("rar"):
+        path = os.path.split(urllib.url2pathname(path.replace("rar://","")))[0]
+    return path
\ No newline at end of file
diff --git a/script.artwork.downloader/resources/lib/settings.py 
b/script.artwork.downloader/resources/lib/settings.py
index 8ccdcab..b8cb9b1 100644
--- a/script.artwork.downloader/resources/lib/settings.py
+++ b/script.artwork.downloader/resources/lib/settings.py
@@ -2,7 +2,6 @@
 import xbmc
 import xbmcaddon
 import os
-import time
 import sys
 import platform
 import xbmcgui
@@ -26,7 +25,6 @@ settings_file   = os.path.join(__addondir__, "settings.xml")
 
 
 class _settings:
-
     ### Get settings from settings.xml
     def _get(self):
         self.movie_enable           = __addon__.getSetting("movie_enable") == 
'true'
@@ -37,7 +35,7 @@ class _settings:
         self.movie_logo             = __addon__.getSetting("movie_logo") == 
'true'
         self.movie_discart          = __addon__.getSetting("movie_discart") == 
'true'
         self.movie_defaultthumb     = 
__addon__.getSetting("movie_defaultthumb") == 'true'
-        
+
         self.tvshow_enable          = __addon__.getSetting("tvshow_enable") == 
'true'
         self.tvshow_poster          = __addon__.getSetting("tvshow_poster") == 
'true'
         self.tvshow_seasonposter    = 
__addon__.getSetting("tvshow_seasonposter") == 'true'
@@ -64,12 +62,12 @@ class _settings:
         self.service_runtime        = __addon__.getSetting("service_runtime")
         self.files_overwrite        = __addon__.getSetting("files_overwrite") 
== 'true'
         self.xbmc_caching_enabled   = 
__addon__.getSetting("xbmc_caching_enabled") == 'true'
-        
+
         # temporary force these to false
         self.tvshow_seasonposter    = False
         self.tvshow_seasonbanner    = False
         self.tvshow_seasonthumbs    = False
-        
+
     def _get_limit(self):    
         self.limit_artwork              = 
__addon__.getSetting("limit_artwork") == 'true'
         self.limit_extrafanart_max      = 
int(__addon__.getSetting("limit_extrafanart_max").rstrip('0').rstrip('.'))
@@ -150,162 +148,179 @@ class _settings:
 
     ### Create list for Artwork types to download
     def _artype_list(self):
-        self.movie_arttype_list = []
-        self.tvshow_arttype_list = []
+        self.available_arttypes = []
         # create global list
         info = {}
+        info['media_type']      = 'movie'
         info['bulk_enabled']    = self.movie_poster
         info['solo_enabled']    = 'true'
         info['gui_string']      = __localize__(32128)
         info['art_type']        = 'poster'
         info['filename']        = 'poster.jpg'
-        self.movie_arttype_list.append(info)
-        
+        self.available_arttypes.append(info)
+
         info = {}
+        info['media_type']      = 'movie'
         info['bulk_enabled']    = self.movie_fanart 
         info['solo_enabled']    = 'true'
         info['gui_string']      = __localize__(32121)
         info['art_type']        = 'fanart'
         info['filename']        = 'fanart.jpg'
-        self.movie_arttype_list.append(info)
-        
+        self.available_arttypes.append(info)
+
         info = {}
+        info['media_type']      = 'movie'
         info['bulk_enabled']    = self.movie_extrafanart
         info['solo_enabled']    = 'false'
         info['gui_string']      = __localize__(32122)
         info['art_type']        = 'extrafanart'
         info['filename']        = ''
-        self.movie_arttype_list.append(info)
-        
+        self.available_arttypes.append(info)
+
         info = {}
+        info['media_type']      = 'movie'
         info['bulk_enabled']    = self.movie_extrathumbs
         info['solo_enabled']    = 'false'
         info['gui_string']      = __localize__(32131)
         info['art_type']        = 'extrathumbs'
         info['filename']        = 'thumb'
-        self.movie_arttype_list.append(info)
-        
+        self.available_arttypes.append(info)
+
         info = {}
+        info['media_type']      = 'movie'
         info['bulk_enabled']    = self.movie_logo
         info['solo_enabled']    = 'false'
         info['gui_string']      = __localize__(32126)
         info['art_type']        = 'clearlogo'
         info['filename']        = 'logo.png'
-        self.movie_arttype_list.append(info)
-        
+        self.available_arttypes.append(info)
+
         info = {}
+        info['media_type']      = 'movie'
         info['bulk_enabled']    = self.movie_discart
         info['solo_enabled']    = 'false'
         info['gui_string']      = __localize__(32132)
         info['art_type']        = 'discart'
         info['filename']        = 'cdart.png'
-        self.movie_arttype_list.append(info)
-        
+        self.available_arttypes.append(info)
+
         info = {}
+        info['media_type']      = 'movie'
         info['bulk_enabled']    = self.movie_defaultthumb
         info['solo_enabled']    = 'true'
         info['gui_string']      = __localize__(32133)
         info['art_type']        = 'defaultthumb'
         info['filename']        = 'folder.jpg'
-        self.movie_arttype_list.append(info)
+        self.available_arttypes.append(info)
 
         # append tv show list
         info = {}
+        info['media_type']      = 'tvshow'
         info['bulk_enabled']    = self.tvshow_poster
         info['solo_enabled']    = 'true'
         info['gui_string']      = __localize__(32128)
         info['art_type']        = 'poster'
         info['filename']        = 'poster.jpg'
-        self.tvshow_arttype_list.append(info)
-        
+        self.available_arttypes.append(info)
+
         info = {}
+        info['media_type']      = 'tvshow'
         info['bulk_enabled']    = self.tvshow_seasonposter
         info['solo_enabled']    = 'false'
         info['gui_string']      = __localize__(32129)
         info['art_type']        = 'seasonposter'
         info['filename']        = 'season'
-        self.tvshow_arttype_list.append(info)
-        
+        self.available_arttypes.append(info)
+
         info = {}
+        info['media_type']      = 'tvshow'
         info['bulk_enabled']    = self.tvshow_fanart
         info['solo_enabled']    = 'true'
         info['gui_string']      = __localize__(32121)
         info['art_type']        = 'fanart'
         info['filename']        = 'fanart.jpg'
-        self.tvshow_arttype_list.append(info)
-        
+        self.available_arttypes.append(info)
+
         info = {}
+        info['media_type']      = 'tvshow'
         info['bulk_enabled']    = self.tvshow_extrafanart
         info['solo_enabled']    = 'false'
         info['gui_string']      = __localize__(32122)
         info['art_type']        = 'extrafanart'
         info['filename']        = '' 
-        self.tvshow_arttype_list.append(info)
-        
+        self.available_arttypes.append(info)
+
         info = {}
+        info['media_type']      = 'tvshow'
         info['bulk_enabled']    = self.tvshow_clearart
         info['solo_enabled']    = 'true'
         info['gui_string']      = __localize__(32125)
         info['art_type']        = 'clearart'
         info['filename']        = 'clearart.png'
-        self.tvshow_arttype_list.append(info)
-        
+        self.available_arttypes.append(info)
+
         info = {}
+        info['media_type']      = 'tvshow'
         info['bulk_enabled']    = self.tvshow_logo
         info['solo_enabled']    = 'true'
         info['gui_string']      = __localize__(32126)
         info['art_type']        = 'clearlogo'
         info['filename']        = 'logo.png'
-        self.tvshow_arttype_list.append(info)
-        
+        self.available_arttypes.append(info)
+
         info = {}
+        info['media_type']      = 'tvshow'
         info['bulk_enabled']    = self.tvshow_thumb
         info['solo_enabled']    = 'true'
         info['gui_string']      = __localize__(32130)
         info['art_type']        = 'tvthumb'
         info['filename']        = 'landscape.jpg'
-        self.tvshow_arttype_list.append(info)
-        
+        self.available_arttypes.append(info)
+
         info = {}
+        info['media_type']      = 'tvshow'
         info['bulk_enabled']    = self.tvshow_seasonthumbs
         info['solo_enabled']    = 'false'
         info['gui_string']      = __localize__(32134)
         info['art_type']        = 'seasonthumbs'
         info['filename']        = 'seasonthumb'
-        self.tvshow_arttype_list.append(info)
-        
+        self.available_arttypes.append(info)
+
         info = {}
+        info['media_type']      = 'tvshow'
         info['bulk_enabled']    = self.tvshow_showbanner
         info['solo_enabled']    = 'true'
         info['gui_string']      = __localize__(32123)
         info['art_type']        = 'banner'
         info['filename']        = 'banner.jpg'
-        self.tvshow_arttype_list.append(info)
-        
+        self.available_arttypes.append(info)
+
         info = {}
+        info['media_type']      = 'tvshow'
         info['bulk_enabled']    = self.tvshow_seasonbanner
         info['solo_enabled']    = 'false'
         info['gui_string']      = __localize__(32124)
         info['art_type']        = 'seasonbanner'
         info['filename']        = 'seasonbanner'
-        self.tvshow_arttype_list.append(info)
-        
+        self.available_arttypes.append(info)
+
         info = {}
+        info['media_type']      = 'tvshow'
         info['bulk_enabled']    = self.tvshow_characterart
         info['solo_enabled']    = 'true'
         info['gui_string']      = __localize__(32127)
         info['art_type']        = 'characterart'
         info['filename']        = 'character.png'
-        self.tvshow_arttype_list.append(info)
-        
+        self.available_arttypes.append(info)
+
         info = {}
+        info['media_type']      = 'tvshow'
         info['bulk_enabled']    = self.tvshow_defaultthumb
         info['solo_enabled']    = 'true'
         info['gui_string']      = __localize__(32133)
         info['art_type']        = 'defaultthumb'
         info['filename']        = 'folder.jpg'
-        self.tvshow_arttype_list.append(info)
-
+        self.available_arttypes.append(info)
 
     ### Check for faulty setting combinations
     def _check(self):
diff --git a/script.artwork.downloader/resources/lib/utils.py 
b/script.artwork.downloader/resources/lib/utils.py
index 36dd26f..3918d8a 100644
--- a/script.artwork.downloader/resources/lib/utils.py
+++ b/script.artwork.downloader/resources/lib/utils.py
@@ -78,3 +78,13 @@ def _dialog(action, percentage = 0, line0 = '', line1 = '', 
line2 = '', line3 =
             else:
                 msg = line1 + ': ' + line2
             xbmc.executebuiltin("XBMC.Notification(%s, %s, 7500, %s)" % 
(line0, msg, __icon__))
+
+# order preserving and get unique entry
+def _getUniq(seq):
+    seen = []
+    result = []
+    for item in seq:
+        if item in seen: continue
+        seen.append(item)
+        result.append(item)
+    return result
\ No newline at end of file
diff --git a/script.artwork.downloader/service.py 
b/script.artwork.downloader/service.py
index 07303bf..4931892 100644
--- a/script.artwork.downloader/service.py
+++ b/script.artwork.downloader/service.py
@@ -13,17 +13,20 @@ from resources.lib.settings import _settings
 
 # starts update/sync
 def autostart():
+        xbmcaddon.Addon().setSetting(id="files_overwrite", value='false')
         settings = _settings()
         settings._get()
         addondir = xbmc.translatePath( utils.__addon__.getAddonInfo('profile') 
)
         tempdir = os.path.join(addondir, 'temp')
-        service_runtime  = "%s:00" % settings.service_runtime
+        service_runtime  = str('%.2d'%int(settings.service_runtime) + ':00')
         log('Service - Run at startup: %s'%settings.service_startup, 
xbmc.LOGNOTICE)        
         log('Service - Run as service: %s'%settings.service_enable, 
xbmc.LOGNOTICE)
-        log('Service - Time: %s:00'%service_runtime, xbmc.LOGNOTICE)
-        xbmcvfs.rmdir(tempdir)
+        log('Service - Time: %s'%service_runtime, xbmc.LOGNOTICE)
+        if xbmcvfs.exists(tempdir):
+            xbmcvfs.rmdir(tempdir)
+            log('Removing temp folder from previous run.')
         if settings.service_startup:
-            time.sleep(10)
+            time.sleep(15)
             
xbmc.executebuiltin('XBMC.RunScript(script.artwork.downloader,silent=true)')
         if settings.service_enable:
             while (not xbmc.abortRequested):
@@ -36,4 +39,4 @@ def autostart():
                         
xbmc.executebuiltin('XBMC.RunScript(script.artwork.downloader,silent=true)')
                     else:
                         log('Addon already running, scheduled run aborted', 
xbmc.LOGNOTICE)
-autostart()
+autostart()
\ No newline at end of file

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

Summary of changes:
 script.artwork.downloader/addon.xml                |    2 +-
 script.artwork.downloader/changelog.txt            |    8 +
 script.artwork.downloader/default.py               |  230 ++++++++------------
 script.artwork.downloader/readme.txt               |    1 +
 .../resources/docs/pre-eden.xml                    |    6 +-
 .../resources/docs/runscript.txt                   |    5 +
 .../resources/language/English/strings.xml         |   14 +-
 .../resources/lib/media_setup.py                   |   20 ++-
 .../resources/lib/settings.py                      |  103 +++++----
 script.artwork.downloader/resources/lib/utils.py   |   10 +
 script.artwork.downloader/service.py               |   13 +-
 11 files changed, 212 insertions(+), 200 deletions(-)


hooks/post-receive
-- 
Scripts

------------------------------------------------------------------------------
Write once. Port to many.
Get the SDK and tools to simplify cross-platform app development. Create 
new or port existing apps to sell to consumers worldwide. Explore the 
Intel AppUpSM program developer opportunity. appdeveloper.intel.com/join
http://p.sf.net/sfu/intel-appdev
_______________________________________________
Xbmc-addons mailing list
Xbmc-addons@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/xbmc-addons

Reply via email to