Fanart PR cleanup
This commit is contained in:
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': '<i> 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': '<i> is the image number, and must be included to have multiple images',
|
||||
'advanced': True
|
||||
}
|
||||
],
|
||||
|
||||
Reference in new issue
Block a user