Make sure info isn't not overwriten by none

fix #1724
This commit is contained in:
Ruud
2013-05-18 21:53:17 +02:00
parent e7b4de56f2
commit f692fd0202
4 changed files with 31 additions and 6 deletions
@@ -11,6 +11,25 @@ log = CPLog(__name__)
class MovieResultModifier(Plugin): 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): def __init__(self):
addEvent('result.modify.movie.search', self.combineOnIMDB) addEvent('result.modify.movie.search', self.combineOnIMDB)
addEvent('result.modify.movie.info', self.checkLibrary) addEvent('result.modify.movie.info', self.checkLibrary)
@@ -67,6 +86,9 @@ class MovieResultModifier(Plugin):
return temp return temp
def checkLibrary(self, result): def checkLibrary(self, result):
result = mergeDicts(self.default_info, result)
if result and result.get('imdb'): if result and result.get('imdb'):
return mergeDicts(result, self.getLibraryTags(result['imdb'])) return mergeDicts(result, self.getLibraryTags(result['imdb']))
return result return result
@@ -70,7 +70,8 @@ class CouchPotatoApi(MovieProvider):
return return
result = self.getJsonData(self.urls['info'] % identifier, headers = self.getRequestHeaders()) 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 {} return {}
@@ -86,7 +86,7 @@ class OMDBAPI(MovieProvider):
movie_data = { movie_data = {
'via_imdb': True, 'via_imdb': True,
'titles': [movie.get('Title')] if movie.get('Title') else [], 'titles': [movie.get('Title')] if movie.get('Title') else [],
'original_title': movie.get('Title', ''), 'original_title': movie.get('Title'),
'images': { 'images': {
'poster': [movie.get('Poster', '')] if movie.get('Poster') and len(movie.get('Poster', '')) > 4 else [], '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', '')), 'imdb': str(movie.get('imdbID', '')),
'runtime': self.runtimeToMinutes(movie.get('Runtime', '')), 'runtime': self.runtimeToMinutes(movie.get('Runtime', '')),
'released': movie.get('Released', ''), 'released': movie.get('Released'),
'year': year if isinstance(year, (int)) else None, 'year': year if isinstance(year, (int)) else None,
'plot': movie.get('Plot', ''), 'plot': movie.get('Plot'),
'genres': splitString(movie.get('Genre', '')), 'genres': splitString(movie.get('Genre', '')),
'directors': splitString(movie.get('Director', '')), 'directors': splitString(movie.get('Director', '')),
'writers': splitString(movie.get('Writer', '')), 'writers': splitString(movie.get('Writer', '')),
'actors': splitString(movie.get('Actors', '')), 'actors': splitString(movie.get('Actors', '')),
} }
movie_data = dict((k, v) for k, v in movie_data.iteritems() if v)
except: except:
log.error('Failed parsing IMDB API json: %s', traceback.format_exc()) log.error('Failed parsing IMDB API json: %s', traceback.format_exc())
@@ -170,11 +170,12 @@ class TheMovieDb(MovieProvider):
'runtime': movie.get('runtime'), 'runtime': movie.get('runtime'),
'released': movie.get('released'), 'released': movie.get('released'),
'year': year, 'year': year,
'plot': movie.get('overview', ''), 'plot': movie.get('overview'),
'tagline': '',
'genres': genres, 'genres': genres,
} }
movie_data = dict((k, v) for k, v in movie_data.iteritems() if v)
# Add alternative names # Add alternative names
for alt in ['original_name', 'alternative_name']: for alt in ['original_name', 'alternative_name']:
alt_name = toUnicode(movie.get(alt)) alt_name = toUnicode(movie.get(alt))