Files
youtube-video-download/README.md
2026-01-10 13:21:36 +01:00

61 lines
2.2 KiB
Markdown

# YouTube Downloader (Flask + nginx)
Servizio minimale per scaricare video o solo audio da YouTube tramite interfaccia web. Basato su Flask + yt-dlp dietro nginx, con download disponibili tramite browser.
## Stack
- Python 3.11, Flask, gunicorn
- yt-dlp + ffmpeg per download e conversione
- nginx per servire la UI statica e fare proxy verso l'API
- Docker Compose per orchestrare servizi e volume condiviso dei file
## Prerequisiti
- Docker + Docker Compose
## Configurazione ambiente
Variabili in `.env` (già fornito un esempio):
| Variabile | Default | Descrizione |
| --- | --- | --- |
| `WEB_PORT` | 8080 | Porta esposta pubblicamente da nginx (UI + API) |
| `API_PORT` | 5000 | Porta interna dell'API Flask (dietro nginx) |
| `MAX_DURATION_SECONDS` | 5400 | Durata massima del video in secondi (default 1h30) |
## Avvio rapido
```bash
docker compose up --build
```
Poi apri: [http://localhost:8080](http://localhost:8080) (o la `WEB_PORT` impostata).
## Uso
1. Inserisci un link YouTube.
2. Premi "Carica formati" per vedere risoluzioni/video e formati audio disponibili (yt-dlp).
3. Scegli video o solo audio, risoluzione/formato desiderato e avvia "Scarica".
4. Il file generato è servito da nginx in `/downloads/<nome-file>` e il link è mostrato nell'interfaccia.
## API (dietro nginx)
- `POST /api/info` body: `{ "url": "..." }` → restituisce formati video/audio e durata (rispetta limite `MAX_DURATION_SECONDS`).
- `POST /api/download` body: `{ url, mode: "video"|"audio", format_id?, audio_ext? }` → scarica e restituisce `{ file, url }` con link al file.
- `GET /api/health` → stato servizio.
## Volumi e file
- I file scaricati vivono nel volume `downloads` montato su `/downloads` in entrambi i container. Rimangono finché non si rimuove il volume (`docker compose down -v`).
## Note e limiti
- Il limite durata è bloccante: se il video supera `MAX_DURATION_SECONDS`, l'API risponde 400.
- Non è implementato un sistema di queue o rate limiting: pensato per uso singolo/privato.
- yt-dlp segue le policy di YouTube; l'uso è responsabilità dell'utente.
## Pulizia
- Fermare: `docker compose down`
- Fermare e rimuovere volume download: `docker compose down -v`