From bce5a9f8f9f1366b08a71e8d048ea7b9ca902af8 Mon Sep 17 00:00:00 2001 From: Ruud Date: Sun, 18 Sep 2011 22:16:31 +0200 Subject: [PATCH] XBMC Metadata --- couchpotato/core/plugins/library/main.py | 2 +- couchpotato/core/plugins/metadata/__init__.py | 6 ----- couchpotato/core/plugins/metadata/main.py | 16 ----------- couchpotato/core/providers/metadata/base.py | 27 ++++++++++++++----- .../core/providers/metadata/xbmc/main.py | 1 + .../core/providers/movie/themoviedb/main.py | 23 +++++++++++----- 6 files changed, 38 insertions(+), 37 deletions(-) delete mode 100644 couchpotato/core/plugins/metadata/__init__.py delete mode 100644 couchpotato/core/plugins/metadata/main.py diff --git a/couchpotato/core/plugins/library/main.py b/couchpotato/core/plugins/library/main.py index 986ba3de..b45c7f8d 100644 --- a/couchpotato/core/plugins/library/main.py +++ b/couchpotato/core/plugins/library/main.py @@ -110,7 +110,7 @@ class LibraryPlugin(Plugin): continue file_path = fireEvent('file.download', url = image, single = True) - file = fireEvent('file.add', path = file_path, type = ('image', type[:-1]), single = True) + file = fireEvent('file.add', path = file_path, type = ('image', type), single = True) try: file = db.query(File).filter_by(id = file.get('id')).one() library.files.append(file) diff --git a/couchpotato/core/plugins/metadata/__init__.py b/couchpotato/core/plugins/metadata/__init__.py deleted file mode 100644 index 7114d26e..00000000 --- a/couchpotato/core/plugins/metadata/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -from .main import MetaData - -def start(): - return MetaData() - -config = [] diff --git a/couchpotato/core/plugins/metadata/main.py b/couchpotato/core/plugins/metadata/main.py deleted file mode 100644 index 232ef4e2..00000000 --- a/couchpotato/core/plugins/metadata/main.py +++ /dev/null @@ -1,16 +0,0 @@ -from couchpotato.core.event import addEvent, fireEvent -from couchpotato.core.logger import CPLog -from couchpotato.core.plugins.base import Plugin - -log = CPLog(__name__) - - -class MetaData(Plugin): - - def __init__(self): - addEvent('renamer.after', self.add) - - def add(self, data = {}): - log.info('Getting meta data') - - fireEvent('metadata.create', data) diff --git a/couchpotato/core/providers/metadata/base.py b/couchpotato/core/providers/metadata/base.py index 92ce9470..3672e731 100644 --- a/couchpotato/core/providers/metadata/base.py +++ b/couchpotato/core/providers/metadata/base.py @@ -1,6 +1,9 @@ from couchpotato.core.event import addEvent, fireEvent from couchpotato.core.logger import CPLog from couchpotato.core.plugins.base import Plugin +import os.path +import shutil +import traceback log = CPLog(__name__) @@ -10,7 +13,7 @@ class MetaDataBase(Plugin): enabled_option = 'meta_enabled' def __init__(self): - addEvent('metadata.create', self.create) + addEvent('renamer.after', self.create) def create(self, release): if self.isDisabled(): return @@ -29,11 +32,14 @@ class MetaDataBase(Plugin): # Get file content content = getattr(self, 'get' + type.capitalize())(release) if content: - log.debug('Creating %s file: %s' % (type, name)) - self.createFile(name, content) + if os.path.isfile(content): + shutil.copy2(content, name) + else: + log.debug('Creating %s file: %s' % (type, name)) + self.createFile(name, content) except Exception, e: - log.error('Unable to create %s file: %s' % (type, e)) + log.error('Unable to create %s file: %s' % (type, traceback.format_exc())) def getRootName(self, data): return @@ -50,8 +56,15 @@ class MetaDataBase(Plugin): def getNfo(self, data): return - def getThumbnail(self, data): - return + def getThumbnail(self, data, file_type = 'poster_original'): + file_types = fireEvent('file.types', single = True) + for type in file_types: + if type.get('identifier') == file_type: + break + + for file in data['library'].get('files'): + if file.get('type_id') is type.get('id'): + return file.get('path') def getFanart(self, data): - return + return self.getThumbnail(data, file_type = 'backdrop_original') diff --git a/couchpotato/core/providers/metadata/xbmc/main.py b/couchpotato/core/providers/metadata/xbmc/main.py index 0f83e7b3..3fb321c7 100644 --- a/couchpotato/core/providers/metadata/xbmc/main.py +++ b/couchpotato/core/providers/metadata/xbmc/main.py @@ -1,3 +1,4 @@ +from couchpotato.core.event import fireEvent from couchpotato.core.helpers.encoding import toUnicode from couchpotato.core.providers.metadata.base import MetaDataBase from xml.etree.ElementTree import Element, SubElement, tostring diff --git a/couchpotato/core/providers/movie/themoviedb/main.py b/couchpotato/core/providers/movie/themoviedb/main.py index a5823f8d..4def5be4 100644 --- a/couchpotato/core/providers/movie/themoviedb/main.py +++ b/couchpotato/core/providers/movie/themoviedb/main.py @@ -112,12 +112,19 @@ class TheMovieDb(MovieProvider): def parseMovie(self, movie): - # Poster url + # Images poster = self.getImage(movie, type = 'poster') backdrop = self.getImage(movie, type = 'backdrop') + poster_original = self.getImage(movie, type = 'poster', size = 'mid') + backdrop_original = self.getImage(movie, type = 'backdrop', size = 'w1280') + + print poster_original, backdrop_original # Genres - genres = self.getCategory(movie, 'genre') + try: + genres = self.getCategory(movie, 'genre') + except: + genres = [] # 1900 is the same as None year = str(movie.get('released', 'none'))[:4] @@ -129,8 +136,10 @@ class TheMovieDb(MovieProvider): 'titles': [toUnicode(movie.get('name'))], 'original_title': movie.get('original_name'), 'images': { - 'posters': [poster], - 'backdrops': [backdrop], + 'poster': [poster], + 'backdrop': [backdrop], + 'poster_original': [poster_original], + 'backdrop_original': [backdrop_original], }, 'imdb': movie.get('imdb_id'), 'runtime': movie.get('runtime'), @@ -149,12 +158,12 @@ class TheMovieDb(MovieProvider): return movie_data - def getImage(self, movie, type = 'poster'): + def getImage(self, movie, type = 'poster', size = 'thumb'): image = '' for image in movie.get('images', []): - if(image.get('type') == type): - image = image.get('thumb') + if(image.get('type') == type) and image.get(size): + image = image.get(size) break return image