From 08f44197f3068fd54a08abc4e9e84e5d30b08a37 Mon Sep 17 00:00:00 2001 From: Ruud Date: Tue, 3 Sep 2013 12:14:02 +0200 Subject: [PATCH] Use own cache --- couchpotato/core/providers/info/themoviedb/main.py | 104 +++++++++++---------- 1 file changed, 55 insertions(+), 49 deletions(-) diff --git a/couchpotato/core/providers/info/themoviedb/main.py b/couchpotato/core/providers/info/themoviedb/main.py index 2ec0e94..9eaf5f1 100644 --- a/couchpotato/core/providers/info/themoviedb/main.py +++ b/couchpotato/core/providers/info/themoviedb/main.py @@ -3,8 +3,6 @@ from couchpotato.core.helpers.encoding import simplifyString, toUnicode, ss from couchpotato.core.helpers.variable import md5 from couchpotato.core.logger import CPLog from couchpotato.core.providers.info.base import MovieProvider -from couchpotato.environment import Env -import os import tmdb3 import traceback @@ -20,7 +18,7 @@ class TheMovieDb(MovieProvider): # Configure TMDB settings tmdb3.set_key(self.conf('api_key')) - tmdb3.set_cache(engine='file', filename=os.path.join(Env.get('cache_dir'), 'python', 'tmdb.cache')) + tmdb3.set_cache('null') def search(self, q, limit = 12): """ Find movie by name """ @@ -76,7 +74,7 @@ class TheMovieDb(MovieProvider): log.debug('Getting info: %s', cache_key) movie = tmdb3.Movie(identifier) result = self.parseMovie(movie) - self.setCache(cache_key, result) + self.setCache(md5(ss(cache_key)), result) except: pass @@ -84,52 +82,60 @@ class TheMovieDb(MovieProvider): def parseMovie(self, movie, with_titles = True): - # Images - poster = self.getImage(movie, type = 'poster', size = 'poster') - poster_original = self.getImage(movie, type = 'poster', size = 'original') - backdrop_original = self.getImage(movie, type = 'backdrop', size = 'original') + cache_key = 'tmdb.cache.%s' % movie.id + movie_data = self.getCache(cache_key) - # Genres - try: - genres = [genre.name for genre in movie.genres] - except: - genres = [] - - # 1900 is the same as None - year = str(movie.releasedate or '')[:4] - if not movie.releasedate or year == '1900' or year.lower() == 'none': - year = None - - movie_data = { - 'via_tmdb': True, - 'tmdb_id': movie.id, - 'titles': [toUnicode(movie.title)], - 'original_title': movie.originaltitle, - 'images': { - 'poster': [poster] if poster else [], - #'backdrop': [backdrop] if backdrop else [], - 'poster_original': [poster_original] if poster_original else [], - 'backdrop_original': [backdrop_original] if backdrop_original else [], - }, - 'imdb': movie.imdb, - 'runtime': movie.runtime, - 'released': str(movie.releasedate), - 'year': year, - 'plot': movie.overview, - 'genres': genres, - } - - movie_data = dict((k, v) for k, v in movie_data.iteritems() if v) - - # Add alternative names - if with_titles: - movie_data['titles'].append(movie.originaltitle) - for alt in movie.alternate_titles: - alt_name = alt.title - if alt_name and not alt_name in movie_data['titles'] and alt_name.lower() != 'none' and alt_name is not None: - movie_data['titles'].append(alt_name) - - movie_data['titles'] = list(set(movie_data['titles'])) + if not movie_data: + + # Images + poster = self.getImage(movie, type = 'poster', size = 'poster') + poster_original = self.getImage(movie, type = 'poster', size = 'original') + backdrop_original = self.getImage(movie, type = 'backdrop', size = 'original') + + # Genres + try: + genres = [genre.name for genre in movie.genres] + except: + genres = [] + + # 1900 is the same as None + year = str(movie.releasedate or '')[:4] + if not movie.releasedate or year == '1900' or year.lower() == 'none': + year = None + + movie_data = { + 'via_tmdb': True, + 'tmdb_id': movie.id, + 'titles': [toUnicode(movie.title)], + 'original_title': movie.originaltitle, + 'images': { + 'poster': [poster] if poster else [], + #'backdrop': [backdrop] if backdrop else [], + 'poster_original': [poster_original] if poster_original else [], + 'backdrop_original': [backdrop_original] if backdrop_original else [], + }, + 'imdb': movie.imdb, + 'runtime': movie.runtime, + 'released': str(movie.releasedate), + 'year': year, + 'plot': movie.overview, + 'genres': genres, + } + + movie_data = dict((k, v) for k, v in movie_data.iteritems() if v) + + # Add alternative names + if with_titles: + movie_data['titles'].append(movie.originaltitle) + for alt in movie.alternate_titles: + alt_name = alt.title + if alt_name and not alt_name in movie_data['titles'] and alt_name.lower() != 'none' and alt_name is not None: + movie_data['titles'].append(alt_name) + + movie_data['titles'] = list(set(movie_data['titles'])) + + # Cache movie parsed + self.setCache(md5(ss(cache_key)), movie_data) return movie_data