Fanart PR cleanup

This commit is contained in:
Ruud committed 2014-05-19 21:07:51 +02:00
1 parent 21e5f156bb
commit 0097167dec
6 files changed
+120 -193

No files matched your search

@@ -29,11 +29,11 @@ class MovieResultModifier(Plugin):
'actors': {},
'landscape': [],
'logo': [],
'clearart': [],
'discart': [],
'clear_art': [],
'disc_art': [],
'banner': [],
'extrathumbs': [],
'extrafanart': []
'extra_thumbs': [],
'extra_fanart': []
},
'runtime': 0,
'plot': '',
@@ -5,9 +5,8 @@ from couchpotato.core.event import addEvent
from couchpotato.core.logger import CPLog
from couchpotato.core.media.movie.providers.base import MovieProvider
from couchpotato.core.plugins.quality import QualityPlugin
from libs.fanarttv.movie import Movie
import libs.fanarttv.errors as fanarttv_errors
from fanarttv.movie import Movie
import fanarttv.errors as fanarttv_errors
log = CPLog(__name__)
@@ -16,10 +15,11 @@ autoload = 'FanartTV'
class FanartTV(MovieProvider):
MAX_EXTRAFANART = 20
def __init__(self):
addEvent('movie.extraart', self.getArt, priority=2)
addEvent('movie.extra_art', self.getArt, priority=2)
# Configure fanarttv API settings
os.environ.setdefault('FANART_APIKEY', self.conf('api_key'))
@@ -35,7 +35,7 @@ class FanartTV(MovieProvider):
try:
try:
exists = True
movie = Movie.get(id=identifier)
movie = Movie.get(id = identifier)
except (fanarttv_errors.FanartError, IOError):
exists = False
@@ -49,23 +49,23 @@ class FanartTV(MovieProvider):
return images
def _parseMovie(self, movie, isHD):
def _parseMovie(self, movie, is_hd):
images = {
'landscape': [],
'logo': [],
'discart': [],
'clearart': [],
'banner': [],
'extrafanart': []
}
'landscape': [],
'logo': [],
'disc_art': [],
'clear_art': [],
'banner': [],
'extra_fanart': [],
}
images['landscape'] = self._getMultImages(movie.thumbs, 1)
images['banner'] = self._getMultImages(movie.banners, 1)
images['discart'] = self._getMultImages(self._trimDiscs(movie.discs, isHD), 1)
images['disc_art'] = self._getMultImages(self._trimDiscs(movie.discs, is_hd), 1)
images['clearart'] = self._getMultImages(movie.hdarts, 1)
if len(images['clearart']) is 0:
images['clearart'] = self._getMultImages(movie.arts, 1)
images['clear_art'] = self._getMultImages(movie.hdarts, 1)
if len(images['clear_art']) is 0:
images['clear_art'] = self._getMultImages(movie.arts, 1)
images['logo'] = self._getMultImages(movie.hdlogos, 1)
if len(images['logo']) is 0:
@@ -75,29 +75,30 @@ class FanartTV(MovieProvider):
if fanarts:
images['backdrop_original'] = fanarts[0]
images['extrafanart'] = fanarts[1:]
images['extra_fanart'] = fanarts[1:]
# TODO: Add support for extra backgrounds
#extraFanart = self._getMultImages(movie.backgrounds, -1)
#extra_fanart = self._getMultImages(movie.backgrounds, -1)
return images
def _trimDiscs(self, discImages, isHD):
'''
def _trimDiscs(self, disc_images, is_hd):
"""
Return a subset of discImages based on isHD. If isHD is true, only
bluray disc images will be returned. If isHD is false, only dvd disc
images will be returned. If the resulting list would be an empty list,
then the original list is returned instead.
'''
"""
trimmed = []
for disc in discImages:
if isHD and disc.disc_type == u'bluray':
for disc in disc_images:
if is_hd and disc.disc_type == u'bluray':
trimmed.append(disc)
elif not isHD and disc.disc_type == u'dvd':
elif not is_hd and disc.disc_type == u'dvd':
trimmed.append(disc)
if len(trimmed) is 0:
return discImages
return disc_images
else:
return trimmed
@@ -121,9 +122,9 @@ class FanartTV(MovieProvider):
for image in images:
if image.lang == u'en':
pool.append(image)
origPoolSize = len(pool)
orig_pool_size = len(pool)
while len(pool) > 0 and (n < 0 or origPoolSize - len(pool) < n):
while len(pool) > 0 and (n < 0 or orig_pool_size - len(pool) < n):
best = None
highscore = -1
for image in pool:
@@ -147,6 +148,7 @@ class FanartTV(MovieProvider):
return bool(qualityDef.get('hd'))
return False
config = [{
'name': 'fanarttv',
'groups': [
@@ -90,8 +90,8 @@ class TheMovieDb(MovieProvider):
# Get extra artwork via Fanart.TV and merge into images dict
try:
extraArt = fireEvent('movie.extraart', identifier)[0]
result['images'] = dict(result['images'].items() + extraArt.items())
extra_art = fireEvent('movie.extra_art', identifier)[0]
result['images'] = dict(result['images'].items() + extra_art.items())
except IndexError:
pass
@@ -108,7 +108,7 @@ class TheMovieDb(MovieProvider):
poster = self.getImage(movie, type = 'poster', size = 'poster')
poster_original = self.getImage(movie, type = 'poster', size = 'original')
backdrop_original = self.getImage(movie, type = 'backdrop', size = 'original')
extrathumbs = self.getMultImages(movie, type='backdrops', size='original', n=self.MAX_EXTRATHUMBS, skipfirst=True)
extra_thumbs = self.getMultImages(movie, type = 'backdrops', size = 'original', n = self.MAX_EXTRATHUMBS, skipfirst = True)
images = {
'poster': [poster] if poster else [],
@@ -116,7 +116,7 @@ class TheMovieDb(MovieProvider):
'poster_original': [poster_original] if poster_original else [],
'backdrop_original': [backdrop_original] if backdrop_original else [],
'actors': {},
'extrathumbs': extrathumbs
'extra_thumbs': extra_thumbs
}
# Genres
@@ -182,22 +182,24 @@ class TheMovieDb(MovieProvider):
return image_url
def getMultImages(self, movie, type='backdrops', size='original', n=-1, skipfirst=False):
'''
def getMultImages(self, movie, type = 'backdrops', size = 'original', n = -1, skipfirst = False):
"""
If n < 0, return all images. Otherwise return n images.
If n > len(getattr(movie, type)), then return all images.
If skipfirst is True, then it will skip getattr(movie, type)[0]. This
is because backdrops[0] is typically backdrop.
'''
"""
image_urls = []
try:
images = getattr(movie, type)
if n < 0 or n > len(images):
numImages = len(images)
num_images = len(images)
else:
numImages = n
for i in range(int(skipfirst), numImages + int(skipfirst)):
image_urls.append(images[i].geturl(size=size))
num_images = n
for i in range(int(skipfirst), num_images + int(skipfirst)):
image_urls.append(images[i].geturl(size = size))
except:
log.debug('Failed getting %i %s.%s for "%s"', (n, type, size, ss(str(movie))))
@@ -44,27 +44,27 @@ class MovieMetaData(MetaDataBase):
except:
log.error('Unable to create %s file: %s', ('nfo', traceback.format_exc()))
for file_type in ['thumbnail', 'fanart', 'banner', 'discart', 'logo', 'clearart', 'landscape', 'extrathumbs', 'extrafanart']:
for file_type in ['thumbnail', 'fanart', 'banner', 'disc_art', 'logo', 'clear_art', 'landscape', 'extra_thumbs', 'extra_fanart']:
try:
if file_type == 'thumbnail':
numImages = len(movie_info['images']['poster_original'])
num_images = len(movie_info['images']['poster_original'])
elif file_type == 'fanart':
numImages = len(movie_info['images']['backdrop_original'])
num_images = len(movie_info['images']['backdrop_original'])
else:
numImages = len(movie_info['images'][file_type])
num_images = len(movie_info['images'][file_type])
for i in range(numImages):
for i in range(num_images):
self._createType(meta_name, root, movie_info, group, file_type, i)
except:
log.error('Unable to create %s file: %s', (file_type, traceback.format_exc()))
def _createType(self, meta_name, root, movie_info, group, file_type, i):# Get file path
def _createType(self, meta_name, root, movie_info, group, file_type, i): # Get file path
name = getattr(self, 'get' + file_type.capitalize() + 'Name')(meta_name, root, i)
if name and (self.conf('meta_' + file_type) or self.conf('meta_' + file_type) is None):
# Get file content
content = getattr(self, 'get' + file_type.capitalize())(movie_info=movie_info, data=group, i=i)
content = getattr(self, 'get' + file_type.capitalize())(movie_info = movie_info, data = group, i = i)
if content:
log.debug('Creating %s file: %s', (file_type, name))
if os.path.isfile(content):
@@ -123,7 +123,7 @@ class MovieMetaData(MetaDataBase):
def getNfoName(self, name, root, i):
return
def getNfo(self, movie_info=None, data=None, i=0):
def getNfo(self, movie_info = None, data = None, i = 0):
if not data: data = {}
if not movie_info: movie_info = {}
@@ -148,39 +148,39 @@ class MovieMetaData(MetaDataBase):
def getFanart(self, movie_info = None, data = None, i = 0):
if not data: data = {}
if not movie_info: movie_info = {}
return self.getThumbnail(movie_info=movie_info, data=data, wanted_file_type='backdrop_original', i=i)
return self.getThumbnail(movie_info = movie_info, data = data, wanted_file_type = 'backdrop_original', i = i)
def getBanner(self, movie_info=None, data=None, i=0):
def getBanner(self, movie_info = None, data = None, i = 0):
if not data: data = {}
if not movie_info: movie_info = {}
return self.getThumbnail(movie_info=movie_info, data=data, wanted_file_type='banner', i=i)
return self.getThumbnail(movie_info = movie_info, data = data, wanted_file_type = 'banner', i = i)
def getClearart(self, movie_info=None, data=None, i=0):
def getClearart(self, movie_info = None, data = None, i = 0):
if not data: data = {}
if not movie_info: movie_info = {}
return self.getThumbnail(movie_info=movie_info, data=data, wanted_file_type='clearart', i=i)
return self.getThumbnail(movie_info = movie_info, data = data, wanted_file_type = 'clear_art', i = i)
def getLogo(self, movie_info=None, data=None, i=0):
def getLogo(self, movie_info = None, data = None, i = 0):
if not data: data = {}
if not movie_info: movie_info = {}
return self.getThumbnail(movie_info=movie_info, data=data, wanted_file_type='logo', i=i)
return self.getThumbnail(movie_info = movie_info, data = data, wanted_file_type = 'logo', i = i)
def getDiscart(self, movie_info=None, data=None, i=0):
def getDiscart(self, movie_info = None, data = None, i = 0):
if not data: data = {}
if not movie_info: movie_info = {}
return self.getThumbnail(movie_info=movie_info, data=data, wanted_file_type='discart', i=i)
return self.getThumbnail(movie_info = movie_info, data = data, wanted_file_type = 'disc_art', i = i)
def getLandscape(self, movie_info=None, data=None, i=0):
def getLandscape(self, movie_info = None, data = None, i = 0):
if not data: data = {}
if not movie_info: movie_info = {}
return self.getThumbnail(movie_info=movie_info, data=data, wanted_file_type='landscape', i=i)
return self.getThumbnail(movie_info = movie_info, data= data, wanted_file_type = 'landscape', i = i)
def getExtrathumbs(self, movie_info=None, data=None, i=0):
def getExtrathumbs(self, movie_info = None, data = None, i = 0):
if not data: data = {}
if not movie_info: movie_info = {}
return self.getThumbnail(movie_info=movie_info, data=data, wanted_file_type='extrathumbs', i=i)
return self.getThumbnail(movie_info = movie_info, data = data, wanted_file_type = 'extra_thumbs', i = i)
def getExtrafanart(self, movie_info=None, data=None, i=0):
def getExtrafanart(self, movie_info = None, data = None, i = 0):
if not data: data = {}
if not movie_info: movie_info = {}
return self.getThumbnail(movie_info=movie_info, data=data, wanted_file_type='extrafanart', i=i)
return self.getThumbnail(movie_info = movie_info, data = data, wanted_file_type = 'extra_fanart', i = i)
@@ -30,28 +30,28 @@ class XBMC(MovieMetaData):
return self.createMetaName(self.conf('meta_banner_name'), name, root)
def getClearartName(self, name, root, i):
return self.createMetaName(self.conf('meta_clearart_name'), name, root)
return self.createMetaName(self.conf('meta_clear_art_name'), name, root)
def getLogoName(self, name, root, i):
return self.createMetaName(self.conf('meta_logo_name'), name, root)
def getDiscartName(self, name, root, i):
return self.createMetaName(self.conf('meta_discart_name'), name, root)
return self.createMetaName(self.conf('meta_disc_art_name'), name, root)
def getLandscapeName(self, name, root, i):
return self.createMetaName(self.conf('meta_landscape_name'), name, root)
def getExtrathumbsName(self, name, root, i):
return self.createMetaNameMult(self.conf('meta_extrathumbs_name'), name, root, i)
return self.createMetaNameMult(self.conf('meta_extra_thumbs_name'), name, root, i)
def getExtrafanartName(self, name, root, i):
return self.createMetaNameMult(self.conf('meta_extrafanart_name'), name, root, i)
return self.createMetaNameMult(self.conf('meta_extra_fanart_name'), name, root, i)
def createMetaName(self, basename, name, root):
return os.path.join(root, basename.replace('%s', name))
def createMetaNameMult(self, basename, name, root, i):
return os.path.join(root, basename.replace('%s', name).replace('%i', str(i + 1)))
return os.path.join(root, basename.replace('%s', name).replace('<i>', str(i + 1)))
def getNfo(self, movie_info=None, data=None, i=0):
if not data: data = {}
@@ -153,39 +153,25 @@ class XBMC(MovieMetaData):
for image_url in movie_info['images']['poster_original']:
image = SubElement(nfoxml, 'thumb')
image.text = toUnicode(image_url)
fanart = SubElement(nfoxml, 'fanart')
for image_url in movie_info['images']['backdrop_original']:
image = SubElement(fanart, 'thumb')
image.text = toUnicode(image_url)
banner = SubElement(nfoxml, 'banner')
for image_url in movie_info['images']['banner']:
image = SubElement(banner, 'thumb')
image.text = toUnicode(image_url)
discart = SubElement(nfoxml, 'discart')
for image_url in movie_info['images']['discart']:
image = SubElement(discart, 'thumb')
image.text = toUnicode(image_url)
logo = SubElement(nfoxml, 'logo')
for image_url in movie_info['images']['logo']:
image = SubElement(logo, 'thumb')
image.text = toUnicode(image_url)
clearart = SubElement(nfoxml, 'clearart')
for image_url in movie_info['images']['clearart']:
image = SubElement(clearart, 'thumb')
image.text = toUnicode(image_url)
landscape = SubElement(nfoxml, 'landscape')
for image_url in movie_info['images']['landscape']:
image = SubElement(landscape, 'thumb')
image.text = toUnicode(image_url)
extrathumb = SubElement(nfoxml, 'extrathumb')
for image_url in movie_info['images']['extrathumbs']:
image = SubElement(extrathumb, 'thumb')
image.text = toUnicode(image_url)
extrafanart = SubElement(nfoxml, 'extrafanart')
for image_url in movie_info['images']['extrafanart']:
image = SubElement(extrafanart, 'thumb')
image.text = toUnicode(image_url)
image_types = [
('fanart', 'backdrop_original'),
('banner', 'banner'),
('discart', 'disc_art'),
('logo', 'logo'),
('clearart', 'clear_art'),
('landscape', 'landscape'),
('extrathumb', 'extra_thumbs'),
('extrafanart', 'extra_fanart'),
]
for image_type in image_types:
sub, type = image_type
sub_element = SubElement(nfoxml, sub)
for image_url in movie_info['images'][type]:
image = SubElement(sub_element, 'thumb')
image.text = toUnicode(image_url)
# Add trailer if found
trailer_found = False
@@ -295,7 +281,7 @@ config = [{
{
'name': 'meta_banner',
'label': 'Banner',
'default': True,
'default': False,
'type': 'bool'
},
{
@@ -305,13 +291,13 @@ config = [{
'advanced': True,
},
{
'name': 'meta_clearart',
'name': 'meta_clear_art',
'label': 'ClearArt',
'default': True,
'default': False,
'type': 'bool'
},
{
'name': 'meta_clearart_name',
'name': 'meta_clear_art_name',
'label': 'ClearArt filename',
'default': 'clearart.png',
'advanced': True,
@@ -319,11 +305,11 @@ config = [{
{
'name': 'meta_disc',
'label': 'DiscArt',
'default': True,
'default': False,
'type': 'bool'
},
{
'name': 'meta_discart_name',
'name': 'meta_disc_art_name',
'label': 'DiscArt filename',
'default': 'disc.png',
'advanced': True,
@@ -331,7 +317,7 @@ config = [{
{
'name': 'meta_landscape',
'label': 'Landscape',
'default': True,
'default': False,
'type': 'bool'
},
{
@@ -343,7 +329,7 @@ config = [{
{
'name': 'meta_logo',
'label': 'ClearLogo',
'default': True,
'default': False,
'type': 'bool'
},
{
@@ -353,27 +339,29 @@ config = [{
'advanced': True,
},
{
'name': 'meta_extrathumbs',
'name': 'meta_extra_thumbs',
'label': 'Extrathumbs',
'default': True,
'default': False,
'type': 'bool'
},
{
'name': 'meta_extrathumbs_name',
'label': 'Extrathumbs filename (%i is the image number, and must be included to have multiple images).',
'default': 'extrathumbs/thumb%i.jpg',
'name': 'meta_extra_thumbs_name',
'label': 'Extrathumbs filename',
'description': '&lt;i&gt; is the image number, and must be included to have multiple images',
'default': 'extrathumbs/thumb<i>.jpg',
'advanced': True
},
{
'name': 'meta_extrafanart',
'lavel': 'Extrafanart',
'default': True,
'name': 'meta_extra_fanart',
'label': 'Extrafanart',
'default': False,
'type': 'bool'
},
{
'name': 'meta_extrafanart_name',
'label': 'Extrafanart filename (%i is the image number, and must be included to have multiple images).',
'default': 'extrafanart/extrafanart%i.jpg',
'name': 'meta_extra_fanart_name',
'label': 'Extrafanart filename',
'default': 'extrafanart/extrafanart<i>.jpg',
'description': '&lt;i&gt; is the image number, and must be included to have multiple images',
'advanced': True
}
],