From f692fd0202b6ade2f5fdd97a4217350594e060c2 Mon Sep 17 00:00:00 2001 From: Ruud Date: Sat, 18 May 2013 21:53:17 +0200 Subject: [PATCH] Make sure info isn't not overwriten by none fix #1724 --- .../core/providers/movie/_modifier/main.py | 22 +++++++++++++++++++ .../providers/movie/couchpotatoapi/main.py | 3 ++- .../core/providers/movie/omdbapi/main.py | 7 +++--- .../core/providers/movie/themoviedb/main.py | 5 +++-- 4 files changed, 31 insertions(+), 6 deletions(-) diff --git a/couchpotato/core/providers/movie/_modifier/main.py b/couchpotato/core/providers/movie/_modifier/main.py index 12d1e325..18ae6e7e 100644 --- a/couchpotato/core/providers/movie/_modifier/main.py +++ b/couchpotato/core/providers/movie/_modifier/main.py @@ -11,6 +11,25 @@ log = CPLog(__name__) class MovieResultModifier(Plugin): + default_info = { + 'tmdb_id': 0, + 'titles': [], + 'original_title': '', + 'year': 0, + 'images': { + 'poster': [], + 'backdrop': [], + 'poster_original': [], + 'backdrop_original': [] + }, + 'runtime': 0, + 'plot': '', + 'tagline': '', + 'imdb': '', + 'genres': [], + 'release_date': {} + } + def __init__(self): addEvent('result.modify.movie.search', self.combineOnIMDB) addEvent('result.modify.movie.info', self.checkLibrary) @@ -67,6 +86,9 @@ class MovieResultModifier(Plugin): return temp def checkLibrary(self, result): + + result = mergeDicts(self.default_info, result) + if result and result.get('imdb'): return mergeDicts(result, self.getLibraryTags(result['imdb'])) return result diff --git a/couchpotato/core/providers/movie/couchpotatoapi/main.py b/couchpotato/core/providers/movie/couchpotatoapi/main.py index 3646d1f0..24a4be7b 100644 --- a/couchpotato/core/providers/movie/couchpotatoapi/main.py +++ b/couchpotato/core/providers/movie/couchpotatoapi/main.py @@ -70,7 +70,8 @@ class CouchPotatoApi(MovieProvider): return result = self.getJsonData(self.urls['info'] % identifier, headers = self.getRequestHeaders()) - if result: return result + if result: + return dict((k, v) for k, v in result.iteritems() if v) return {} diff --git a/couchpotato/core/providers/movie/omdbapi/main.py b/couchpotato/core/providers/movie/omdbapi/main.py index cdfece0a..89990747 100644 --- a/couchpotato/core/providers/movie/omdbapi/main.py +++ b/couchpotato/core/providers/movie/omdbapi/main.py @@ -86,7 +86,7 @@ class OMDBAPI(MovieProvider): movie_data = { 'via_imdb': True, 'titles': [movie.get('Title')] if movie.get('Title') else [], - 'original_title': movie.get('Title', ''), + 'original_title': movie.get('Title'), 'images': { 'poster': [movie.get('Poster', '')] if movie.get('Poster') and len(movie.get('Poster', '')) > 4 else [], }, @@ -96,14 +96,15 @@ class OMDBAPI(MovieProvider): }, 'imdb': str(movie.get('imdbID', '')), 'runtime': self.runtimeToMinutes(movie.get('Runtime', '')), - 'released': movie.get('Released', ''), + 'released': movie.get('Released'), 'year': year if isinstance(year, (int)) else None, - 'plot': movie.get('Plot', ''), + 'plot': movie.get('Plot'), 'genres': splitString(movie.get('Genre', '')), 'directors': splitString(movie.get('Director', '')), 'writers': splitString(movie.get('Writer', '')), 'actors': splitString(movie.get('Actors', '')), } + movie_data = dict((k, v) for k, v in movie_data.iteritems() if v) except: log.error('Failed parsing IMDB API json: %s', traceback.format_exc()) diff --git a/couchpotato/core/providers/movie/themoviedb/main.py b/couchpotato/core/providers/movie/themoviedb/main.py index 0554a901..43eb22b3 100644 --- a/couchpotato/core/providers/movie/themoviedb/main.py +++ b/couchpotato/core/providers/movie/themoviedb/main.py @@ -170,11 +170,12 @@ class TheMovieDb(MovieProvider): 'runtime': movie.get('runtime'), 'released': movie.get('released'), 'year': year, - 'plot': movie.get('overview', ''), - 'tagline': '', + 'plot': movie.get('overview'), 'genres': genres, } + movie_data = dict((k, v) for k, v in movie_data.iteritems() if v) + # Add alternative names for alt in ['original_name', 'alternative_name']: alt_name = toUnicode(movie.get(alt))