From 6be3e0f4baa8c6732bd13c9c10da5d593889bad9 Mon Sep 17 00:00:00 2001 From: Ruud Date: Sat, 17 Dec 2016 14:02:04 +0100 Subject: [PATCH] Don't try to remove language from themoviedb if it isn't in the list --- .../core/media/movie/providers/info/themoviedb.py | 57 +++++++++++----------- 1 file changed, 29 insertions(+), 28 deletions(-) diff --git a/couchpotato/core/media/movie/providers/info/themoviedb.py b/couchpotato/core/media/movie/providers/info/themoviedb.py index 31fb06b..9a242e7 100644 --- a/couchpotato/core/media/movie/providers/info/themoviedb.py +++ b/couchpotato/core/media/movie/providers/info/themoviedb.py @@ -27,7 +27,7 @@ class TheMovieDb(MovieProvider): ak = ['ZjdmNTE3NzU4NzdlMGJiNjcwMzUyMDk1MmIzYzc4NDA=', 'ZTIyNGZlNGYzZmVjNWY3YjU1NzA2NDFmN2NkM2RmM2E=', 'YTNkYzExMWU2NjEwNWY2Mzg3ZTk5MzkzODEzYWU0ZDU=', 'ZjZiZDY4N2ZmYTYzY2QyODJiNmZmMmM2ODc3ZjI2Njk='] - + languages = [ 'en' ] default_language = 'en' @@ -45,19 +45,20 @@ class TheMovieDb(MovieProvider): self.conf('api_key', '') languages = self.getLanguages() - + # languages should never be empty, the first language is the default language used for all the description details self.default_language = languages[0] - + # en is always downloaded and it is the fallback if 'en' in languages: languages.remove('en') - + # default language has a special management - languages.remove(self.default_language) - + if self.default_language in languages: + languages.remove(self.default_language) + self.languages = languages - + configuration = self.request('configuration') if configuration: self.configuration = configuration @@ -124,19 +125,19 @@ class TheMovieDb(MovieProvider): }) if not movie: return - + movie_default = movie if self.default_language == 'en' else self.request('movie/%s' % movie.get('id'), { 'append_to_response': 'alternative_titles' + (',images,casts' if extended else ''), 'language': self.default_language }) - + movie_default = movie_default or movie - + movie_others = [ self.request('movie/%s' % movie.get('id'), { 'append_to_response': 'alternative_titles' + (',images,casts' if extended else ''), 'language': language }) for language in self.languages] if self.languages else [] - + # Images poster = self.getImage(movie, type = 'poster', size = 'w154') poster_original = self.getImage(movie, type = 'poster', size = 'original') @@ -176,7 +177,7 @@ class TheMovieDb(MovieProvider): images['actors'][toUnicode(cast_item.get('name'))] = self.getImage(cast_item, type = 'profile', size = 'original') except: log.debug('Error getting cast info for %s: %s', (cast_item, traceback.format_exc())) - + movie_data = { 'type': 'movie', 'via_tmdb': True, @@ -199,17 +200,17 @@ class TheMovieDb(MovieProvider): # Add alternative names movies = [ movie ] + movie_others if movie == movie_default else [ movie, movie_default ] + movie_others movie_titles = [ self.getTitles(movie) for movie in movies ] - + all_titles = sorted(list(itertools.chain.from_iterable(movie_titles))) - + alternate_titles = movie_data['titles'] - + for title in all_titles: if title and title not in alternate_titles and title.lower() != 'none' and title is not None: alternate_titles.append(title) - - movie_data['titles'] = alternate_titles - + + movie_data['titles'] = alternate_titles + return movie_data def getImage(self, movie, type = 'poster', size = 'poster'): @@ -261,26 +262,26 @@ class TheMovieDb(MovieProvider): def getApiKey(self): key = self.conf('api_key') return bd(random.choice(self.ak)) if key == '' else key - + def getLanguages(self): languages = splitString(Env.setting('languages', section = 'core')) if len(languages): return languages - + return [ 'en' ] - + def getTitles(self, movie): # add the title to the list - title = toUnicode(movie.get('title')) - + title = toUnicode(movie.get('title')) + titles = [title] if title else [] - - # add the original_title to the list + + # add the original_title to the list alternate_title = toUnicode(movie.get('original_title')) - + if alternate_title and alternate_title not in titles: titles.append(alternate_title) - + # Add alternative titles alternate_titles = movie.get('alternative_titles', {}).get('titles', []) @@ -288,7 +289,7 @@ class TheMovieDb(MovieProvider): alt_name = toUnicode(alt.get('title')) if alt_name and alt_name not in titles and alt_name.lower() != 'none' and alt_name is not None: titles.append(alt_name) - + return titles;