File size: 3,251 Bytes
6660737
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
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