The branch, frodo has been updated
via 7ad4e2a109ae06fdefb8ba39f531b3c18671830f (commit)
from 98f2a66975fb60ab89e2d3a613817154f304099f (commit)
- Log -----------------------------------------------------------------
http://xbmc.git.sourceforge.net/git/gitweb.cgi?p=xbmc/scripts;a=commit;h=7ad4e2a109ae06fdefb8ba39f531b3c18671830f
commit 7ad4e2a109ae06fdefb8ba39f531b3c18671830f
Author: Martijn Kaijser <[email protected]>
Date: Wed Sep 11 09:57:28 2013 +0200
[script.artwork.downloader] 12.0.9
diff --git a/script.artwork.downloader/addon.xml
b/script.artwork.downloader/addon.xml
index 320044d..b13773d 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="12.0.18"
+ version="12.0.19"
provider-name="Martijn"
>
<requires>
diff --git a/script.artwork.downloader/changelog.txt
b/script.artwork.downloader/changelog.txt
index bcdb03c..42b7fef 100644
--- a/script.artwork.downloader/changelog.txt
+++ b/script.artwork.downloader/changelog.txt
@@ -1,3 +1,10 @@
+[B]12.0.19[/B]
+- Gracefully fail if a non library item is send to the script
+- Fix not downloading extrafanart any more
+- Correct local scraper behaviour
+- Catch edge cases where it can't get data from library
+- Fix skin calling methods
+
[B]12.0.18[/B]
- Fixed wrong variable
diff --git a/script.artwork.downloader/default.py
b/script.artwork.downloader/default.py
index 8e08c01..c238b18 100644
--- a/script.artwork.downloader/default.py
+++ b/script.artwork.downloader/default.py
@@ -38,7 +38,7 @@ __version__ = lib.common.__version__
from lib import language
from lib import provider
from lib.apply_filters import filter
-from lib.art_list import artype_list
+from lib.art_list import arttype_list
from lib.fileops import fileops, cleanup
from lib.gui import choose_image, dialog_msg, choice_type, gui_imagelist,
hasimages
from lib.media_setup import _media_listing as media_listing
@@ -53,7 +53,7 @@ from traceback import print_exc
from urlparse import urlsplit
from xml.parsers.expat import ExpatError
-artype_list = artype_list()
+arttype_list = arttype_list()
cancelled = False
download_arttypes = []
download_counter = {'Total Artwork': 0}
@@ -168,9 +168,14 @@ class Main:
if arg[0] in args:
j = arg[1]
startup.update({arg[0]:arg[1]})
- if startup['mediatype'] and startup['mediatype'] not in ['tvshow',
'movie', 'musicvideo']:
+ if startup['mediatype'] and (startup['mediatype'] not in ['tvshow',
'movie', 'musicvideo']):
log('Error: invalid mediatype, must be one of movie, tvshow or
musicvideo', xbmc.LOGERROR)
return False
+ elif startup['dbid'] == '':
+ dialog_msg('okdialog',
+ line1 = __localize__(32084))
+ log('Error: no valid dbid recieved, item must be scanned into
library.', xbmc.LOGERROR)
+ return False
try:
# Creates temp folder
self.fileops = fileops()
@@ -408,11 +413,11 @@ class Main:
if not startup['mode'] == 'custom':
global download_arttypes
download_arttypes = []
- for art_type in artype_list:
+ for art_type in arttype_list:
if art_type['bulk_enabled'] and startup['mediatype'] ==
art_type['media_type']:
download_arttypes.append(art_type['art_type'])
# do the same but for custom mode
- for art_type in artype_list:
+ for art_type in arttype_list:
if (art_type['art_type'] in download_arttypes and
((setting['movie_enable'] and startup['mediatype'] ==
art_type['media_type']) or
(setting['tvshow_enable'] and startup['mediatype'] ==
art_type['media_type']) or
@@ -686,7 +691,7 @@ class Main:
background = setting['background'])
# Look for argument matching artwork types
for item in sys.argv:
- for type in artype_list:
+ for type in arttype_list:
if item == type['art_type'] and startup['mediatype'] ==
type['media_type']:
log('- Custom %s mode art_type: %s'
%(type['media_type'],type['art_type']))
download_arttypes.append(item)
@@ -702,8 +707,8 @@ class Main:
break
# Add parse the image restraints
if gui_selected_type:
- for artype in artype_list:
- if gui_selected_type == artype['art_type'] and
startup['mediatype'] == artype['media_type']:
+ for arttype in arttype_list:
+ if gui_selected_type == arttype['art_type'] and
startup['mediatype'] == arttype['media_type']:
# Get image list for that specific imagetype
imagelist = gui_imagelist(image_list,
gui_selected_type)
# Some debug log output
@@ -715,17 +720,17 @@ class Main:
enabled_type_list = []
imagelist = False
# Fill GUI art type list
- for artype in artype_list:
- if (artype['solo_enabled'] == 'true' and
- startup['mediatype'] == artype['media_type'] and
- hasimages(image_list, artype['art_type'])):
- gui = __localize__(artype['gui_string'])
+ for arttype in arttype_list:
+ if (arttype['solo_enabled'] == 'true' and
+ startup['mediatype'] == arttype['media_type'] and
+ hasimages(image_list, arttype['art_type'])):
+ gui = __localize__(arttype['gui_string'])
enabled_type_list.append(gui)
# Not sure what this does again
if len(enabled_type_list) == 1:
enabled_type_list[0] = 'True'
# Fills imagelist with image that fit the selected imagetype
- type_list = choice_type(enabled_type_list, startup, artype_list)
+ type_list = choice_type(enabled_type_list, startup, arttype_list)
if (len(enabled_type_list) == 1) or type_list:
imagelist = gui_imagelist(image_list, type_list['art_type'])
# Some debug log output
@@ -740,8 +745,11 @@ class Main:
# Create a progress dialog so you can see the progress,
#Send the selected image for processing, Initiate the batch
download
dialog_msg('create')
- self._download_art(currentmedia, type_list,
currentmedia['artworkdir'])
- self._batch_download(download_list)
+ for art_type in arttype_list:
+ if image_list['art_type'][0] == art_type['art_type']:
+ self._download_art(currentmedia, art_type,
currentmedia['artworkdir'])
+ self._batch_download(download_list)
+ break
# When not succesfull show failure dialog
if not download_succes:
dialog_msg('okdialog',
@@ -752,7 +760,7 @@ class Main:
log('- No artwork found')
dialog_msg('okdialog',
line1 = currentmedia['name'],
- line2 = __localize__(artype['gui_string']) + ' ' +
__localize__(32022))
+ line2 = __localize__(arttype['gui_string']) + ' ' +
__localize__(32022))
# When download succesfull
elif download_succes:
log('- Download succesfull')
@@ -767,7 +775,7 @@ class Main:
global startup
# Look for argument matching artwork types
for item in sys.argv:
- for type in artype_list:
+ for type in arttype_list:
if item == type['art_type'] and startup['mediatype'] ==
type['media_type']:
log('- Custom %s mode art_type: %s'
%(type['media_type'],type['art_type']))
download_arttypes.append(item)
@@ -791,7 +799,7 @@ class Main:
if image_list:
log('- Chosen: %s'% image_list)
dialog_msg('create')
- for item in artype_list:
+ for item in arttype_list:
if gui_arttype == item['art_type']:
self._download_art(currentmedia,
item,
diff --git a/script.artwork.downloader/lib/apply_filters.py
b/script.artwork.downloader/lib/apply_filters.py
index 502b2e0..66d8ad0 100644
--- a/script.artwork.downloader/lib/apply_filters.py
+++ b/script.artwork.downloader/lib/apply_filters.py
@@ -119,10 +119,6 @@ def extrafanart(data):
elif limit.get('limit_artwork') and 'series_name' in data.get('artwork')
and limit.get('limit_notext') and data.get('artwork')['series_name']:
reason = 'Has text'
limited = True
- # Correct language
- elif limit.get('limit_artwork') and not data.get('artwork')['language'] in
[data.get('language'), 'n/a']:
- reason = "Doesn't match preferred language: %s" %
limit.get('limit_preferred_language')
- limited = True
return [limited, reason]
def extrathumbs(data):
diff --git a/script.artwork.downloader/lib/art_list.py
b/script.artwork.downloader/lib/art_list.py
index 1ab7fac..cb8b752 100644
--- a/script.artwork.downloader/lib/art_list.py
+++ b/script.artwork.downloader/lib/art_list.py
@@ -21,7 +21,7 @@
from lib.settings import get
### Create list for Artwork types to download
-def artype_list():
+def arttype_list():
setting = get()
available_arttypes = [{'media_type': 'movie',
'bulk_enabled': setting.get('movie_poster'),
diff --git a/script.artwork.downloader/lib/media_setup.py
b/script.artwork.downloader/lib/media_setup.py
index 8fa2254..22cbef5 100644
--- a/script.artwork.downloader/lib/media_setup.py
+++ b/script.artwork.downloader/lib/media_setup.py
@@ -41,7 +41,7 @@ def _media_unique(media_type, dbid):
json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method":
"VideoLibrary.GetTVShowDetails", "params": {"properties": ["file",
"imdbnumber", "art"], "tvshowid":%s}, "id": 1}' %dbid)
json_query = unicode(json_query, 'utf-8', errors='ignore')
jsonobject = simplejson.loads(json_query)
- if jsonobject['result'].has_key('tvshowdetails'):
+ if jsonobject.has_key('result') and
jsonobject['result'].has_key('tvshowdetails'):
item = jsonobject['result']['tvshowdetails']
# Search for season information
json_query_season = xbmc.executeJSONRPC('{"jsonrpc": "2.0",
"method": "VideoLibrary.GetSeasons", "params": {"properties": ["season",
"art"], "sort": { "method": "label" }, "tvshowid":%s }, "id": 1}'
%item.get('tvshowid',''))
@@ -70,7 +70,7 @@ def _media_unique(media_type, dbid):
json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method":
"VideoLibrary.GetMovieDetails", "params": {"properties": ["file", "imdbnumber",
"year", "trailer", "streamdetails", "art"], "movieid":%s }, "id": 1}' %dbid)
json_query = unicode(json_query, 'utf-8', errors='ignore')
jsonobject = simplejson.loads(json_query)
- if jsonobject['result'].has_key('moviedetails'):
+ if jsonobject.has_key('result') and
jsonobject['result'].has_key('moviedetails'):
item = jsonobject['result']['moviedetails']
disctype =
media_disctype(item.get('file','').encode('utf-8').lower(),
item['streamdetails']['video'])
@@ -90,7 +90,7 @@ def _media_unique(media_type, dbid):
json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method":
"VideoLibrary.GetMusicVideoDetails", "params": {"properties": ["file",
"artist", "album", "track", "runtime", "year", "genre", "art"], "movieid":%s },
"id": 1}' %dbid)
json_query = unicode(json_query, 'utf-8', errors='ignore')
jsonobject = simplejson.loads(json_query)
- if jsonobject['result'].has_key('musicvideodetails'):
+ if jsonobject.has_key('result') and
jsonobject['result'].has_key('musicvideodetails'):
item = jsonobject['result']['musicvideodetails']
Medialist.append({'dbid': item.get('musicvideoid',''),
'id': '',
@@ -114,7 +114,7 @@ def _media_listing(media_type):
json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method":
"VideoLibrary.GetTVShows", "params": {"properties": ["file", "imdbnumber",
"art"], "sort": { "method": "label" } }, "id": 1}')
json_query = unicode(json_query, 'utf-8', errors='ignore')
jsonobject = simplejson.loads(json_query)
- if jsonobject['result'].has_key('tvshows'):
+ if jsonobject.has_key('result') and
jsonobject['result'].has_key('tvshows'):
for item in jsonobject['result']['tvshows']:
# Search for season information
json_query_season = xbmc.executeJSONRPC('{"jsonrpc": "2.0",
"method": "VideoLibrary.GetSeasons", "params": {"properties": ["season",
"art"], "sort": { "method": "label" }, "tvshowid":%s }, "id": 1}'
%item.get('tvshowid',''))
@@ -143,7 +143,7 @@ def _media_listing(media_type):
json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method":
"VideoLibrary.GetMovies", "params": {"properties": ["file", "imdbnumber",
"year", "trailer", "streamdetails", "art"], "sort": { "method": "label" } },
"id": 1}')
json_query = unicode(json_query, 'utf-8', errors='ignore')
jsonobject = simplejson.loads(json_query)
- if jsonobject['result'].has_key('movies'):
+ if jsonobject.has_key('result') and
jsonobject['result'].has_key('movies'):
for item in jsonobject['result']['movies']:
disctype =
media_disctype(item.get('file','').encode('utf-8').lower(),
item['streamdetails']['video'])
@@ -162,7 +162,7 @@ def _media_listing(media_type):
json_query = xbmc.executeJSONRPC('{"jsonrpc": "2.0", "method":
"VideoLibrary.GetMusicVideos", "params": {"properties": ["file", "artist",
"album", "track", "runtime", "year", "genre", "art"], "sort": { "method":
"album" } }, "id": 1}')
json_query = unicode(json_query, 'utf-8', errors='ignore')
jsonobject = simplejson.loads(json_query)
- if jsonobject['result'].has_key('musicvideos'):
+ if jsonobject.has_key('result') and
jsonobject['result'].has_key('musicvideos'):
for item in jsonobject['result']['musicvideos']:
Medialist.append({'dbid': item.get('musicvideoid',''),
'id': '',
diff --git a/script.artwork.downloader/lib/provider/local.py
b/script.artwork.downloader/lib/provider/local.py
index e1d0f51..b234371 100644
--- a/script.artwork.downloader/lib/provider/local.py
+++ b/script.artwork.downloader/lib/provider/local.py
@@ -25,7 +25,7 @@ import xbmcvfs
### import libraries
#from resources.lib.provider.base import BaseProvider
-from lib.art_list import artype_list
+from lib.art_list import arttype_list
from lib.script_exceptions import NoFanartError
from lib.settings import get_limit
from lib.utils import *
@@ -33,7 +33,7 @@ from operator import itemgetter
### get addon info
__localize__ = ( sys.modules[ "__main__" ].__localize__ )
-artype_list = artype_list()
+arttype_list = arttype_list()
limit = get_limit()
class local():
@@ -41,32 +41,30 @@ class local():
image_list = []
file_list = xbmcvfs.listdir(media_item['artworkdir'][0])
### Processes the bulk mode downloading of files
- i = 0
- j = 0
- for item in artype_list:
+ i = 0 # needed
+ j = 0 # have
+ for item in arttype_list:
if item['bulk_enabled'] and media_item['mediatype'] ==
item['media_type']:
- #log('finding: %s, arttype counter: %s'%(item['art_type'], j))
- j += 1
+ #log('finding: %s, arttype counter: %s'%(item['art_type'], i))
+ i += 1
# File checking
if item['art_type'] == 'extrafanart':
- i += 1
extrafanart_file_list = ''
- if xbmcvfs.exists(media_item['extrafanartdirs'][0]):
+ if 'extrafanart' in file_list[0]:
extrafanart_file_list =
xbmcvfs.listdir(media_item['extrafanartdirs'][0])
- #log('list of extrafanart files: %s'%file_list)
- #log('extrafanart found: %s'%len(file_list))
- if len(extrafanart_file_list) <=
limit.get('limit_extrafanart_max'):
- i += 1
+ #log('list of extrafanart files:
%s'%extrafanart_file_list[1])
+ #log('extrafanart found:
%s'%len(extrafanart_file_list[1]))
+ if len(extrafanart_file_list[1]) >=
limit.get('limit_extrafanart_max'):
+ j += 1
elif item['art_type'] == 'extrathumbs':
- i += 1
extrathumbs_file_list = ''
- if xbmcvfs.exists(media_item['extrathumbsdirs'][0]):
+ if 'extrathumbs' in file_list[0]:
extrathumbs_file_list =
xbmcvfs.listdir(media_item['extrathumbsdirs'][0])
- #log('list of extrathumbs files: %s'%file_list)
- #log('extrathumbs found: %s'%len(file_list))
- if len(extrathumbs_file_list) <=
limit.get('limit_extrathumbs_max'):
- i += 1
+ #log('list of extrathumbs files:
%s'%extrathumbs_file_list[1])
+ #log('extrathumbs found:
%s'%len(extrathumbs_file_list[1]))
+ if len(extrathumbs_file_list[1]) >=
limit.get('limit_extrathumbs_max'):
+ j += 1
elif item['art_type'] in ['seasonposter']:
for season in media_item['seasons']:
@@ -76,9 +74,9 @@ class local():
filename = "season-all-poster.jpg"
else:
filename = (item['filename'] % int(season))
- if filename in file_list:
+ if filename in file_list[1]:
url = os.path.join(media_item['artworkdir'][0],
filename).encode('utf-8')
- i += 1
+ j += 1
generalinfo = '%s: %s | ' %(
__localize__(32141), 'n/a')
generalinfo += '%s: %s | ' %(
__localize__(32144), season)
generalinfo += '%s: %s | ' %(
__localize__(32143), 'n/a')
@@ -107,7 +105,7 @@ class local():
filename = (item['filename'] % int(season))
if filename in file_list:
url = os.path.join(media_item['artworkdir'][0],
filename).encode('utf-8')
- i += 1
+ j += 1
generalinfo = '%s: %s | ' %(
__localize__(32141), 'n/a')
generalinfo += '%s: %s | ' %(
__localize__(32144), season)
generalinfo += '%s: %s | ' %(
__localize__(32143), 'n/a')
@@ -134,13 +132,13 @@ class local():
filename = (item['filename'] % int(season))
if filename in file_list:
url = os.path.join(media_item['artworkdir'][0],
filename).encode('utf-8')
- i += 1
+ j += 1
generalinfo = '%s: %s | ' %(
__localize__(32141), 'n/a')
generalinfo += '%s: %s | ' %(
__localize__(32144), season)
generalinfo += '%s: %s | ' %(
__localize__(32143), 'n/a')
generalinfo += '%s: %s | ' %(
__localize__(32145), 'n/a')
# Fill list
- log ('found: %s'%url)
+ #log ('found: %s'%url)
image_list.append({'url': url,
'preview': url,
'id': filename,
@@ -157,7 +155,7 @@ class local():
filename = item['filename']
if filename in file_list:
url = os.path.join(media_item['artworkdir'][0],
filename).encode('utf-8')
- i += 1
+ j += 1
generalinfo = '%s: %s | ' %( __localize__(32141),
'n/a')
generalinfo += '%s: %s | ' %( __localize__(32143),
'n/a')
generalinfo += '%s: %s | ' %( __localize__(32145),
'n/a')
@@ -172,9 +170,9 @@ class local():
'language': 'EN',
'votes': '0',
'generalinfo': generalinfo})
- log('total local files needed: %s'%j)
- log('total local files found: %s'%i)
- if j > i:
+ #log('total local types needed: %s'%i)
+ #log('total local types found: %s'%j)
+ if j < i:
#log('scan providers for more')
scan_more = True
else:
diff --git a/script.artwork.downloader/resources/language/English/strings.po
b/script.artwork.downloader/resources/language/English/strings.po
index 7a951f1..dacae98 100644
--- a/script.artwork.downloader/resources/language/English/strings.po
+++ b/script.artwork.downloader/resources/language/English/strings.po
@@ -247,7 +247,11 @@ msgctxt "#32083"
msgid "-"
msgstr ""
-#empty strings from id 32084 to 32090
+msgctxt "#32084"
+msgid "No valid library item selected"
+msgstr ""
+
+#empty strings from id 32085 to 32090
#Add-on settings: Music section id=32091 to 32100
msgctxt "#32091"
-----------------------------------------------------------------------
Summary of changes:
script.artwork.downloader/addon.xml | 2 +-
script.artwork.downloader/changelog.txt | 7 +++
script.artwork.downloader/default.py | 46 ++++++++++-------
script.artwork.downloader/lib/apply_filters.py | 4 --
script.artwork.downloader/lib/art_list.py | 2 +-
script.artwork.downloader/lib/media_setup.py | 12 ++--
script.artwork.downloader/lib/provider/local.py | 54 +++++++++----------
.../resources/language/English/strings.po | 6 ++-
8 files changed, 73 insertions(+), 60 deletions(-)
hooks/post-receive
--
Scripts
------------------------------------------------------------------------------
How ServiceNow helps IT people transform IT departments:
1. Consolidate legacy IT systems to a single system of record for IT
2. Standardize and globalize service processes across IT
3. Implement zero-touch automation to replace manual, redundant tasks
http://pubads.g.doubleclick.net/gampad/clk?id=51271111&iu=/4140/ostg.clktrk
_______________________________________________
Xbmc-addons mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xbmc-addons