2026-01-10 14:44:59 +01:00
++
2026-01-10 14:44:59 +01:00
2026-01-10 14:40:37 +01:00
2026-01-10 13:21:36 +01:00
2026-01-10 13:21:36 +01:00
++
2026-01-10 14:32:36 +01:00
2026-01-10 13:21:36 +01:00

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

docker compose up --build

Poi apri: 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
Description
No description provided
Readme 46 KiB
Languages
Python 43.2%
JavaScript 26.1%
HTML 15.4%
CSS 12.6%
Dockerfile 2.7%