dionysis-media-video/README.md
2026-08-05 22:29:01 +00:00

1.8 KiB

Dionysis Media Video

Version: v0.1.0

A small Flask web app that combines a still image with an audio file into a YouTube-ready MP4 video.

Features

  • Upload an image (PNG/JPG/WebP/etc.) and an audio file (MP3/WAV/etc.).
  • Background worker queue processes jobs one at a time.
  • Queue shows status: Waiting, Processing, Complete, or Error.
  • Download completed videos from the queue.
  • Click an Error status to see the traceback and retry (move to end of queue).
  • Delete queued jobs unless they are currently processing.

Tech Stack

  • Python 3.12 + Flask + Gunicorn
  • SQLite for the queue
  • ffmpeg + Pillow for video encoding
  • Docker / Portainer deployment

Environment Variables

Variable Description Default
APP_SECRET_KEY Flask secret key generated at startup
ADMIN_PASSWORD Plain password for /admin none (when unset, login is disabled and admin is open)
PUBLIC_BASE_URL External URL for download links http://localhost:5000
INTERNAL_PORT Port Gunicorn listens on 5000
DATABASE SQLite path /app/data/app.db
UPLOAD_FOLDER Raw uploads directory /app/uploads
OUTPUT_FOLDER Completed videos directory /app/outputs

Local Development

cd ~/workspace/dionysis-media-video
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python init_db.py
flask --app app run

Open http://localhost:5000.

Deployment

Build and run with Docker:

docker compose up --build -d

For Portainer, use the repository stack URL:

https://gitlab.hallsworth.ca/yrtria/dionysis-media-video.git

Branch: main, Compose path: docker-compose.yml.

Then run once inside the container:

python init_db.py