def movie_list_gen(year): year_int = int(year) last_year = str(year_int - 1) start_date = str(last_year) + '-01-01' end_date = str(last_year) + '-12-31' discover = Discover() count = 1 mov_list = [] while (count < 12): curr_list = discover.discover_movies({ 'primary_release_year': last_year, 'page': count }) mov_list.append(curr_list) count += 1 count = 0 while (count < 10): curr_list = discover.discover_tv_shows({ 'air_date.gte': start_date, 'air_date.lte': end_date }) mov_list.append(curr_list) count += 1 flat_list = [] for sublist in mov_list: for item in sublist: flat_list.append(item) mov_list = flat_list return mov_list
class DiscoverTests(unittest.TestCase): def setUp(self): self.tmdb = TMDb() self.tmdb.api_key = os.environ["TMDB_API_KEY"] self.tmdb.language = "en-US" self.tmdb.debug = True self.tmdb.wait_on_rate_limit = True self.tmdb.cache = False self.discover = Discover() def test_get_discover_movies(self): discover = self.discover.discover_movies({ "primary_release_year": "2015", "with_genres": "28", "vote_average.gte": "8", "page": "1" }) self.assertGreater(len(discover), 0) self.assertTrue(hasattr(discover[0], "id")) self.assertGreaterEqual(discover[0].vote_average, 8) self.assertIn(28, discover[0].genre_ids) def test_get_discover_tv_shows(self): discover = self.discover.discover_tv_shows({ "with_genres": "16", "vote_average.gte": "8", "page": "1" }) self.assertGreater(len(discover), 0) self.assertTrue(hasattr(discover[0], "id")) self.assertGreaterEqual(discover[0].vote_average, 8) self.assertIn(16, discover[0].genre_ids)
def discoverMedia(self, start_date, end_date): sd_str = datetime.strftime(start_date, '%Y-%m-%d') ed_str = datetime.strftime(end_date, '%Y-%m-%d') tmdb = TMDb() tmdb.api_key = tmdb_key tmdb.language = 'en' discover = Discover() movies = discover.discover_movies({ 'primary_release_date.gte': sd_str, 'primary_release_date.lte': ed_str }) for res in movies: try: Media.objects.get(external_id=res.id) continue except Media.DoesNotExist as ex: if res.release_date == '': res.release_date = None if res.poster_path == None: poster = "https://lascrucesfilmfest.com/wp-content/uploads/2018/01/no-poster-available-737x1024.jpg" else: poster = "https://www.themoviedb.org/t/p/w600_and_h900_bestv2" + res.poster_path Media.objects.create( title = res.title, description = res.overview, poster_url = poster, release_date = res.release_date, media_type= "Movie", external_id= res.id ) series = discover.discover_tv_shows({ 'first_air_date.gte': sd_str, 'first_air_date.lte': ed_str }) for res in series: if res.first_air_date == '': res.first_air_date = None if res.poster_path == None: poster = "https://lascrucesfilmfest.com/wp-content/uploads/2018/01/no-poster-available-737x1024.jpg" else: poster = "https://www.themoviedb.org/t/p/w600_and_h900_bestv2" + res.poster_path try: Media.objects.get(external_id=res.id) continue except Media.DoesNotExist as ex: Media.objects.create( title = res.name, description = res.overview, poster_url = poster, release_date = res.first_air_date, media_type= "TV", external_id= res.id )
class TMDbTests(unittest.TestCase): def setUp(self): self.tmdb = TMDb() self.tmdb.api_key = os.environ['TMDB_API_KEY'] self.tmdb.language = 'en' self.tmdb.debug = True self.tmdb.wait_on_rate_limit = True self.movie = Movie() self.discover = Discover() self.tv = TV() self.person = Person() self.collection = Collection() self.company = Company() self.season = Season() def test_get_movie(self): movie = self.movie.details(111) self.assertIsNotNone(movie) self.assertEqual(movie.title, 'Scarface') self.assertEqual(movie.id, 111) self.assertTrue(hasattr(movie, 'title')) self.assertTrue(hasattr(movie, 'overview')) self.assertTrue(hasattr(movie, 'id')) def test_get_movie_reviews(self): search = self.movie.search("Mad Max") self.assertTrue(len(search) > 0) first = search[0] reviews = self.movie.reviews(first.id) self.assertTrue(len(reviews) > 0) for review in reviews: self.assertTrue(hasattr(review, 'id')) self.assertTrue(hasattr(review, 'content')) def test_get_movie_lists(self): lists = self.movie.lists(111) self.assertTrue(len(lists) > 0) self.assertTrue(hasattr(lists[0], 'description')) self.assertTrue(hasattr(lists[0], 'name')) def test_get_movie_videos(self): videos = self.movie.videos(111) self.assertTrue(len(videos) > 0) self.assertTrue(hasattr(videos[0], 'id')) def test_get_movie_recommendations(self): recs = self.movie.recommendations(111) self.assertTrue(len(recs) > 0) self.assertTrue(hasattr(recs[0], 'id')) def test_discover_movies(self): discover = self.discover.discover_movies({ 'primary_release_year': '2015', 'with_genres': '28', 'page': '1', 'vote_average.gte': '8' }) self.assertTrue(len(discover) > 0) self.assertTrue(hasattr(discover[0], 'id')) movie = discover[0] has_genre = False for genre_id in movie.genre_ids: if genre_id == 28: has_genre = True self.assertTrue(has_genre) def test_discover_tv_shows(self): discover = self.discover.discover_tv_shows({ 'with_genres': '16', 'vote_average.gte': '8', 'page': '1' }) self.assertTrue(len(discover) > 0) self.assertTrue(hasattr(discover[0], 'id')) movie = discover[0] has_genre = False for genre_id in movie.genre_ids: if genre_id == 16: has_genre = True self.assertTrue(has_genre) def test_get_latest_movie(self): videos = self.movie.latest() self.assertIsNotNone(videos) self.assertTrue(hasattr(videos, 'id')) def test_now_playing(self): now_playing = self.movie.now_playing() self.assertTrue(len(now_playing) > 0) self.assertTrue(hasattr(now_playing[0], 'id')) def test_top_rated(self): top_rated = self.movie.top_rated() self.assertTrue(len(top_rated) > 0) self.assertTrue(hasattr(top_rated[0], 'id')) def test_upcoming(self): upcoming = self.movie.upcoming() self.assertTrue(len(upcoming) > 0) self.assertTrue(hasattr(upcoming[0], 'id')) def test_popular(self): popular = self.movie.popular() self.assertTrue(len(popular) > 0) self.assertTrue(hasattr(popular[0], 'id')) def test_search(self): search = self.movie.search('Mad Max') self.assertTrue(len(search) > 0) self.assertTrue(hasattr(search[0], 'id')) def test_similar(self): similar = self.movie.similar(111) self.assertTrue(len(similar) > 0) self.assertTrue(hasattr(similar[0], 'id')) def test_get_tv_show(self): show = self.tv.details(12) self.assertIsNotNone(show) self.assertTrue(hasattr(show, 'id')) def test_get_latest_tv_show(self): latest_tv = self.tv.latest() self.assertIsNotNone(latest_tv) self.assertTrue(hasattr(latest_tv, 'id')) def test_search_tv(self): search_tv = self.tv.search('Sunny') self.assertTrue(len(search_tv) > 0) self.assertTrue(hasattr(search_tv[0], 'id')) def test_popular_shows(self): popular = self.tv.popular() self.assertTrue(len(popular) > 0) self.assertTrue(hasattr(popular[0], 'id')) def test_top_rated_shows(self): top_rated = self.tv.top_rated() self.assertTrue(len(top_rated) > 0) self.assertTrue(hasattr(top_rated[0], 'id')) def test_get_person(self): person = self.person.details(234) self.assertIsNotNone(person) self.assertTrue(hasattr(person, 'id')) def test_search_person(self): search_person = self.person.search('Bryan') self.assertTrue(len(search_person) > 0) self.assertTrue(hasattr(search_person[0], 'id')) def test_collection_details(self): c = Collection() details = c.details(10) self.assertEqual(details.name, 'Star Wars Collection') self.assertEqual(details.id, 10) self.assertTrue(hasattr(details, 'overview')) self.assertTrue(hasattr(details, 'poster_path')) def test_collection_images(self): c = Collection() images = c.images(10) self.assertTrue(hasattr(images, 'backdrops')) self.assertTrue(hasattr(images, 'posters')) def test_popular_people(self): popular = self.person.popular() self.assertTrue(len(popular) > 0) first = popular[0] self.assertTrue(hasattr(first, 'name')) self.assertTrue(hasattr(first, 'known_for')) def test_latest_person(self): latest_person = self.person.latest() self.assertIsNotNone(latest_person) self.assertTrue(hasattr(latest_person, 'name')) self.assertTrue(hasattr(latest_person, 'id')) def test_person_images(self): images = self.person.images(11) self.assertIsNotNone(images) self.assertTrue(hasattr(images, 'profiles')) self.assertTrue(hasattr(images, 'id')) def test_company_details(self): c = self.company.details(1) self.assertTrue(hasattr(c, 'name')) self.assertEqual(c.name, 'Lucasfilm') def test_company_movies(self): company = self.company.movies(1) self.assertTrue(len(company) > 0) first = company[0] self.assertTrue(hasattr(first, 'title')) self.assertTrue(hasattr(first, 'overview')) def test_config(self): config = Configuration() info = config.info() self.assertIsNotNone(info) self.assertTrue(hasattr(info, 'images')) def test_genres(self): genres = Genre() movie_genres = genres.movie_list() self.assertIsNotNone(movie_genres) tv_genres = genres.tv_list() self.assertIsNotNone(tv_genres) def test_season(self): s = self.season.details(1418, 1) self.assertIsNotNone(s) self.assertEqual(s.name, 'Season 1') self.assertEqual(s.id, 3738) self.assertTrue(hasattr(s, 'episodes')) self.assertTrue(hasattr(s, 'overview')) self.assertTrue(hasattr(s, 'id')) def test_get_season_changes(self): s = self.season.changes(1418, 1) self.assertIsNotNone(s) def test_get_season_external_ids(self): s = self.season.external_ids(1418, 1) self.assertIsNotNone(s) self.assertIsNotNone(s['tvdb_id']) def test_get_season_videos(self): s = self.season.videos(1418, 1) def test_get_season_images(self): s = self.season.images(1418, 1) for l in s: self.assertIsNotNone(l.width) self.assertIsNotNone(l.height) def test_get_season_credits(self): s = self.season.credits(1418, 1) for c in s: self.assertIsNotNone(c.name) self.assertIsNotNone(c.character) def test_get_movie_by_external_id(self): ex = self.movie.external(external_id="tt8155288", external_source="imdb_id") res = ex['movie_results'][0] self.assertTrue(res['title'] == "Happy Death Day 2U")
class ShowAPIDB(): def __init__(self): self.tmdb = TMDb() self.tmdb.api_key = "e00b72174e4ae097af808f34a8f220fc" self.tv = TV() self.season = Season() self.movie = Movie() self.discover = Discover() def buscarSerie(self, nombre): resultado = self.tv.search(nombre) series = [] for i in resultado: serie = Tablas.Show() serie.nombre = i.name serie.idShow = i.id serie.overview = i.overview serie.poster = i.poster_path serie.puntuacionIMDB = i.vote_average serie.tipo = 1 series.append(serie) return series def buscarPelicula(self, nombre): resultado = self.movie.search(nombre) pelis = [] for i in resultado: peli = Tablas.Show() peli.tipo = 0 peli.nombre = i.title peli.idShow = i.id peli.overview = i.overview peli.poster = i.poster_path peli.puntuacionIMDB = i.vote_average pelis.append(peli) return pelis def buscarPeliculaPorID(self, id): resultado = self.movie.details(id) peli = Tablas.Show() peli.tipo = 0 peli.nombre = resultado.title peli.idShow = resultado.id peli.overview = resultado.overview peli.poster = resultado.poster_path peli.puntuacionIMDB = resultado.vote_average return peli def buscarSeriePorID(self, id): i = self.tv.details(id) serie = Tablas.Show() serie.nombre = i.name serie.idShow = i.id serie.overview = i.overview serie.poster = i.poster_path serie.puntuacionIMDB = i.vote_average serie.tipo = 1 return serie def descubrir(self): show = self.discover.discover_tv_shows({'sort_by': 'popularity.desc'}) series = [] for i in show: serie = Tablas.Show() serie.nombre = i.name serie.idShow = i.id serie.overview = i.overview serie.poster = i.poster_path serie.puntuacionIMDB = i.vote_average serie.tipo = 1 series.append(serie) return series
class TMDbTests(unittest.TestCase): def setUp(self): self.tmdb = TMDb() self.tmdb.api_key = os.environ["TMDB_API_KEY"] self.tmdb.language = "en" self.tmdb.debug = True self.tmdb.wait_on_rate_limit = True self.movie = Movie() self.discover = Discover() self.tv = TV() self.person = Person() self.collection = Collection() self.company = Company() self.season = Season() self.list = List() def test_get_tv_keywords(self): keywords = self.tv.keywords(1396) self.assertGreater(len(keywords), 0) def test_get_tv_reviews(self): reviews = self.tv.reviews(1396) self.assertGreater(len(reviews), 0) def test_get_movie_repr(self): search = self.movie.search("Mad Max") for results in search: print(results) def test_get_tv_show_repr(self): search_tv = self.tv.search("Breaking Bad") for results in search_tv: print(results) def test_get_movie(self): movie = self.movie.details(111) self.assertIsNotNone(movie) self.assertEqual(movie.title, "Scarface") self.assertEqual(movie.id, 111) self.assertTrue(hasattr(movie, "title")) self.assertTrue(hasattr(movie, "overview")) self.assertTrue(hasattr(movie, "id")) def test_get_movie_reviews(self): search = self.movie.search("Mad Max") self.assertTrue(len(search) > 0) first = search[0] reviews = self.movie.reviews(first.id) self.assertTrue(len(reviews) > 0) for review in reviews: self.assertTrue(hasattr(review, "id")) self.assertTrue(hasattr(review, "content")) def test_get_movie_lists(self): lists = self.movie.lists(111) self.assertTrue(len(lists) > 0) self.assertTrue(hasattr(lists[0], "description")) self.assertTrue(hasattr(lists[0], "name")) def test_get_movie_credits(self): credits = self.movie.credits(111) print(credits) self.assertIsNotNone(credits) def test_get_movie_images(self): images = self.movie.images(111) print(images) self.assertIsNotNone(images) def test_get_movie_videos(self): videos = self.movie.videos(111) self.assertTrue(len(videos) > 0) self.assertTrue(hasattr(videos[0], "id")) def test_get_movie_recommendations(self): recs = self.movie.recommendations(111) self.assertTrue(len(recs) > 0) self.assertTrue(hasattr(recs[0], "id")) def test_discover_movies(self): discover = self.discover.discover_movies({ "primary_release_year": "2015", "with_genres": "28", "page": "1", "vote_average.gte": "8", }) self.assertTrue(len(discover) > 0) self.assertTrue(hasattr(discover[0], "id")) movie = discover[0] has_genre = False for genre_id in movie.genre_ids: if genre_id == 28: has_genre = True self.assertTrue(has_genre) def test_discover_tv_shows(self): discover = self.discover.discover_tv_shows({ "with_genres": "16", "vote_average.gte": "8", "page": "1" }) self.assertTrue(len(discover) > 0) self.assertTrue(hasattr(discover[0], "id")) movie = discover[0] has_genre = False for genre_id in movie.genre_ids: if genre_id == 16: has_genre = True self.assertTrue(has_genre) def test_get_latest_movie(self): videos = self.movie.latest() self.assertIsNotNone(videos) self.assertTrue(hasattr(videos, "id")) def test_now_playing(self): now_playing = self.movie.now_playing() self.assertTrue(len(now_playing) > 0) self.assertTrue(hasattr(now_playing[0], "id")) def test_top_rated(self): top_rated = self.movie.top_rated() self.assertTrue(len(top_rated) > 0) self.assertTrue(hasattr(top_rated[0], "id")) def test_upcoming(self): upcoming = self.movie.upcoming() self.assertTrue(len(upcoming) > 0) self.assertTrue(hasattr(upcoming[0], "id")) def test_popular(self): popular = self.movie.popular() self.assertTrue(len(popular) > 0) self.assertTrue(hasattr(popular[0], "id")) def test_search(self): search = self.movie.search("Mad Max") self.assertTrue(len(search) > 0) self.assertTrue(hasattr(search[0], "id")) def test_similar(self): similar = self.movie.similar(111) self.assertTrue(len(similar) > 0) self.assertTrue(hasattr(similar[0], "id")) def test_get_tv_show(self): show = self.tv.details(12) self.assertIsNotNone(show) self.assertTrue(hasattr(show, "id")) def test_on_the_air(self): show = self.tv.on_the_air() self.assertTrue(len(show) > 0) def test_airing_today(self): show = self.tv.on_the_air() self.assertTrue(len(show) > 0) def test_tv_videos(self): show = self.tv.videos(1396) self.assertTrue(len(show) > 0) def test_tv_recommendations(self): show = self.tv.recommendations(1396) self.assertTrue(len(show) > 0) def test_external_ids(self): show = self.tv.external_ids(1776) self.assertEqual(show["imdb_id"], "tt0488262") def test_get_latest_tv_show(self): latest_tv = self.tv.latest() self.assertIsNotNone(latest_tv) self.assertTrue(hasattr(latest_tv, "id")) def test_search_tv(self): search_tv = self.tv.search("Sunny") self.assertTrue(len(search_tv) > 0) self.assertTrue(hasattr(search_tv[0], "id")) def test_popular_shows(self): popular = self.tv.popular() self.assertTrue(len(popular) > 0) self.assertTrue(hasattr(popular[0], "id")) def test_top_rated_shows(self): top_rated = self.tv.top_rated() self.assertTrue(len(top_rated) > 0) self.assertTrue(hasattr(top_rated[0], "id")) def test_get_person(self): person = self.person.details(234) self.assertIsNotNone(person) self.assertTrue(hasattr(person, "id")) def test_search_person(self): search_person = self.person.search("Bryan") self.assertTrue(len(search_person) > 0) self.assertTrue(hasattr(search_person[0], "id")) def test_collection_details(self): c = Collection() details = c.details(10) self.assertEqual(details.name, "Star Wars Collection") self.assertEqual(details.id, 10) self.assertTrue(hasattr(details, "overview")) self.assertTrue(hasattr(details, "poster_path")) def test_collection_images(self): c = Collection() images = c.images(10) self.assertTrue(hasattr(images, "backdrops")) self.assertTrue(hasattr(images, "posters")) def test_popular_people(self): popular = self.person.popular() self.assertTrue(len(popular) > 0) first = popular[0] self.assertTrue(hasattr(first, "name")) self.assertTrue(hasattr(first, "known_for")) def test_latest_person(self): latest_person = self.person.latest() self.assertIsNotNone(latest_person) self.assertTrue(hasattr(latest_person, "name")) self.assertTrue(hasattr(latest_person, "id")) def test_person_images(self): images = self.person.images(11) self.assertIsNotNone(images) self.assertTrue(hasattr(images, "profiles")) self.assertTrue(hasattr(images, "id")) def test_company_details(self): c = self.company.details(1) self.assertTrue(hasattr(c, "name")) self.assertEqual(c.name, "Lucasfilm Ltd.") def test_company_movies(self): company = self.company.movies(1) self.assertTrue(len(company) > 0) first = company[0] self.assertTrue(hasattr(first, "title")) self.assertTrue(hasattr(first, "overview")) def test_config(self): config = Configuration() info = config.info() self.assertIsNotNone(info) self.assertTrue(hasattr(info, "images")) def test_genres(self): genres = Genre() movie_genres = genres.movie_list() self.assertIsNotNone(movie_genres) tv_genres = genres.tv_list() self.assertIsNotNone(tv_genres) def test_season(self): s = self.season.details(1418, 1) self.assertIsNotNone(s) self.assertEqual(s.name, "Season 1") self.assertEqual(s.id, 3738) self.assertTrue(hasattr(s, "episodes")) self.assertTrue(hasattr(s, "overview")) self.assertTrue(hasattr(s, "id")) def test_get_season_changes(self): s = self.season.changes(1418) self.assertIsNotNone(s) def test_get_season_external_ids(self): s = self.season.external_ids(1418, 1) self.assertIsNotNone(s) self.assertIsNotNone(s["tvdb_id"]) def test_get_season_videos(self): s = self.season.videos(1418, 1) def test_get_season_images(self): s = self.season.images(1418, 1) for l in s: self.assertIsNotNone(l.width) self.assertIsNotNone(l.height) def test_get_season_credits(self): s = self.season.credits(1418, 1) for c in s: self.assertIsNotNone(c.name) self.assertIsNotNone(c.character) def test_get_movie_by_external_id(self): ex = self.movie.external(external_id="tt8155288", external_source="imdb_id") res = ex["movie_results"][0] self.assertTrue(res["title"] == "Happy Death Day 2U") def test_get_list(self): list = self.list.details(list_id="112870") self.assertTrue(len(list) > 10) self.assertTrue(hasattr(list[0], "id")) self.assertTrue(hasattr(list[0], "title")) def test_get_certifications(self): certifications = Certification() movie_certifications = certifications.movie_list() self.assertIsNotNone(movie_certifications) tv_certifications = certifications.tv_list() self.assertIsNotNone(tv_certifications)
def tmdb_get_shows(config_path, plex, plex_map, data, method): config_tools.TraktClient(config_path) t_tvs = [] t_tv = TV() t_tv.api_key = config_tools.TMDB(config_path).apikey if t_tv.api_key == "None": raise KeyError("Invalid TMDb API Key") count = 0 if method in ["tmdb_discover", "tmdb_company", "tmdb_network"]: if method in ["tmdb_company", "tmdb_network"]: tmdb = Company() if method == "tmdb_company" else Network() tmdb.api_key = t_tv.api_key tmdb_id = int(data) tmdb_name = str(tmdb.details(tmdb_id)) discover_method = "with_companies" if method == "tmdb_company" else "with_networks" attrs = {discover_method: tmdb_id} limit = 0 else: attrs = data.copy() limit = int(attrs.pop('limit')) discover = Discover() discover.api_key = t_tv.api_key discover.discover_tv_shows(attrs) total_pages = int(os.environ["total_pages"]) total_results = int(os.environ["total_results"]) amount = total_results if limit == 0 or total_results < limit else limit if method in ["tmdb_company", "tmdb_network"]: print("| Processing {}: {} ({} {} shows)".format( method, tmdb_id, amount, tmdb_name)) else: print("| Processing {}: {} shows".format(method, amount)) for attr, value in attrs.items(): print("| {}: {}".format(attr, value)) for x in range(total_pages): attrs["page"] = x + 1 tmdb_shows = discover.discover_tv_shows(attrs) for tshow in tmdb_shows: count += 1 t_tvs.append(tshow.id) if count == data: break if count == data: break elif method in [ "tmdb_popular", "tmdb_top_rated", "tmdb_trending_daily", "tmdb_trending_weekly" ]: trending = Trending() trending.api_key = t_tv.api_key for x in range(int(int(data) / 20) + 1): if method == "tmdb_popular": tmdb_shows = t_tv.popular(x + 1) elif method == "tmdb_top_rated": tmdb_shows = t_tv.top_rated(x + 1) elif method == "tmdb_trending_daily": tmdb_shows = trending.tv_day(x + 1) elif method == "tmdb_trending_weekly": tmdb_shows = trending.tv_week(x + 1) for tshow in tmdb_shows: count += 1 t_tvs.append(tshow.id) if count == amount: break if count == amount: break print("| Processing {}: {} Items".format(method, data)) else: tmdb_id = int(data) if method == "tmdb_list": tmdb = List() tmdb.api_key = t_tv.api_key try: t_col = tmdb.details(tmdb_id) tmdb_name = str(t_col) for ttv in t_col: if ttv.media_type == "tv": t_tvs.append(ttv.id) except: raise ValueError( "| Config Error: TMDb List: {} not found".format(tmdb_id)) else: try: t_tv.details(tmdb_id).number_of_seasons tmdb_name = str(t_tv.details(tmdb_id)) t_tvs.append(tmdb_id) except: raise ValueError( "| Config Error: TMDb ID: {} not found".format(tmdb_id)) print("| Processing {}: ({}) {}".format(method, tmdb_id, tmdb_name)) matched = [] missing = [] for mid in t_tvs: tvdb_id = tmdb_get_tvdb(config_path, mid) if tvdb_id is None: print( "| TMDb Error: tmdb_id: {} ({}) has no associated tvdb_id. Try just using tvdb_id instead" .format(mid, t_tv.details(mid).name)) elif tvdb_id in plex_map: matched.append(plex.Server.fetchItem(plex_map[tvdb_id])) else: missing.append(tvdb_id) return matched, missing
from tmdbv3api import TMDb, Discover tmdb = TMDb() tmdb.api_key = '' discover = Discover() # What are the most popular TV shows? show = discover.discover_tv_shows({'sort_by': 'popularity.desc'}) for p in show: print(p.name) print(p.overview) print("")
def tmdb_get_shows(config_path, plex, data, method): config_tools.TraktClient(config_path) t_tvs = [] t_tv = TV() t_tv.api_key = config_tools.TMDB(config_path).apikey # Set TMDb api key for Movie if t_tv.api_key == "None": raise KeyError("Invalid TMDb API Key") discover = Discover() discover.api_key = t_tv.api_key count = 0 if method == "tmdb_discover": discover.discover_tv_shows(data) total_pages = int(os.environ["total_pages"]) total_results = int(os.environ["total_results"]) limit = int(data.pop('limit')) amount = total_results if total_results < limit else limit print("| Processing {}: {} items".format(method, amount)) for attr, value in data.items(): print("| {}: {}".format(attr, value)) for x in range(total_pages): data["page"] = x + 1 tmdb_shows = discover.discover_tv_shows(data) for tshow in tmdb_shows: count += 1 t_tvs.append(tshow.id) if count == amount: break if count == amount: break run_discover(data) elif method in ["tmdb_popular", "tmdb_top_rated", "tmdb_trending_daily", "tmdb_trending_weekly"]: #trending = Trending() #TURNON:Trending #trending.api_key = t_movie.api_key #TURNON:Trending for x in range(int(data / 20) + 1): if method == "tmdb_popular": tmdb_shows = t_tv.popular(x + 1) elif method == "tmdb_top_rated": tmdb_shows = t_tv.top_rated(x + 1) #elif method == "tmdb_trending_daily": #TURNON:Trending # tmdb_shows = trending.tv_day(x + 1) #TURNON:Trending #elif method == "tmdb_trending_weekly": #TURNON:Trending # tmdb_shows = trending.tv_week(x + 1) #TURNON:Trending for tshow in tmdb_shows: count += 1 t_tvs.append(tshow.id) if count == amount: break if count == amount: break print("| Processing {}: {} Items".format(method, data)) else: tmdb_id = int(data) if method == "tmdb_list": tmdb = List() tmdb.api_key = t_tv.api_key try: t_col = tmdb.details(tmdb_id) tmdb_name = str(t_col) for ttv in t_col: if ttv.media_type == "tv": t_tvs.append(ttv.id) except: raise ValueError("| Config Error: TMDb List: {} not found".format(tmdb_id)) elif method in ["tmdb_company", "tmdb_network"]: if method == "tmdb_company": tmdb = Company() tmdb.api_key = t_tv.api_key tmdb_name = str(tmdb.details(tmdb_id)) else: #tmdb = Network() #TURNON:Trending #tmdb.api_key = t_tv.api_key #TURNON:Trending tmdb_name = ""#str(tmdb.details(tmdb_id)) #TURNON:Trending discover_method = "with_companies" if method == "tmdb_company" else "with_networks" tmdb_shows = discover.discover_tv_shows({discover_method: tmdb_id}) for tshow in tmdb_shows: t_tvs.append(tshow.id) else: try: t_tv.details(tmdb_id).number_of_seasons tmdb_name = str(t_tv.details(tmdb_id)) t_tvs.append(tmdb_id) except: raise ValueError("| Config Error: TMDb ID: {} not found".format(tmdb_id)) print("| Processing {}: ({}) {}".format(method, tmdb_id, tmdb_name)) p_tv_map = {} for item in plex.Library.all(): guid = urlparse(item.guid) item_type = guid.scheme.split('.')[-1] if item_type == 'thetvdb': tvdb_id = guid.netloc elif item_type == 'themoviedb': tvdb_id = get_tvdb_id_from_tmdb_id(guid.netloc) else: tvdb_id = None p_tv_map[item] = tvdb_id matched = [] missing = [] for mid in t_tvs: match = False tvdb_id = get_tvdb_id_from_tmdb_id(mid) if tvdb_id is None: print("| Trakt Error: tmbd_id: {} could not converted to tvdb_id try just using tvdb_id instead".format(mid)) else: for t in p_tv_map: if p_tv_map[t] and "tt" not in p_tv_map[t] != "None": if p_tv_map[t] is not None and int(p_tv_map[t]) == int(tvdb_id): match = True break if match: matched.append(t) else: missing.append(tvdb_id) return matched, missing
from tmdbv3api import TMDb, Discover tmdb = TMDb() tmdb.api_key = "" discover = Discover() # What are the most popular TV shows? show = discover.discover_tv_shows({"sort_by": "popularity.desc"}) for p in show: print(p.name) print(p.overview) print("")