def tmdb_info(self): from tmdb3 import searchSeries, set_cache, set_key, set_locale, get_locale set_key('587c13e576f991c0a653f783b290a065') set_cache(filename='/tmp/tmdb3.cache') set_locale('en', 'us') _locale = get_locale() try: tmdb_results = searchSeries(self.title, first_air_date_year=self.year, locale=_locale) for _series in tmdb_results: if self.country: if not self.country in _series.origin_countries: continue if self.year: if not self.year == _series.first_air_date.year(): continue if self.title == decode(_series.name): raise GetOutOfLoop(_series) raise SeriesNotFound("Series Not Found in TMDb: {}".format(self.title)) except GetOutOfLoop, e: _series = e.message alias = {'name': 'title', 'id': 'tmdb_id', 'origin_countries': 'country'} for key in dir(_series): if key[:1] == '_': continue if key in alias: key2 = alias[key] else: key2 = key if not hasattr(self, key2): continue setattr(self, key2, decode(getattr(_series, key)))
def set_poster(self, title_query, video_type): if video_type is 'MOVIE': tmdb_id = tmdb3.searchMovie(title_query)[0].id video = tmdb3.Movie(tmdb_id) else: tmdb_id = tmdb3.searchSeries(title_query)[0].id video = tmdb3.Series(tmdb_id) self.tmdb_poster = video.poster.geturl('w342')
def get_show_data(query): series = tmdb3.searchSeries(query)[0] show_data = { 'id': series.id, 'numSeasons': series.number_of_seasons, 'numEps': series.number_of_episodes, 'first_date': str(series.first_air_date), 'last_date': str(series.last_air_date), 'imdbId': series.imdb_id, 'name': series.name, 'imdbRating': series.userrating, 'summary': series.overview, 'networks': [], 'genres': [], 'keywords': [], 'cast': [], 'seasons': [] } for network in series.networks: show_data['networks'].append(network.name) for genre in series.genres: show_data['genres'].append(genre.name) for keyword in series.keywords: show_data['keywords'].append(keyword.name) for person in series.cast: show_data['cast'].append(person.name) if series.poster is not None: sizes = series.poster.sizes() size = sizes[4] if len(sizes) > 4 else sizes[len(sizes)-1] url = series.poster.geturl(size) show_data['remote_img_url'] = url show_data['img_filename'] = url[url.rindex('/')+1:] seasons = [] episodes = [] for season in series.seasons: (season_data, season_episodes) = get_season_data(series.seasons[season]) show_data['seasons'].append(series.seasons[season].id) season_data['season_number'] = season seasons.append(season_data) episodes.extend(season_episodes) return show_data, seasons, episodes
def tmdb_info(self): from tmdb3 import searchSeries, set_cache, set_key, set_locale, get_locale set_key('587c13e576f991c0a653f783b290a065') set_cache(filename='/tmp/tmdb3.cache') set_locale('en', 'us') _locale = get_locale() try: tmdb_results = searchSeries(self.title, first_air_date_year=self.year, locale=_locale) for _series in tmdb_results: if self.country: if not self.country in _series.origin_countries: continue if self.year: if not self.year == _series.first_air_date.year(): continue if self.title == decode(_series.name): raise GetOutOfLoop(_series) raise SeriesNotFound("Series Not Found in TMDb: {}".format( self.title)) except GetOutOfLoop, e: _series = e.message alias = { 'name': 'title', 'id': 'tmdb_id', 'origin_countries': 'country' } for key in dir(_series): if key[:1] == '_': continue if key in alias: key2 = alias[key] else: key2 = key if not hasattr(self, key2): continue setattr(self, key2, decode(getattr(_series, key)))
def test_serie(self): result = searchSeries("Star Wars") serie = [i for i in result if i.name == "Star Wars: The Clone Wars"][0] self.assertIsInstance(serie, Series) self.assertEqual(repr(serie), "<Series 'Star Wars: The Clone Wars'>") self.assertEqual(serie.name, "Star Wars: The Clone Wars") self.assertEqual(serie.original_name, "Star Wars: The Clone Wars") self.assertIsInstance(serie.origin_countries, list) self.assertEqual(serie.origin_countries[0], "SG") self.assertEqual( serie.overview, "Yoda, Obi-Wan Kenobi, Anakin Skywalker, Mace Windu " "and other Jedi Knights lead the Grand Army of the " "Republic against the droid army of the Separatists.", ) self.assertEqual(serie.first_air_date, datetime.date(2008, 10, 3)) self.assertEqual(serie.last_air_date, datetime.date(2014, 3, 7)) self.assertIsInstance(serie.authors, list) self.assertIsInstance(serie.authors[0], Person) self.assertEqual(serie.authors[0].name, "George Lucas") self.assertEqual(serie.number_of_seasons, 6) self.assertEqual(serie.number_of_episodes, 121) self.assertEqual(serie.popularity, 31.739) self.assertEqual(serie.status, "Returning Series") self.assertEqual(serie.userrating, 7.5) self.assertEqual(serie.votes, 165) self.assertIsInstance(serie.genres, list) genre = serie.genres[0] self.assertIsInstance(genre, Genre) self.assertEqual(genre.id, 10759) self.assertEqual(genre.name, "Action & Adventure") self.assertIsInstance(serie.poster, Poster) self.assertTrue(serie.poster.geturl().startswith("http")) self.assertIsInstance(serie.backdrop, Backdrop) self.assertIsInstance(serie.backdrops, list) self.assertIsInstance(serie.networks, list) self.assertIsInstance(serie.networks[0], Network) self.assertIsInstance(serie.seasons, dict) self.assertIsInstance(serie.seasons[0], Season) self.assertEqual(serie.id, 4194) self.assertEqual(serie.imdb_id, "tt0458290") self.assertEqual(serie.tvdb_id, 83268) self.assertEqual(serie.tvrage_id, 19187) self.assertEqual(serie.freebase_id, "") self.assertEqual(serie.freebase_mid, "/m/02q70n3") similars = serie.getSimilar() self.assertIsInstance(similars, SeriesSearchResult) first_similar = similars[0] self.assertIsInstance(first_similar, Series) self.assertEqual(first_similar.name, "Star Wars Rebels")
def test_results_searchSeries(self): result = searchSeries("Star Wars") self.assertIsInstance(result, SeriesSearchResult) self.assertGreaterEqual(len(result), 18)