from lib.api.tmdbv3api.tmdb import TMDb
from lib.api.tmdbv3api.utils import get_dates
try:
from urllib import urlencode
except ImportError:
from urllib.parse import urlencode
class Discover(TMDb):
_urls = {"movies": "/discover/movie", "tv": "/discover/tv"}
def discover_movies(self, params):
"""
Discover movies by different types of data like average rating, number of votes, genres and certifications.
:param params: dict
:return:
"""
return self._request_obj(self._urls["movies"], urlencode(params), key="results")
def discover_tv_shows(self, params):
"""
Discover TV shows by different types of data like average rating, number of votes, genres,
the network they aired on and air dates.
:param params: dict
:return:
"""
return self._request_obj(self._urls["tv"], urlencode(params), key="results")
def discover_tv_calendar(self, page):
# TMDb network IDs for major streaming platforms
# Netflix: 213, Amazon: 1024, Disney+: 2739, Hulu: 453, Apple TV+: 2552, HBO Max: 3186
network_ids = "213,1024,2739,453,2552,3186"
current_date, future_date = get_dates(7, reverse=False)
params = (
"&with_original_language=en"
f"&air_date.gte={current_date}"
f"&air_date.lte={future_date}"
f"&with_networks={network_ids}"
f"&page={page}"
)
return self._request_obj(
self._urls["tv"],
params=params,
)