Browse Source

Don't try to remove language from themoviedb if it isn't in the list

pull/2238/merge
Ruud 9 years ago
parent
commit
6be3e0f4ba
  1. 57
      couchpotato/core/media/movie/providers/info/themoviedb.py

57
couchpotato/core/media/movie/providers/info/themoviedb.py

@ -27,7 +27,7 @@ class TheMovieDb(MovieProvider):
ak = ['ZjdmNTE3NzU4NzdlMGJiNjcwMzUyMDk1MmIzYzc4NDA=', 'ZTIyNGZlNGYzZmVjNWY3YjU1NzA2NDFmN2NkM2RmM2E=', ak = ['ZjdmNTE3NzU4NzdlMGJiNjcwMzUyMDk1MmIzYzc4NDA=', 'ZTIyNGZlNGYzZmVjNWY3YjU1NzA2NDFmN2NkM2RmM2E=',
'YTNkYzExMWU2NjEwNWY2Mzg3ZTk5MzkzODEzYWU0ZDU=', 'ZjZiZDY4N2ZmYTYzY2QyODJiNmZmMmM2ODc3ZjI2Njk='] 'YTNkYzExMWU2NjEwNWY2Mzg3ZTk5MzkzODEzYWU0ZDU=', 'ZjZiZDY4N2ZmYTYzY2QyODJiNmZmMmM2ODc3ZjI2Njk=']
languages = [ 'en' ] languages = [ 'en' ]
default_language = 'en' default_language = 'en'
@ -45,19 +45,20 @@ class TheMovieDb(MovieProvider):
self.conf('api_key', '') self.conf('api_key', '')
languages = self.getLanguages() languages = self.getLanguages()
# languages should never be empty, the first language is the default language used for all the description details # languages should never be empty, the first language is the default language used for all the description details
self.default_language = languages[0] self.default_language = languages[0]
# en is always downloaded and it is the fallback # en is always downloaded and it is the fallback
if 'en' in languages: if 'en' in languages:
languages.remove('en') languages.remove('en')
# default language has a special management # 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 self.languages = languages
configuration = self.request('configuration') configuration = self.request('configuration')
if configuration: if configuration:
self.configuration = configuration self.configuration = configuration
@ -124,19 +125,19 @@ class TheMovieDb(MovieProvider):
}) })
if not movie: if not movie:
return return
movie_default = movie if self.default_language == 'en' else self.request('movie/%s' % movie.get('id'), { 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 ''), 'append_to_response': 'alternative_titles' + (',images,casts' if extended else ''),
'language': self.default_language 'language': self.default_language
}) })
movie_default = movie_default or movie movie_default = movie_default or movie
movie_others = [ self.request('movie/%s' % movie.get('id'), { movie_others = [ self.request('movie/%s' % movie.get('id'), {
'append_to_response': 'alternative_titles' + (',images,casts' if extended else ''), 'append_to_response': 'alternative_titles' + (',images,casts' if extended else ''),
'language': language 'language': language
}) for language in self.languages] if self.languages else [] }) for language in self.languages] if self.languages else []
# Images # Images
poster = self.getImage(movie, type = 'poster', size = 'w154') poster = self.getImage(movie, type = 'poster', size = 'w154')
poster_original = self.getImage(movie, type = 'poster', size = 'original') 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') images['actors'][toUnicode(cast_item.get('name'))] = self.getImage(cast_item, type = 'profile', size = 'original')
except: except:
log.debug('Error getting cast info for %s: %s', (cast_item, traceback.format_exc())) log.debug('Error getting cast info for %s: %s', (cast_item, traceback.format_exc()))
movie_data = { movie_data = {
'type': 'movie', 'type': 'movie',
'via_tmdb': True, 'via_tmdb': True,
@ -199,17 +200,17 @@ class TheMovieDb(MovieProvider):
# Add alternative names # Add alternative names
movies = [ movie ] + movie_others if movie == movie_default else [ movie, movie_default ] + movie_others movies = [ movie ] + movie_others if movie == movie_default else [ movie, movie_default ] + movie_others
movie_titles = [ self.getTitles(movie) for movie in movies ] movie_titles = [ self.getTitles(movie) for movie in movies ]
all_titles = sorted(list(itertools.chain.from_iterable(movie_titles))) all_titles = sorted(list(itertools.chain.from_iterable(movie_titles)))
alternate_titles = movie_data['titles'] alternate_titles = movie_data['titles']
for title in all_titles: for title in all_titles:
if title and title not in alternate_titles and title.lower() != 'none' and title is not None: if title and title not in alternate_titles and title.lower() != 'none' and title is not None:
alternate_titles.append(title) alternate_titles.append(title)
movie_data['titles'] = alternate_titles movie_data['titles'] = alternate_titles
return movie_data return movie_data
def getImage(self, movie, type = 'poster', size = 'poster'): def getImage(self, movie, type = 'poster', size = 'poster'):
@ -261,26 +262,26 @@ class TheMovieDb(MovieProvider):
def getApiKey(self): def getApiKey(self):
key = self.conf('api_key') key = self.conf('api_key')
return bd(random.choice(self.ak)) if key == '' else key return bd(random.choice(self.ak)) if key == '' else key
def getLanguages(self): def getLanguages(self):
languages = splitString(Env.setting('languages', section = 'core')) languages = splitString(Env.setting('languages', section = 'core'))
if len(languages): if len(languages):
return languages return languages
return [ 'en' ] return [ 'en' ]
def getTitles(self, movie): def getTitles(self, movie):
# add the title to the list # add the title to the list
title = toUnicode(movie.get('title')) title = toUnicode(movie.get('title'))
titles = [title] if title else [] 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')) alternate_title = toUnicode(movie.get('original_title'))
if alternate_title and alternate_title not in titles: if alternate_title and alternate_title not in titles:
titles.append(alternate_title) titles.append(alternate_title)
# Add alternative titles # Add alternative titles
alternate_titles = movie.get('alternative_titles', {}).get('titles', []) alternate_titles = movie.get('alternative_titles', {}).get('titles', [])
@ -288,7 +289,7 @@ class TheMovieDb(MovieProvider):
alt_name = toUnicode(alt.get('title')) 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: if alt_name and alt_name not in titles and alt_name.lower() != 'none' and alt_name is not None:
titles.append(alt_name) titles.append(alt_name)
return titles; return titles;

Loading…
Cancel
Save