Spaces:
Sleeping
Sleeping
from flask import Flask, render_template, request, jsonify | |
from functions import query_tmdb | |
app = Flask(__name__) | |
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") | |
def movie_details(movie_id): | |
url = f'https://api.themoviedb.org/3/movie/{movie_id}' | |
movie = query_tmdb(url) | |
return jsonify(movie) | |
def movie_credits(movie_id): | |
url = f'https://api.themoviedb.org/3/movie/{movie_id}/credits' | |
credits = query_tmdb(url) | |
return jsonify(credits) | |
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}") | |
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) | |
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 | |
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) | |
if __name__ == '__main__': | |
app.run(host='0.0.0.0', port=5000) | |