The branch, eden-pre has been updated
via b78542eec4253b3e9f6db7a9386253bed0b28a6c (commit)
from 966b60f968243ca4ae356bacd7fde0037e77d131 (commit)
- Log -----------------------------------------------------------------
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/scripts;a=commit;h=b78542eec4253b3e9f6db7a9386253bed0b28a6c
commit b78542eec4253b3e9f6db7a9386253bed0b28a6c
Author: amet <[email protected]>
Date: Thu Nov 3 22:30:56 2011 +0400
[script.extrafanartdownloader] -v0.4.1
- Added: Extrathumbs support for Movies
- Fixed: New TMDB image locations on site
Advisable is to delete all existing movie extrafanart folders
diff --git a/script.extrafanartdownloader/README
b/script.extrafanartdownloader/README
index 3eed296..8dfe5e4 100644
--- a/script.extrafanartdownloader/README
+++ b/script.extrafanartdownloader/README
@@ -8,11 +8,12 @@ The script also supports a 'solo mode' which allows it to be
run from inside a s
Eden 11.0:
The script can now be downloaded from the official repo XBMC-repo
(pre-Eden)
This script requires an xbmc nightly build of September 21st or later
- Current stable version : 0.4.0
+ Current stable version : 0.4.1
Current Features:
- - TV Extrafanart
- - Movie Extrafanart
+ - TV ExtraFanart
+ - Movie ExtraFanart
+ - Movie ExtraThumbs
- Skin integration: Bulk mode (download all extrafanart for every tv
show/movie)
- Skin integration: Solo mode (download all extrafanart for only one tv
show/movie)
- Limit fanart by: maximum amount/ minimum rating / language used
@@ -27,6 +28,7 @@ Skins using this Add-On:
- Aeon Nox (made by Big Noid)
- Cirrus Extended (made by Butchabay)
- Transparency [T!] (made by Ronie)
+ - Aeon MQ3 (made my MarcosQui)
----------------------------------------------------------------------------------------------
To run the script in bulk mode simply click on it in the 'Addons' or
'Programs' menu in XBMC.
@@ -37,9 +39,6 @@ This script has some different run modes. Please check the
files as described be
Code for skin intergration:
Check "resources/docs/runscript.txt"
-Real world code example Dharma10.1 (available in Dharma version):
-Check "resources/docs/dharma.xml"
-
Real world code example Eden 11.0 (available in Eden version):
Check "resources/docs/pre-eden.xml"
diff --git a/script.extrafanartdownloader/addon.xml
b/script.extrafanartdownloader/addon.xml
index 177eef5..fa9c231 100644
--- a/script.extrafanartdownloader/addon.xml
+++ b/script.extrafanartdownloader/addon.xml
@@ -2,7 +2,7 @@
<addon
id="script.extrafanartdownloader"
name="Extrafanart Downloader"
- version="0.4.0"
+ version="0.4.1"
provider-name="paddycarey, putneyj, Machine-Sanctum"
branch="Eden">
<requires>
@@ -13,22 +13,14 @@
<provides>executable</provides>
</extension>
<extension point="xbmc.addon.metadata">
- <summary lang="en">Download extrafanart for all TV shows and
Movies</summary>
- <summary lang="nl">Download extrafanart voor alle TV series en
Films</summary>
+ <summary lang="en">Downloads Artwork for TV shows and Movies in your
library</summary>
<description lang="en">
- Download extrafanart for all TV shows and Movies in your library.[CR]
- For this to work your skins needs to support the extrafanart.[CR]
- Remark:[CR]Each TV Show / Movie must have its own folder where an
'extrafanart' subfolder will be created.[CR]
- Extrafanart sources:[CR]TV Shows (thetvdb.com)[CR]Movies
(themoviedb.org)[CR]
+ Downloads Extrafanart, Extrathumbs for TV shows and Movies in your
library.[CR]
+ For this to work your skins needs to support these features.[CR]
+ Remark:[CR]Each TV Show / Movie must have its own folder where an
'extrafanart' or 'extrathumbs' subfolder will be created.[CR]
+ Artwork sources:[CR]TV Shows (thetvdb.com)[CR]Movies
(themoviedb.org)[CR]
Skin integration:[CR]See readme file
</description>
- <description lang="nl">
- Download extrafanart voor alle TV series en Films in jou
bibliotheek.[CR]
- Dit werkt enkel als de skin extrafanart ondersteund.[CR]
- Opmerking:[CR]Elke TV Serie / Film moet zijn eigen folder hebben waar
een 'extrafanart' folder zal worden aangemaakt.[CR]
- Extrafanart bronnen:[CR]TV Series (thetvdb.com)[CR]Films
(themoviedb.org)[CR]
- Skin integratie:[CR]Zie readme bestand
- </description>
<platform>all</platform>
</extension>
</addon>
diff --git a/script.extrafanartdownloader/changelog.txt
b/script.extrafanartdownloader/changelog.txt
index be1ff83..7d7d23f 100644
--- a/script.extrafanartdownloader/changelog.txt
+++ b/script.extrafanartdownloader/changelog.txt
@@ -1,19 +1,24 @@
+[B]0.4.1[/B]
+- Added: Extrathumbs support for Movies
+- Fixed: New TMDB image locations on site
+ Advisable is to delete all existing movie extrafanart folders
+
[B]0.4.0[/B]
-- Added silent downloading in background
-- Added Extrafanart limiter (maximum fanart/language/no text)
-- Added download backup folder for fanart
-- More extensive error checking
-- More extensive debug logging
-- Updated skin integration examples
-- Open Settings on first run
+- Added: silent downloading in background
+- Added: Extrafanart limiter (maximum fanart/language/no text)
+- Added: Download backup folder for fanart
+- Added: More extensive error checking
+- Added: More extensive debug logging
+- Added: Open Settings on first run
+- Updated: Skin integration examples
[B]0.3.8[/B]
-- Added option to centralize fanart storage
+- Added: option to centralize fanart storage
- Splitting code into libraries
[B]0.3.7[/B]
-- Added skin integration options (see readme file)
+- Added: Skin integration options (see readme file)
[B]0.3.6[/B]
- Initial commit
-- Added to official XBMC-repo
+- Initial version for official XBMC-repo
diff --git a/script.extrafanartdownloader/default.py
b/script.extrafanartdownloader/default.py
index b6eeb63..f1dd62b 100644
--- a/script.extrafanartdownloader/default.py
+++ b/script.extrafanartdownloader/default.py
@@ -29,36 +29,162 @@ from xml.parsers.expat import ExpatError
Media_listing = media_setup.media_listing
__language__ = language.get_abbrev()
+### clean up and
+def cleanup(self):
+ if self.fileops._exists(self.fileops.tempdir):
+ dialog('update', percentage = 100, line1 = __localize__(36004),
background = self.background)
+ log('Cleaning up temp files')
+ for x in os.listdir(self.fileops.tempdir):
+ tempfile = os.path.join(self.fileops.tempdir, x)
+ self.fileops._delete(tempfile)
+ if self.fileops._exists(tempfile):
+ log('Error deleting temp file: %s' % tempfile, xbmc.LOGERROR)
+ self.fileops._rmdir(self.fileops.tempdir)
+ if self.fileops._exists(self.fileops.tempdir):
+ log('Error deleting temp directory: %s' % self.fileops.tempdir,
xbmc.LOGERROR)
+ else:
+ log('Deleted temp directory: %s' % self.fileops.tempdir,
xbmc.LOGNOTICE)
+ ### log results and notify user
+ log('Finished: Total of %s artwork downloaded' %
self.fileops.downloadcount, xbmc.LOGNOTICE)
+ summary_tmp = __localize__(36009) + ': %s ' % self.fileops.downloadcount
+ summary = summary_tmp + __localize__(36013)
+ dialog('close', background = self.background)
+ if not self.failcount < self.failthreshold:
+ log('Network error detected, script aborted', xbmc.LOGERROR)
+ dialog('okdialog', line1 = __localize__(36007), line2 =
__localize__(36008), background = self.background)
+ if not xbmc.abortRequested:
+ dialog('okdialog', line1 = summary, background = self.background)
+ else:
+ dialog('okdialog', line1 = __localize__(36007), line2 = summary,
background = self.background)
+
+### check if settings.xml excist
+def settings_excist(self):
+ if not os.path.isfile(settings_file):
+ dialog('okdialog', line1 = __localize__(36037), line2 =
__localize__(36038))
+ log('## Settings.xml file not found. Opening settings window.')
+ __addon__.openSettings()
+ first_run = True
+ else:
+ log('Settings.xml file found. Continue with initializing.')
+
+### get settings from settings.xml
+def settings_get(self):
+ self.moviefanart = __addon__.getSetting("movie_enable") == 'true'
+ self.movie_extrafanart = __addon__.getSetting("movie_extrafanart") ==
'true'
+ self.movie_extrathumbs = __addon__.getSetting("movie_extrathumbs") ==
'true'
+ self.tvfanart = __addon__.getSetting("tvshow_enable") == 'true'
+ self.tvshow_extrafanart = __addon__.getSetting("tvshow_extrafanart") ==
'true'
+ self.centralize_enable = __addon__.getSetting("centralize_enable") ==
'true'
+ self.centralfolder_split = __addon__.getSetting("centralfolder_split")
+ self.centralfolder_movies = __addon__.getSetting("centralfolder_movies")
+ self.centralfolder_tvshows = __addon__.getSetting("centralfolder_tvshows")
+ self.limit_extrafanart = __addon__.getSetting("limit_extrafanart") ==
'true'
+ self.limit_extrafanart_max =
int(__addon__.getSetting("limit_extrafanart_max").rstrip('0').rstrip('.'))
+ self.limit_extrafanart_rating =
int(__addon__.getSetting("limit_extrafanart_rating").rstrip('0').rstrip('.'))
+ self.limit_extrathumbs = self.limit_extrafanart
+ self.limit_extrathumbs_max = 4
+ self.limit_extrathumbs_rating = self.limit_extrafanart_rating
+ self.limit_language = __addon__.getSetting("limit_language") == 'true'
+ self.limit_notext = __addon__.getSetting("limit_notext") == 'true'
+ self.use_cache = __addon__.getSetting("use_cache") == 'true'
+ self.cache_directory = __addon__.getSetting("cache_directory")
+ self.background = __addon__.getSetting("background") == 'true'
+
+### declare some starting variables
+def settings_vars(self):
+ self.mediatype = ''
+ self.medianame = ''
+ providers = provider.get_providers()
+ self.movie_providers = providers['movie_providers']
+ self.tv_providers = providers['tv_providers']
+ self.music_providers = providers['music_providers']
+ self.failcount = 0
+ self.failthreshold = 3
+ self.xmlfailthreshold = 5
+ self.fanart_centralized = 0
+
+# Print out settings to log to help with debugging
+def settings_log(self):
+ log("## Settings...")
+ log('## Language Used = %s' % str(__language__))
+ log('## Download Movie Artwork= %s' % str(self.moviefanart))
+ log('## Download Movie ExtraFanart= %s' % str(self.movie_extrafanart))
+ log('## Download Movie ExtraThumbs= %s' % str(self.movie_extrathumbs))
+ log('## Download TV Show Artwork = %s' % str(self.tvfanart))
+ log('## Download TV Show ExtraFanart = %s' % str(self.tvshow_extrafanart))
+ log('## Background Run = %s' % str(self.background))
+ log('## Centralize Extrafanart = %s' % str(self.centralize_enable))
+ log('## Central Movies Folder = %s' % str(self.centralfolder_movies))
+ log('## Central TV Show Folder = %s' % str(self.centralfolder_tvshows))
+ log('## Limit Extrafanart = %s' % str(self.limit_extrafanart))
+ log('## Limit Extrafanart Max = %s' % str(self.limit_extrafanart_max))
+ log('## Limit Extrafanart Rating = %s' %
str(self.limit_extrafanart_rating))
+ log('## Limit Extrathumbs = %s' % str(self.limit_extrathumbs))
+ log('## Limit Extrathumbs Max = %s' % str(self.limit_extrathumbs_max))
+ log('## Limit Extrathumbs Rating = %s' %
str(self.limit_extrathumbs_rating))
+ log('## Limit Language = %s' % str(self.limit_language))
+ log('## Limit Fanart with no text = %s' % str(self.limit_notext))
+ log('## Backup downloaded fanart= %s' % str(self.use_cache))
+ log('## Backup folder = %s' % str(self.cache_directory))
+ log("## End of Settings...")
+
+### Check for script starting arguments used by skins
+def runmode_args(self):
+ log("## Checking for arguments used by skins")
+ 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" )
+
+### initial check before exicuting
+def initialise(self):
+ dialog('create', line1 = __localize__(36005), background = self.background)
+ for item in sys.argv:
+ log("## Checking for downloading mode...")
+ match = re.search("mediatype=(.*)" , item)
+ if match:
+ self.mediatype = match.group(1)
+ if self.mediatype == 'tvshow' or self.mediatype == 'movie' or
self.mediatype == 'music':
+ pass
+ else:
+ log('Error: invalid mediatype, must be one of movie, tvshow or
music', xbmc.LOGERROR)
+ return False
+ else:
+ pass
+ match = re.search("medianame=" , item)
+ if match:
+ self.medianame = item.replace("medianame=" , "")
+ else:
+ pass
+ try:
+ self.fileops = fileops()
+ except CreateDirectoryError, e:
+ log("Could not create directory: %s" % str(e))
+ return False
+ else:
+ return True
class Main:
def __init__(self):
- if not os.path.isfile(settings_file):
- dialog('okdialog', line1 = __localize__(36037), line2 =
__localize__(36038))
- log('Settings.xml file not found. Opening settings window.')
- __addon__.openSettings()
- first_run = True
- else:
- log('Settings.xml file found. Continue with initializing.')
- ### Check for script starting arguments used by skins
- log("## Checking for arguments used by skins")
- 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" )
- if self.initialise():
+ settings_excist(self)
+ settings_get(self)
+ settings_vars(self)
+ settings_log(self)
+ runmode_args(self)
+ if initialise(self):
if not self.mediatype == '':
if not self.medianame == '':
self.solo_mode(self.mediatype, self.medianame)
@@ -74,13 +200,13 @@ class Main:
elif self.mediatype == 'music':
log('Bulk mode: Music not yet implemented',
xbmc.LOGNOTICE)
else:
- if self.tvfanart:
+ if self.tvfanart and self.tvshow_extrafanart:
self.Medialist = Media_listing('TVShows')
self.mediatype = 'tvshow'
self.download_fanart(self.Medialist, self.tv_providers)
else:
log('TV fanart disabled, skipping', xbmc.LOGINFO)
- if self.moviefanart:
+ if self.moviefanart and (self.movie_extrafanart or
self.movie_extrathumbs):
self.Medialist = Media_listing('Movies')
self.mediatype = 'movie'
self.download_fanart(self.Medialist, self.movie_providers)
@@ -88,109 +214,10 @@ class Main:
log('Movie fanart disabled, skipping', xbmc.LOGINFO)
else:
log('Initialisation error, script aborting', xbmc.LOGERROR)
- self.cleanup()
-
+ cleanup(self)
- ### load settings and initialise needed directories
- def initialise(self):
- providers = provider.get_providers()
- self.movie_providers = providers['movie_providers']
- self.tv_providers = providers['tv_providers']
- self.music_providers = providers['music_providers']
- self.failcount = 0
- self.failthreshold = 3
- self.xmlfailthreshold = 5
- self.fanart_centralized = 0
- self.moviefanart = __addon__.getSetting("movie_enable") == 'true'
- self.tvfanart = __addon__.getSetting("tvshow_enable") == 'true'
- self.centralize_enable = __addon__.getSetting("centralize_enable") ==
'true'
- self.centralfolder_split = __addon__.getSetting("centralfolder_split")
- self.centralfolder_movies =
__addon__.getSetting("centralfolder_movies")
- self.centralfolder_tvshows =
__addon__.getSetting("centralfolder_tvshows")
- self.limit_extrafanart = __addon__.getSetting("limit_extrafanart") ==
'true'
- self.limit_extrafanart_max =
int(__addon__.getSetting("limit_extrafanart_max").rstrip('0').rstrip('.'))
- self.limit_extrafanart_rating =
int(__addon__.getSetting("limit_extrafanart_rating").rstrip('0').rstrip('.'))
- self.limit_language = __addon__.getSetting("limit_language") == 'true'
- self.limit_notext = __addon__.getSetting("limit_notext") == 'true'
- self.use_cache = __addon__.getSetting("use_cache") == 'true'
- self.cache_directory = __addon__.getSetting("cache_directory")
- self.background = __addon__.getSetting("background") == 'true'
- dialog('create', line1 = __localize__(36003), background =
self.background)
- self.mediatype = ''
- self.medianame = ''
- # Print out settings to log to help with debugging
- log("## Settings...")
- log('## Language Used = %s' % str(__language__))
- log('## Download Movie Fanart= %s' % str(self.moviefanart))
- log('## Download TV Show Fanart = %s' % str(self.tvfanart))
- log('## Background Run = %s' % str(self.background))
- log('## Centralize Extrafanart = %s' % str(self.centralize_enable))
- log('## Central Movies Folder = %s' % str(self.centralfolder_movies))
- log('## Central TV Show Folder = %s' % str(self.centralfolder_tvshows))
- log('## Limit Extrafanart = %s' % str(self.limit_extrafanart))
- log('## Limit Extrafanart Max = %s' % str(self.limit_extrafanart_max))
- log('## Limit Extrafanart Rating = %s' %
str(self.limit_extrafanart_rating))
- log('## Limit Language = %s' % str(self.limit_language))
- log('## Limit Fanart with no text = %s' % str(self.limit_notext))
- log('## Backup downloaded fanart= %s' % str(self.use_cache))
- log('## Backup folder = %s' % str(self.cache_directory))
- log("## End of Settings...")
-
- for item in sys.argv:
- log("## Checking for downloading mode...")
- match = re.search("mediatype=(.*)" , item)
- if match:
- self.mediatype = match.group(1)
- if self.mediatype == 'tvshow' or self.mediatype == 'movie' or
self.mediatype == 'music':
- pass
- else:
- log('Error: invalid mediatype, must be one of movie,
tvshow or music', xbmc.LOGERROR)
- return False
- else:
- pass
- match = re.search("medianame=" , item)
- if match:
- self.medianame = item.replace("medianame=" , "")
- else:
- pass
- try:
- self.fileops = fileops()
- except CreateDirectoryError, e:
- log("Could not create directory: %s" % str(e))
- return False
- else:
- return True
-
-
- ### clean up and
- def cleanup(self):
- if self.fileops._exists(self.fileops.tempdir):
- dialog('update', percentage = 100, line1 = __localize__(36004),
background = self.background)
- log('Cleaning up temp files')
- for x in os.listdir(self.fileops.tempdir):
- tempfile = os.path.join(self.fileops.tempdir, x)
- self.fileops._delete(tempfile)
- if self.fileops._exists(tempfile):
- log('Error deleting temp file: %s' % tempfile,
xbmc.LOGERROR)
- self.fileops._rmdir(self.fileops.tempdir)
- if self.fileops._exists(self.fileops.tempdir):
- log('Error deleting temp directory: %s' %
self.fileops.tempdir, xbmc.LOGERROR)
- else:
- log('Deleted temp directory: %s' % self.fileops.tempdir,
xbmc.LOGNOTICE)
- ### log results and notify user
- log('Finished: %s extrafanart downloaded' %
self.fileops.downloadcount, xbmc.LOGNOTICE)
- summary_tmp = __localize__(36009) + ': %s ' %
self.fileops.downloadcount
- summary = summary_tmp + __localize__(36013)
- dialog('close', background = self.background)
- if not self.failcount < self.failthreshold:
- log('Network error detected, script aborted', xbmc.LOGERROR)
- dialog('okdialog', line1 = __localize__(36007), line2 =
__localize__(36008), background = self.background)
- if not xbmc.abortRequested:
- dialog('okdialog', line1 = summary, background = self.background)
- else:
- dialog('okdialog', line1 = __localize__(36007), line2 = summary,
background = self.background)
### solo mode
def solo_mode(self, itemtype, itemname):
@@ -243,8 +270,12 @@ class Main:
log('ID: %s' % self.media_id)
log('Path: %s' % self.media_path)
targetdirs = []
+ targetthumbsdirs = []
extrafanart_dir = os.path.join(self.media_path, 'extrafanart')
+ extrathumbs_dir = os.path.join(self.media_path, 'extrathumbs')
targetdirs.append(extrafanart_dir)
+ targetthumbsdirs.append(extrathumbs_dir)
+ ### Check if using the centralize option
if self.centralize_enable:
if self.mediatype == 'tvshow':
if not self.centralfolder_tvshows == '':
@@ -256,6 +287,10 @@ class Main:
targetdirs.append(self.centralfolder_movies)
else:
log('Error: Central fanart enabled but Movies folder
not set, skipping', xbmc.LOGERROR)
+ ### Check if using the cache option
+ targets = targetdirs[:]
+ if self.use_cache and not self.cache_directory == '':
+ targets.append(self.cache_directory)
if self.media_id == '':
log('%s: No ID found, skipping' % self.media_name,
xbmc.LOGNOTICE)
elif self.mediatype == 'tvshow' and self.media_id.startswith('tt'):
@@ -270,7 +305,7 @@ class Main:
if backdrops_result == 'retrying':
time.sleep(10)
try:
- backdrops = provider.get_image_list(self.media_id)
+ image_list = provider.get_image_list(self.media_id)
except HTTP404Error, e:
errmsg = '404: File not found'
backdrops_result = 'skipping'
@@ -305,53 +340,112 @@ class Main:
if backdrops_result == 'pass':
self.failcount = 0
self.current_fanart = 0
+ self.current_extrathumbs = 0
self.downloaded_fanart = 0
- if (self.limit_extrafanart and
self.limit_extrafanart_max < len(backdrops)):
+ self.downloaded_extrathumbs = 0
+ if (self.limit_extrafanart and
self.limit_extrafanart_max < len(image_list)):
download_max = self.limit_extrafanart_max
- else: download_max = len(backdrops)
- targets = targetdirs[:]
- if self.use_cache and not self.cache_directory == '':
- targets.append(self.cache_directory)
- for fanart in backdrops:
- fanarturl = fanart['url']
- ### check if script has been cancelled by user
- if dialog('iscanceled', background =
self.background):
- dialog('close', background = self.background)
- break
- if not self.failcount < self.failthreshold:
- break
- fanartfile = provider.get_filename(fanarturl)
- self.current_fanart = self.current_fanart + 1
-
- if self.limit_extrafanart and
self.downloaded_fanart >= self.limit_extrafanart_max:
- reason = 'Max number fanart reached: %s' %
self.downloaded_fanart
- self.fileops._delete_file_in_dirs(fanartfile,
targetdirs, reason)
- elif self.limit_extrafanart and 'rating' in fanart
and fanart['rating'] < self.limit_extrafanart_rating:
- reason = 'Rating too low: %s' %
fanart['rating']
- self.fileops._delete_file_in_dirs(fanartfile,
targetdirs, reason)
- elif self.limit_extrafanart and 'series_name' in
fanart and self.limit_notext and fanart['series_name']:
- reason = 'Has text'
- self.fileops._delete_file_in_dirs(fanartfile,
targetdirs, reason)
- elif self.limit_extrafanart and
self.limit_language and 'language' in fanart and fanart['language'] !=
__language__:
- reason = "Doesn't match current language: %s"
% xbmc.getLanguage()
- self.fileops._delete_file_in_dirs(fanartfile,
targetdirs, reason)
- else:
- try:
- self.fileops._downloadfile(fanarturl,
fanartfile, targets)
- except HTTP404Error, e:
- log("File does not exist at URL: %s" %
str(e), xbmc.LOGWARNING)
- except HTTPTimeout, e:
- self.failcount = self.failcount + 1
- log("Error downloading file: %s, timed
out" % str(e), xbmc.LOGERROR)
- except CreateDirectoryError, e:
- log("Could not create directory, skipping:
%s" % str(e), xbmc.LOGWARNING)
- break
- except DownloadError, e:
- self.failcount = self.failcount + 1
- log('Error downloading file: %s (Possible
network error: %s), skipping' % (fanarturl, str(e)), xbmc.LOGERROR)
- else:
- self.downloaded_fanart =
self.downloaded_fanart + 1
- dialog('update', percentage =
int(float(self.current_fanart) / float(download_max) * 100.0), line1 =
__localize__(36006), line2 = self.media_name, line3 = fanartfile, background =
self.background)
+ else: download_max = len(image_list)
+ if (self.limit_extrathumbs and
self.limit_extrathumbs_max < len(image_list)):
+ download_thumbsmax = self.limit_extrathumbs_max
+ else: download_thumbsmax = len(image_list)
+ ### Extrafanart downloading
+ if self.movie_extrafanart or self.tvshow_extrafanart:
+ log('Extrafanart enabled. Processing')
+ for fanart in image_list:
+ size = 'original'
+ fanarturl = fanart['url']
+ if size in fanart['size']:
+ ### check if script has been cancelled by
user
+ if dialog('iscanceled', background =
self.background):
+ dialog('close', background =
self.background)
+ break
+ if not self.failcount < self.failthreshold:
+ break
+ if self.mediatype == 'movie':
+ fanartfile =
provider.get_filename(fanart['id'])
+ else:
+ fanartfile =
provider.get_filename(fanarturl)
+ self.current_fanart = self.current_fanart
+ 1
+ ### Check for set limits
+ if self.limit_extrafanart and
self.downloaded_fanart >= self.limit_extrafanart_max:
+ reason = 'Max number fanart reached:
%s' % self.downloaded_fanart
+
self.fileops._delete_file_in_dirs(fanartfile, targetdirs, reason)
+ elif self.limit_extrafanart and 'rating'
in fanart and fanart['rating'] < self.limit_extrafanart_rating:
+ reason = 'Rating too low: %s' %
fanart['rating']
+
self.fileops._delete_file_in_dirs(fanartfile, targetdirs, reason)
+ elif self.limit_extrafanart and
'series_name' in fanart and self.limit_notext and fanart['series_name']:
+ reason = 'Has text'
+
self.fileops._delete_file_in_dirs(fanartfile, targetdirs, reason)
+ elif self.limit_extrafanart and
self.limit_language and 'language' in fanart and fanart['language'] !=
__language__:
+ reason = "Doesn't match current
language: %s" % xbmc.getLanguage()
+
self.fileops._delete_file_in_dirs(fanartfile, targetdirs, reason)
+ else:
+ try:
+
self.fileops._downloadfile(fanarturl, fanartfile, targets)
+ except HTTP404Error, e:
+ log("File does not exist at URL:
%s" % str(e), xbmc.LOGWARNING)
+ except HTTPTimeout, e:
+ self.failcount = self.failcount + 1
+ log("Error downloading file: %s,
timed out" % str(e), xbmc.LOGERROR)
+ except CreateDirectoryError, e:
+ log("Could not create directory,
skipping: %s" % str(e), xbmc.LOGWARNING)
+ break
+ except DownloadError, e:
+ self.failcount = self.failcount + 1
+ log('Error downloading file: %s
(Possible network error: %s), skipping' % (fanarturl, str(e)), xbmc.LOGERROR)
+ else:
+ self.downloaded_fanart =
self.downloaded_fanart + 1
+ dialog('update', percentage =
int(float(self.current_fanart) / float(download_max) * 100.0), line1 =
__localize__(36006) + ' ' + __localize__(36102), line2 = self.media_name, line3
= fanartfile, background = self.background)
+ else:
+ log('Extrafanart disabled. skipping')
+ ### Movie extrathumbs downloading
+ if self.movie_extrathumbs and self.mediatype ==
'movie':
+ log('Movie extrathumbs enabled. Processing')
+ for extrathumbs in image_list:
+ size = 'thumb'
+ extrathumbsurl = extrathumbs['url']
+ if size in extrathumbs['size']:
+ ### check if script has been cancelled by
user
+ if dialog('iscanceled', background =
self.background):
+ dialog('close', background =
self.background)
+ break
+ if not self.failcount < self.failthreshold:
+ break
+ extrathumbsfile = ('thumb%s.jpg' %
str(self.current_extrathumbs+1))
+ self.current_extrathumbs =
self.current_extrathumbs + 1
+ ### Check for set limits
+ if self.limit_extrathumbs and
self.downloaded_extrathumbs >= self.limit_extrathumbs_max:
+ reason = 'Max number extrathumbs
reached: %s' % self.downloaded_extrathumbs
+
self.fileops._delete_file_in_dirs(extrathumbsfile, targetthumbsdirs, reason)
+ elif self.limit_extrathumbs and 'rating'
in extrathumbs and extrathumbs['rating'] < self.limit_extrathumbs_rating:
+ reason = 'Rating too low: %s' %
extrathumbs['rating']
+
self.fileops._delete_file_in_dirs(extrathumbsfile, targetthumbsdirs, reason)
+ elif self.limit_extrathumbs and
'series_name' in extrathumbs and self.limit_notext and
extrathumbs['series_name']:
+ reason = 'Has text'
+
self.fileops._delete_file_in_dirs(extrathumbsfile, targetthumbsdirs, reason)
+ elif self.limit_extrathumbs and
self.limit_language and 'language' in extrathumbs and extrathumbs['language']
!= __language__:
+ reason = "Doesn't match current
language: %s" % xbmc.getLanguage()
+
self.fileops._delete_file_in_dirs(extrathumbsfile, targetthumbsdirs, reason)
+ else:
+ try:
+
self.fileops._downloadfile(extrathumbsurl, extrathumbsfile, targetthumbsdirs)
+ except HTTP404Error, e:
+ log("File does not exist at URL:
%s" % str(e), xbmc.LOGWARNING)
+ except HTTPTimeout, e:
+ self.failcount = self.failcount + 1
+ log("Error downloading file: %s,
timed out" % str(e), xbmc.LOGERROR)
+ except CreateDirectoryError, e:
+ log("Could not create directory,
skipping: %s" % str(e), xbmc.LOGWARNING)
+ break
+ except DownloadError, e:
+ self.failcount = self.failcount + 1
+ log('Error downloading file: %s
(Possible network error: %s), skipping' % (extrathumbsurl, str(e)),
xbmc.LOGERROR)
+ else:
+ self.downloaded_extrathumbs =
self.downloaded_extrathumbs + 1
+ dialog('update', percentage =
int(float(self.current_extrathumbs) / float(download_max) * 100.0), line1 =
__localize__(36006) + ' ' + __localize__(36110), line2 = self.media_name, line3
= extrathumbsfile, background = self.background)
+ else:
+ log('Extrathumbs disabled. skipping')
log('Finished processing media: %s' % self.media_name,
xbmc.LOGDEBUG)
self.processeditems = self.processeditems + 1
diff --git
a/script.extrafanartdownloader/resources/language/English/strings.xml
b/script.extrafanartdownloader/resources/language/English/strings.xml
index a18d196..fb8e11a 100644
--- a/script.extrafanartdownloader/resources/language/English/strings.xml
+++ b/script.extrafanartdownloader/resources/language/English/strings.xml
@@ -3,19 +3,19 @@
<!-- Plugin settings -->
<string id="36001">Download Movie fanart</string>
<string id="36002">Download TV Shows fanart</string>
- <string id="36003">Checking for extrafanart</string>
+ <string id="36003">-</string>
<string id="36004">Cleaning up</string>
- <string id="36005">Checking for extrafanart</string>
- <string id="36006">Downloading extrafanart</string>
+ <string id="36005">Checking for artwork</string>
+ <string id="36006">Downloading</string>
<string id="36007">Add-on aborted</string>
<string id="36008">Network error detected</string>
<string id="36009">Finished</string>
<string id="36010">Enable downloading</string>
<string id="36011">extrafanart centralized</string>
<string id="36012">Run in background</string>
- <string id="36013">extrafanart downloaded</string>
+ <string id="36013">artwork downloaded</string>
<string id="36029">Central Folders Split Into Titles</string>
- <string id="36030">Centralize fanart</string>
+ <string id="36030">Centralize fanart [I](Can be used for fanart
slideshow)[/I] </string>
<string id="36031">Central Movie fanart directory</string>
<string id="36032">Central TV fanart directory</string>
<string id="36033">Limit download: Extrafanart</string>
@@ -39,7 +39,7 @@
<string id="36063">Exclude fanart that has text</string>
<!-- Plugin settings: Music section -->
-<string id="36071">Music</string>
+ <string id="36071">Music</string>
<string id="36072">Options for downloading Music artwork</string>
<!-- Plugin settings: Advanced settings section -->
diff --git a/script.extrafanartdownloader/resources/lib/provider/tmdb.py
b/script.extrafanartdownloader/resources/lib/provider/tmdb.py
index e23c559..799a83b 100644
--- a/script.extrafanartdownloader/resources/lib/provider/tmdb.py
+++ b/script.extrafanartdownloader/resources/lib/provider/tmdb.py
@@ -16,8 +16,9 @@ class TMDBProvider(BaseProvider):
self.url = "http://api.themoviedb.org/2.1/Movie.imdbLookup/" +
language.get_abbrev() + "/xml/%s/%s"
- def get_filename(self, url):
- return url.split('backdrops', 1)[1].replace('/', '-').lstrip('-')
+ def get_filename(self, imageid):
+ filename = imageid + '.jpg'
+ return filename
def get_image_list(self, media_id):
xml_url = self.url % (self.api_key, media_id)
@@ -34,7 +35,9 @@ class TMDBProvider(BaseProvider):
tree = tree.findall('images')[0]
for image in tree.findall('image'):
info = {}
- if image.get('type') == 'backdrop' and image.get('size') ==
'original' and image.get('url'):
+ if image.get('type') == 'backdrop' and image.get('url'):
+ info['size'] = image.get('size')
+ info['id'] = image.get('id')
info['url'] = image.get('url')
info['height'] = int(image.get('height'))
info['width'] = int(image.get('width'))
diff --git a/script.extrafanartdownloader/resources/lib/provider/tvdb.py
b/script.extrafanartdownloader/resources/lib/provider/tvdb.py
index 8877983..0e494ac 100644
--- a/script.extrafanartdownloader/resources/lib/provider/tvdb.py
+++ b/script.extrafanartdownloader/resources/lib/provider/tvdb.py
@@ -25,10 +25,12 @@ class TVDBProvider(BaseProvider):
if image.findtext('BannerType') == 'fanart' and
image.findtext('BannerPath'):
info['url'] = self.url_prefix + image.findtext('BannerPath')
info['language'] = image.findtext('Language')
- if image.findtext('BannerType2'):
+ if image.findtext('BannerType2') :
x,y = image.findtext('BannerType2').split('x')
+ info['BannerType'] = image.findtext('BannerType')
info['height'] = int(x)
info['width'] = int(y)
+ info['size'] = 'original'
info['series_name'] = image.findtext('SeriesName') == 'true'
if image.findtext('RatingCount') and
int(image.findtext('RatingCount')) >= 1:
info['rating'] = float(image.findtext('Rating'))
diff --git a/script.extrafanartdownloader/resources/settings.xml
b/script.extrafanartdownloader/resources/settings.xml
index de9c94f..636d8ce 100644
--- a/script.extrafanartdownloader/resources/settings.xml
+++ b/script.extrafanartdownloader/resources/settings.xml
@@ -8,7 +8,7 @@
<setting label="36012" id="background" type="bool" default="false"/>
<setting type="sep" />
<setting label="36030" id="centralize_enable" type="bool"
default="false"/>
- <setting label="36029" id="centralfolder_split" type="bool"
subsetting= "true" enable="false" default="false" visible="eq(-1,true)"/>
+ <setting label="36029" id="centralfolder_split" type="bool"
subsetting= "true" enable="false" default="false" visible="false"/>
<setting label="36031" id="centralfolder_movies" subsetting="true"
type="folder" default="" source="auto" option="writeable" enable="eq(-2,true)"
visible="eq(-2,true)"/>
<setting label="36032" id="centralfolder_tvshows" subsetting="true"
type="folder" default="" source="auto" option="writeable" enable="eq(-3,true)"
visible="eq(-3,true)"/>
<setting type="sep" />
@@ -27,8 +27,8 @@
<setting label="36010" type="bool" id="movie_enable" default="true" />
<setting label="36108" type="bool" id="movie_poster" subsetting=
"true" enable="eq(-1,true)" default="false" visible="false" />
<setting label="36101" type="bool" id="movie_fanart" subsetting=
"true" enable="eq(-2,true)" default="true" visible="false" />
- <setting label="36102" type="bool" id="movie_extrafanart" subsetting=
"true" enable="eq(-3,true)" default="false" visible="false" />
- <setting label="36110" type="bool" id="movie_extrathumb" subsetting=
"true" enable="eq(-4,true)" default="false" visible="false" />
+ <setting label="36102" type="bool" id="movie_extrafanart" subsetting=
"true" enable="eq(-3,true)" default="false" />
+ <setting label="36110" type="bool" id="movie_extrathumbs" subsetting=
"true" enable="eq(-4,true)" default="false" />
<setting label="36106" type="bool" id="movie_logo" subsetting= "true"
enable="eq(-5,true)" default="false" visible="false" />
</category>
@@ -39,7 +39,7 @@
<setting type="sep" />
<setting label="36010" type="bool" id="tvshow_enable" default="true" />
<setting label="36101" type="bool" id="tvshow_fanart" subsetting=
"true" enable="eq(-1,true)" default="false" visible="false" />
- <setting label="36102" type="bool" id="tvshow_extrafanart" subsetting=
"true" enable="eq(-2,true)" default="false" visible="false" />
+ <setting label="36102" type="bool" id="tvshow_extrafanart" subsetting=
"true" enable="eq(-2,true)" default="false" />
<setting label="36005" type="bool" id="tvshow_clearart" subsetting=
"true" enable="eq(-3,true)" default="false" visible="false" />
<setting label="36106" type="bool" id="tvshow_logo" subsetting= "true"
enable="eq(-4,true)" default="false" visible="false" />
<setting label="36108" type="bool" id="tvshow_poster" subsetting=
"true" enable="eq(-5,true)" default="false" visible="false" />
-----------------------------------------------------------------------
Summary of changes:
script.extrafanartdownloader/README | 11 +-
script.extrafanartdownloader/addon.xml | 20 +-
script.extrafanartdownloader/changelog.txt | 25 +-
script.extrafanartdownloader/default.py | 446 ++++++++++++--------
.../resources/language/English/strings.xml | 12 +-
.../resources/lib/provider/tmdb.py | 9 +-
.../resources/lib/provider/tvdb.py | 4 +-
.../resources/settings.xml | 8 +-
8 files changed, 315 insertions(+), 220 deletions(-)
hooks/post-receive
--
Scripts
------------------------------------------------------------------------------
RSA(R) Conference 2012
Save $700 by Nov 18
Register now
http://p.sf.net/sfu/rsa-sfdev2dev1
_______________________________________________
Xbmc-addons mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xbmc-addons