def startEpisode(self, episode): tmdb.config['lang'] = guiLanguage().alpha2 tmdb.update_config() if episode.get('series') is None: raise SmewtException("TVDBMetadataProvider: Episode doesn't contain 'series' field: %s", md) name = episode.series.title name = name.replace(',', ' ') matching_series = self.getSeries(name) # Try first with the languages from guessit, and then with english languages = tolist(episode.get('language', [])) + ['en'] # Sort the series by id (stupid heuristic about most popular series # might have been added sooner to the db and the db id # follows the insertion order) # TODO: we should do something smarter like comparing series name distance, # episodes count and/or episodes names #print '\n'.join(['%s %s --> %f [%s] %s' % (x[1], name, textutils.levenshtein(x[1], name), x[2], x[0]) for x in matching_series]) matching_series.sort(key=lambda x: (textutils.levenshtein(x[1], name), int(x[0]))) series = None language = 'en' for lang in languages: try: language = lang ind = zip(*matching_series)[2].index(lang) series = matching_series[ind][0] break except ValueError, e: language = matching_series[0][2] series = matching_series[0][0]
def startMovie(self, movieName): tmdb.config['lang'] = guiLanguage().alpha2 tmdb.update_config() try: movieTvdb = self.getMovie(movieName) result = self.getMovieData(movieTvdb) movie = result.find_one('Movie') lores, hires = self.getMoviePoster(movieTvdb) movie.loresImage = lores movie.hiresImage = hires #result.display_graph() return result except SmewtException, e: raise