File size: 3,651 Bytes
6660737
ebf567b
6660737
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ebf567b
 
 
 
 
 
 
 
 
 
 
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
from flask import Flask, render_template, request, jsonify
from agent import chatbot
from functions import query_tmdb

app = Flask(__name__)


@app.route('/')
def index():
    page = request.args.get('page', 1)
    url = f'https://api.themoviedb.org/3/movie/popular?page={page}'
    data = query_tmdb(url)
    movies = data.get('results', [])
    total_pages = data.get('total_pages', 1)
    return render_template('index.html', movies=movies, page=int(page), total_pages=total_pages, title="Popular Movies")


@app.route('/movie/<int:movie_id>')
def movie_details(movie_id):
    url = f'https://api.themoviedb.org/3/movie/{movie_id}'
    movie = query_tmdb(url)
    return jsonify(movie)


@app.route('/movie/<int:movie_id>/credits')
def movie_credits(movie_id):
    url = f'https://api.themoviedb.org/3/movie/{movie_id}/credits'
    credits = query_tmdb(url)
    return jsonify(credits)


@app.route('/genre/<int:genre_id>')
def genre_filter(genre_id):
    page = request.args.get('page', 1)
    url = f'https://api.themoviedb.org/3/discover/movie?with_genres={genre_id}&page={page}'
    data = query_tmdb(url)
    genre_url = 'https://api.themoviedb.org/3/genre/movie/list'
    genres = query_tmdb(genre_url).get('genres', [])
    genre_name = next(
        (genre['name'] for genre in genres if genre['id'] == genre_id), 'Unknown')
    return render_template('index.html', movies=data.get('results', []), page=int(page), total_pages=data.get('total_pages', 1), title=f"Movies in Genre: {genre_name}")


@app.route('/genres')
def genres():
    genre_url = 'https://api.themoviedb.org/3/genre/movie/list'
    genres = query_tmdb(genre_url).get('genres', [])
    return render_template('genres.html', genres=genres)


@app.route('/cast')
def cast():
    page = request.args.get('page', 1)
    url = f'https://api.themoviedb.org/3/trending/person/week?page={page}'
    data = query_tmdb(url)
    persons = data.get('results', [])
    total_pages = data.get('total_pages', 1)
    return render_template('cast.html', persons=persons, page=int(page), total_pages=total_pages, title="Trending Cast Members")


class PersonInfo:
    def __init__(self, name, image, bio):
        self.name = name
        self.image = image
        self.bio = bio


@app.route('/cast/<int:cast_id>')
def cast_filter(cast_id):
    page = request.args.get('page', 1)
    url = f'https://api.themoviedb.org/3/discover/movie?with_cast={cast_id}&page={page}'
    data = query_tmdb(url)
    cast_url = f'https://api.themoviedb.org/3/person/{cast_id}'
    cast_data = query_tmdb(cast_url)
    cast_name = cast_data.get('name', 'Unknown')
    cast_bio = cast_data.get('biography', 'No biography available')
    cast_image = f"https://image.tmdb.org/t/p/w500{cast_data.get('profile_path', '')}"
    cast_info = PersonInfo(name=cast_name, image=cast_image, bio=cast_bio)
    return render_template('index.html',
                           movies=data.get('results', []),
                           page=int(page),
                           total_pages=data.get('total_pages', 1),
                           title=f"Movies with Actor/Director: {cast_name}",
                           cast_info=cast_info)


@app.route('/query', methods=['GET', 'POST'])
def query():
    if request.method == 'POST':
        query = request.form.get('query')
        result = chatbot(query)  # Call the chatbot function from agent.py
        print("Got result: ", result)
        print("Movie ids are: ", [r['id'] for r in result])
        return render_template('query.html', result=result)
    return render_template('query.html')


if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)