Primo Caricamento
This commit is contained in:
60
README.md
Normal file
60
README.md
Normal file
@@ -0,0 +1,60 @@
|
||||
# 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`
|
||||
Reference in New Issue
Block a user