A lightweight Flask application that surfaces curated streaming links powered by The Movie Database (TMDB).
Streaming pairs a minimal Flask backend with HTML templates to deliver an always up-to-date catalog of movies and television shows. The service queries TMDB for trending, upcoming, and searched titles, verifies that each item can be streamed, and renders the results in a clean, responsive interface.
The project was designed to complement the Trinix Discord bot but also works as a standalone web application you can host for friends or personal use.
Disclaimer Streaming simply aggregates publicly available links. You are responsible for complying with local laws and the terms of service of the content providers you access through this project.
- Trending dashboards – Display daily trending movies and TV series from TMDB.
- Upcoming releases – Highlight films scheduled to hit theaters soon.
- Search experience – Look up any movie or show using TMDB's multi-search endpoint.
- Link validation – Automatically confirm that each title has a working embed on the configured streaming provider before it is shown to viewers.
- Watch page – Stream the selected title with contextual metadata (synopsis, poster, release information).
- Systemd-friendly deployment – Includes instructions for running the application as a managed Linux service for continuous availability.
Free-Streaming/
├── main.py # Flask entry point served through Waitress
├── Modules/
│ └── Api/
│ └── searchapi.py # TMDB + streaming provider integration
├── templates/ # Jinja2 templates for the UI
├── static/ # Stylesheets, scripts, and assets for the front-end
└── og_trinix.png # Project logo
- Python 3.9+
- pip
- TMDB API key (required for all API calls)
Optional tooling for production deployments:
- systemd (PID 1 service manager on most modern Linux distributions)
-
Clone the repository
git clone https://github.com/osthread/Free-Streaming.git cd Free-Streaming -
Create a virtual environment (recommended)
python3 -m venv .venv source .venv/bin/activate -
Install Python dependencies
pip install flask flask-cors waitress requests
-
Configure your TMDB API key
- Open
Modules/Api/searchapi.pyand replace the placeholder stringAPI-KeywithBearer <your_tmdb_v4_api_key>. - You can alternatively load the key from an environment variable and adjust the code to read it securely.
- Open
-
Start the development server
python main.py
The application runs with Waitress on
http://127.0.0.1:9999/watch/by default.
On Linux servers that use systemd, you can run the application as a managed service:
-
Create a dedicated user (optional but recommended)
sudo useradd --system --home /opt/trinix --shell /usr/sbin/nologin trinix sudo mkdir -p /opt/trinix sudo chown trinix:trinix /opt/trinix
-
Copy the project files
sudo rsync -av --exclude '.venv' ./ /opt/trinix/ -
Create a virtual environment and install dependencies
sudo -u trinix python3 -m venv /opt/trinix/.venv sudo -u trinix /opt/trinix/.venv/bin/pip install flask flask-cors waitress requests
-
Create the systemd service unit Create
/etc/systemd/system/trinix.servicewith the following contents:[Unit] Description=Streaming service After=network-online.target Wants=network-online.target [Service] Type=simple User=trinix WorkingDirectory=/opt/trinix Environment="PATH=/opt/trinix/.venv/bin" ExecStart=/opt/trinix/.venv/bin/python main.py Restart=on-failure [Install] WantedBy=multi-user.target
-
Enable and start the service
sudo systemctl daemon-reload sudo systemctl enable --now trinix.service sudo systemctl status trinix.service
With this configuration systemd will restart the application automatically if it exits unexpectedly. Use journalctl -u trinix.service to review logs.
- Change the streaming provider – Update the
check_movieandcheck_mediamethods inModules/Api/searchapi.pyto point to a different embed service. - Adjust filtering rules – Modify
required_keysinmodified_resultsif you want to display additional metadata. - Style the UI – Edit files inside the
static/directory or the Jinja templates intemplates/.
Pull requests are welcome. Please open an issue to discuss major changes before submitting a PR, and make sure to test your updates locally.
Distributed under the GPL-3.0 License. See LICENSE for full details.
- Logo by gh0st_artz
- Movie and TV metadata provided by The Movie Database (TMDB)