movies-app / app.py
tmzh
add natural language queries
ebf567b
raw
history blame
No virus
3.65 kB
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)