|
@ -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; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|