A frontend to yt-dlp to download things
https://dl.emersa.it
| .forgejo/workflows | ||
| backend | ||
| scripts | ||
| web | ||
| .gitignore | ||
| compose.build.yml | ||
| compose.dev.yml | ||
| compose.prod.yml | ||
| LICENSE | ||
| README.md | ||
| redis.conf | ||
scaricatore
A distributed video/audio download application with SvelteKit frontend and FastAPI backend, using yt-dlp to download media from the web.
Architecture
- Frontend: SvelteKit 2 with Svelte 5 and TypeScript (
/web) - Backend: FastAPI with Redis Queue and yt-dlp integration (
/backend) - Infrastructure: Docker Compose with Redis and RQ workers
Self-Hosting
Docker (Recommended)
# Clone and configure
git clone git@git.pweapon.org:odo/dl.emersa.it.git
cd dl.emersa.it
# Set environment variables
export PUBLIC_VERSION="latest"
export PUBLIC_ORIGIN="https://your-domain.com"
export PUBLIC_API_URL="https://your-domain.com/api"
# Deploy with Docker Compose
docker-compose up -d
Development
For complete development environment:
# 1. Start Redis
docker compose -f compose.dev.yml up -d
# 2. Start backend (from backend directory)
cd backend
REDIS_URL=redis://localhost:6379 uv run yt_dl_rq_server.py
# 3. Start worker (separate terminal, from backend directory)
cd backend
REDIS_URL=redis://localhost:6379 uv run rq worker downloads
# 4. Start frontend (separate terminal, from web directory)
cd web
bun dev
To do:
- fix ci when this will be closed
- Mass/Playlist download
- Source spotify (spotdl)
- Fix node version settings, and typescript-eslint dep
- Dockerfile inside the forgejo release action
