Spaces:
Sleeping
Sleeping
File size: 3,215 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 |
from flask import Flask, render_template, request, jsonify
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)
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
|