import requests import os BASE_URL = "https://api.themoviedb.org/3" API_KEY = os.environ['TMDB_API_KEY'] def query_tmdb(endpoint, params={}): headers = { "accept": "application/json", "Authorization": f"Bearer {API_KEY}" } response = requests.get(endpoint, headers=headers, params=params) return response.json() def discover_movie(certification=None, certification_gte=None, certification_lte=None, certification_country=None, include_adult=False, include_video=False, language="en-US", page=1, primary_release_year=None, primary_release_date_gte=None, primary_release_date_lte=None, region=None, release_date_gte=None, release_date_lte=None, sort_by="popularity.desc", vote_average_gte=None, vote_average_lte=None): endpoint = f"{BASE_URL}/discover/movie" params = { 'include_adult': include_adult, 'include_video': include_video, 'language': language, 'page': page, 'sort_by': sort_by } # Add optional parameters if they're provided if certification: params['certification'] = certification if certification_gte: params['certification.gte'] = certification_gte if certification_lte: params['certification.lte'] = certification_lte if certification_country: params['certification_country'] = certification_country if primary_release_year: params['primary_release_year'] = primary_release_year if primary_release_date_gte: params['primary_release_date.gte'] = primary_release_date_gte if primary_release_date_lte: params['primary_release_date.lte'] = primary_release_date_lte if region: params['region'] = region if release_date_gte: params['release_date.gte'] = release_date_gte if release_date_lte: params['release_date.lte'] = release_date_lte if vote_average_gte: params['vote_average.gte'] = vote_average_gte if vote_average_lte: params['vote_average.lte'] = vote_average_lte response = query_tmdb(endpoint, params=params) return response def get_movie_details(movie_id, append_to_response=None): endpoint = f"{BASE_URL}/movie/{movie_id}" params = {} response = query_tmdb(endpoint, params=params) return response def search_person(query, include_adult=False, language="en-US", page=1): endpoint = f"{BASE_URL}/search/person" params = { 'query': query, 'include_adult': include_adult, 'language': language, 'page': page } response = query_tmdb(endpoint, params=params) return response def get_person_details(person_id, language="en-US", append_to_response=None): endpoint = f"{BASE_URL}/person/{person_id}" params = { 'language': language } if append_to_response: params['append_to_response'] = append_to_response response = query_tmdb(endpoint, params=params) return response def get_movie_genres(language="en-US"): endpoint = f"{BASE_URL}/genre/movie/list" params = { 'language': language } response = query_tmdb(endpoint, params=params) return response