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/') 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//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/') 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/') 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)