Fanart PR cleanup
This commit is contained in:
@@ -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
|
||||
}
|
||||
],
|
||||
|
||||
@@ -3,8 +3,6 @@ import json
|
||||
import socket
|
||||
import traceback
|
||||
import urllib
|
||||
import time
|
||||
import os
|
||||
|
||||
from couchpotato.core.helpers.variable import splitString, getTitle
|
||||
from couchpotato.core.logger import CPLog
|
||||
@@ -54,7 +52,7 @@ class XBMC(Notification):
|
||||
response = self.notifyXBMCnoJSON(host, {'title': self.default_title, 'message': message})
|
||||
|
||||
if data and data.get('destination_dir') and (not self.conf('only_first') or hosts.index(host) == 0):
|
||||
response += self.request(host, [('VideoLibrary.Scan', {})])
|
||||
response += self.request(host, [('VideoLibrary.Scan', None, {})])
|
||||
max_successful += 1
|
||||
|
||||
max_successful += 1
|
||||
@@ -68,50 +66,6 @@ class XBMC(Notification):
|
||||
|
||||
except:
|
||||
log.error('Failed parsing results: %s', traceback.format_exc())
|
||||
|
||||
if self.conf('run_artwork_downloader') and data and self.use_json_notifications.get(host):
|
||||
time.sleep(self.conf('run_artwork_downloader_delay'))
|
||||
|
||||
if self.conf('force_full_scan'):
|
||||
calls = [('Addons.ExecuteAddon', None, {'addonid': 'script.artwork.downloader'})]
|
||||
max_successful += len(calls)
|
||||
response = self.request(host, calls)
|
||||
|
||||
try:
|
||||
if response[0].get('result') and result['result'] == 'OK':
|
||||
successful += 1
|
||||
elif response[0].get('error'):
|
||||
log.error('XBMC error; %s: %s (%s)', (result['id'], result['error']['message'], result['error']['code']))
|
||||
except:
|
||||
log.error('Failed parsing results: %s', traceback.format_exc())
|
||||
else:
|
||||
calls = [('VideoLibrary.GetMovies', 'libMovies', {"filter":{"field": "title", "operator": "is", "value": data['media']['title'], "year": data['media']['info']['year']}})]
|
||||
max_successful += len(calls)
|
||||
response = self.request(host, calls)
|
||||
|
||||
dbid = None
|
||||
try:
|
||||
if response[0].get('result'):
|
||||
successful += 1
|
||||
dbid = response[0]['result']['movies'][-1]['movieid']
|
||||
elif response[0].get('error'):
|
||||
log.error('XBMC error; %s: %s (%s)', (result['id'], result['error']['message'], result['error']['code']))
|
||||
except:
|
||||
log.error('Failed parsing results: %s', traceback.format_exc())
|
||||
|
||||
if dbid is not None:
|
||||
calls = [('Addons.ExecuteAddon', None, {'addonid': 'script.artwork.downloader', 'params':{'media_type': 'movie', 'dbid': str(dbid)}})]
|
||||
|
||||
max_successful += len(calls)
|
||||
response = self.request(host, calls)
|
||||
|
||||
try:
|
||||
if response[0].get('result') and result['result'] == 'OK':
|
||||
successful += 1
|
||||
elif response[0].get('error'):
|
||||
log.error('XBMC error; %s: %s (%s)', (result['id'], result['error']['message'], result['error']['code']))
|
||||
except:
|
||||
log.error('Failed parsing results: %s', traceback.format_exc())
|
||||
|
||||
return successful == max_successful
|
||||
|
||||
@@ -232,14 +186,11 @@ class XBMC(Notification):
|
||||
for req in do_requests:
|
||||
method, id, kwargs = req
|
||||
|
||||
if id is None:
|
||||
id = method
|
||||
|
||||
data.append({
|
||||
'method': method,
|
||||
'params': kwargs,
|
||||
'jsonrpc': '2.0',
|
||||
'id': id,
|
||||
'id': id if id else method,
|
||||
})
|
||||
data = json.dumps(data)
|
||||
|
||||
@@ -273,7 +224,7 @@ config = [{
|
||||
'list': 'notification_providers',
|
||||
'name': 'xbmc',
|
||||
'label': 'XBMC',
|
||||
'description': 'v11 (Eden) and v12 (Frodo)',
|
||||
'description': 'v11 (Eden), v12 (Frodo), v13 (Gotham)',
|
||||
'options': [
|
||||
{
|
||||
'name': 'enabled',
|
||||
@@ -306,7 +257,7 @@ config = [{
|
||||
'default': 0,
|
||||
'type': 'bool',
|
||||
'advanced': True,
|
||||
'description': 'Only scan new movie folder at remote XBMC servers. Works if movie location is the same.',
|
||||
'description': ('Only scan new movie folder at remote XBMC servers.', 'Useful if the XBMC path is different from the path CPS uses.'),
|
||||
},
|
||||
{
|
||||
'name': 'force_full_scan',
|
||||
@@ -314,31 +265,15 @@ config = [{
|
||||
'default': 0,
|
||||
'type': 'bool',
|
||||
'advanced': True,
|
||||
'description': 'Do a full scan instead of only the new movie. Useful if the XBMC path is different from the path CPS uses.',
|
||||
'description': ('Do a full scan instead of only the new movie.', 'Useful if the XBMC path is different from the path CPS uses.'),
|
||||
},
|
||||
{
|
||||
'name': 'on_snatch',
|
||||
'default': 0,
|
||||
'default': False,
|
||||
'type': 'bool',
|
||||
'advanced': True,
|
||||
'description': 'Also send message when movie is snatched.',
|
||||
},
|
||||
{
|
||||
'name': 'run_artwork_downloader',
|
||||
'label': 'Run the Artwork Downloader',
|
||||
'default': 0,
|
||||
'type': 'bool',
|
||||
'advanced': True,
|
||||
'description': 'Runs the Artwork Downloader script to initialize/download artwork. (Requires the Artwork Downloader addon and XBMC Frodo or later)'
|
||||
},
|
||||
{
|
||||
'name': 'run_artwork_downloader_delay',
|
||||
'label': 'Artwork Downloader delay',
|
||||
'default': 5,
|
||||
'type': 'int',
|
||||
'advanced': True,
|
||||
'description': 'Number of seconds to wait to start the Artwork Downloader script after notifying XBMC.',
|
||||
},
|
||||
],
|
||||
}
|
||||
],
|
||||
|
||||
Reference in New Issue
Block a user