2026-04-08 16:15:58 +01:00
2026-04-08 15:47:35 +01:00
2026-04-08 16:08:14 +01:00
2026-04-08 16:15:58 +01:00

Local Movie Database

A clean, fast, and fully offline web application to browse and search your personal movie database (built from TMDB data).

The app displays movies in a beautiful card-based interface with posters, ratings, release years, full language names, and descriptions. Everything runs locally on your machine.


Features

  • Beautiful movie cards with TMDB posters

  • Search by title or keyword

  • Filter by:

    • Genre (multi-select)
    • Language (shows full names like "English", "Japanese", "Greek", etc.)
    • Minimum rating
    • Minimum vote count
    • Year range
  • "Load More" button — loads 100 movies at a time

  • No artificial result limit — you can keep loading until all matching results are shown

  • Fully responsive 4-column layout

  • Completely local (no data sent online)


Requirements

  • Python 3.10 or higher
  • streamlit
  • pandas
  • A prepared SQLite database file named movies.db (≈1.4 million movies)

Installation

1. Clone the repository

git clone <your-repo-url>
cd movie-project

2. Install dependencies

pip install streamlit pandas

Or using the requirements file:

pip install -r requirements.txt

3. Add your database

Place your movies.db file in the root folder (same directory as movie_app.py).

Important: The database must contain a table named movies with at least these columns:

  • title
  • release_date
  • vote_average
  • vote_count
  • overview
  • original_language
  • poster_path
  • genres
  • popularity

4. Run the app

streamlit run movie_app.py

The application will automatically open in your default web browser.


Project Structure

movie-project/
├── movie_app.py
├── movies.db
├── README.md
├── requirements.txt
└── .gitignore

requirements.txt

streamlit
pandas

Notes

  • The first search may take a few seconds while the genre list is built.
  • Movie posters are loaded from TMDB's public image server: https://image.tmdb.org
  • You can keep clicking "Load More" until all matching results are displayed.
  • Best performance when the database has been cleaned (adult content removed).

Tech Stack

  • UI Framework: Streamlit
  • Database: SQLite
  • Data Processing: pandas
  • Data Source: TMDB movie dataset

ToDo

  • download all posters so they are Completely local instead of fetching each time as i suspect request might get blocked on too many requests
  • create a python script to grab the latest tmdb DB and add new entries to the movies.db
  • add indexing to speed up searches, check if theres other speed up options possible
  • improve the interface, maybe make the search options a single row at the top?
S
Description
description to come
Readme
36 KiB
Languages
Python 100%