Tags

PythonFlaskScikit-LearnPandasTMDB APIGunicornmachine-learningnlpmoviesrecommendations

Binge-It-On is a web application designed to help you decide what movie to watch next. It combines live data from The Movie Database (TMDB) API with a content-based recommendation engine powered by machine learning to suggest movies tailored to your preferences.

Key Features

  • Movie Generator: Filter movies by minimum release year, minimum rating, and genre to discover new films.
  • Smart Recommendations: When the generated movie exists in the local dataset, the app uses Cosine Similarity and CountVectorizer (NLP) to find 10 other movies with similar plots, genres, and features.
  • Fallback Recommendations: For newer movies not in the local dataset, it provides top-rated related movies directly from TMDB.
  • Rich Media: Displays movie posters, overviews, and YouTube trailers for both the main pick and all recommendations.

How It Works

The recommendation engine operates on a two-tier system:

1. Primary Engine (ML-Based): For movies in the local `tmdb.csv` dataset, the app vectorizes plot descriptions and metadata using Scikit-Learn's CountVectorizer. It then calculates Cosine Similarity scores between the selected movie and all others in the dataset, returning the top 10 most similar films.

2. Fallback Engine (API-Based): When a movie is too new or otherwise not in the local dataset, the system queries the TMDB API for related and top-rated movies in similar genres.

Tech Stack

  • Backend: Python with Flask handles routing, API calls, and ML computations.
  • Data Processing: Pandas and NumPy manage the movie dataset and numerical operations.
  • Machine Learning: Scikit-Learn provides the CountVectorizer for text vectorization and cosine similarity calculations.
  • External API: TMDB API supplies live movie data, posters, and trailers.
  • Deployment: Gunicorn-ready for cloud deployment on platforms like Heroku.

Usage

1. Select a minimum release year (e.g., "Should not be older than 2012").

2. Choose a minimum rating threshold (e.g., "7").

3. Pick your preferred genres.

4. Submit to receive a curated movie suggestion along with 10 personalized recommendations.