Skip to content

yt-dlp è un programma da riga di comando che scarica video e audio da YouTube e da moltissimi altri siti. È potente ma ha centinaia di opzioni, e dal telefono non è comodo da usare. Per questo sul Raspberry Pi lo comando da un’interfaccia web: incollo un link, scelgo se voglio il video o solo l’audio, e il download parte in background sul Raspberry. Quando ha finito, guardo o ascolto il file direttamente nel browser oppure lo salvo sul computer.

L’interfaccia è una mia versione, riscritta per yt-dlp, di Youtube-dl WebUI di p1rox, e la metto a disposizione su GitHub.

Cosa serve

  • Raspberry Pi con Raspberry Pi OS (Debian 12) e IP fisso
  • Apache con PHP, già installati (qui li uso anche per il sito)
  • spazio su disco per i download
  • accesso SSH al Raspberry

Scarica solo contenuti che hai il diritto di scaricare: video con licenza libera o di pubblico dominio, materiale tuo, o contenuti per cui l’autore lo consente. Le condizioni d’uso di molti siti, YouTube compreso, vietano il download senza autorizzazione.

1. L’interfaccia

La mia versione è su GitHub: madaello/yt-dlp-WebUI. Rispetto all’originale:

  • usa yt-dlp al posto di youtube-dl, che non è più aggiornato;
  • per i video si sceglie la risoluzione massima (da 360p a 2160p) e il formato, MP4 o MKV;
  • per l’audio si sceglie il formato (MP3, M4A, Opus o FLAC) e la qualità;
  • gestisce sottotitoli, copertina, capitoli, playlist, SponsorBlock e limite di velocità, con un campo per aggiungere altre opzioni di yt-dlp;
  • nelle liste dei video e delle canzoni si riproduce il file nel browser, potendo spostarsi avanti e indietro, oppure lo si scarica;
  • usa Bootstrap 5, con tema chiaro o scuro secondo l’impostazione del sistema, e funziona anche sul telefono; tutte le librerie sono incluse, non carica niente da internet;
  • è più sicura: le scelte del modulo sono controllate, le opzioni di yt-dlp che potrebbero eseguire comandi o scrivere fuori dalla cartella dei download vengono rifiutate, e ogni file richiesto deve stare dentro quella cartella.

Come l’originale, è rilasciata con licenza MIT.

2. ffmpeg e yt-dlp

ffmpeg serve a yt-dlp per unire video e audio, che i siti spesso forniscono separati, e per estrarre l’audio:

sudo apt update
sudo apt install ffmpeg

yt-dlp invece conviene non prenderlo dai pacchetti di Debian, che contengono una versione ferma a quando è uscita la distribuzione. YouTube e gli altri siti modificano spesso il funzionamento delle loro pagine, anche per ostacolare i download, e ogni volta yt-dlp deve essere adattato: gli sviluppatori pubblicano nuove versioni anche più volte al mese, e una versione vecchia smette presto di funzionare. Si scarica quindi l’ultima versione direttamente dal progetto:

mkdir -p ~/.local/bin
wget https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -O ~/.local/bin/yt-dlp
chmod a+rx ~/.local/bin/yt-dlp

Su Raspberry Pi OS la cartella ~/.local/bin viene aggiunta da sola al PATH al login successivo, se esiste: dopo esserti ricollegato puoi lanciare yt-dlp senza scrivere il percorso. Prova con:

yt-dlp --version

Per tenerlo aggiornato, aggiungi un aggiornamento settimanale al tuo crontab con crontab -e, per esempio il lunedì alle 5:

0 5 * * 1 systemd-cat -t yt-dlp-update $HOME/.local/bin/yt-dlp -U

Com’è andato l’ultimo aggiornamento si vede con journalctl -t yt-dlp-update.

3. Installazione dell’interfaccia

L’interfaccia si scarica da GitHub con git, il programma che gestisce le versioni del codice: con lo stesso programma, in futuro, si scaricano anche gli aggiornamenti. Se non è già installato:

sudo apt install git

Tengo le pagine web nella cartella ~/www della mia home. Scarica l’interfaccia lì:

mkdir -p ~/www
cd ~/www
git clone https://github.com/madaello/yt-dlp-WebUI.git yt-dlp

Per aggiornarla in futuro basta un git pull nella stessa cartella.

4. La cartella dei download

I download li fa il server web, che gira con l’utente www-data: la cartella dei download deve quindi essere scrivibile anche da lui. La creo fuori dalla cartella web, così i file non si possono scaricare dal browser senza passare dal login:

mkdir -p ~/downloads/yt-dlp
sudo chgrp www-data ~/downloads/yt-dlp
chmod 770 ~/downloads/yt-dlp

La cartella resta tua, ma il gruppo www-data può scriverci. Il server web deve anche poter attraversare la tua home per arrivarci e per lanciare yt-dlp. Se non l’hai già fatto per il sito:

chmod o+x ~

Il permesso x sulla home consente di attraversarla, non di vederne il contenuto.

5. Configurazione

Come password, l’interfaccia non vuole il testo in chiaro ma la sua impronta MD5. Calcolala così, mettendo la password che vuoi usare:

echo -n 'LA_TUA_PASSWORD' | md5sum | cut -d ' ' -f 1

Poi crea il file di configurazione partendo dall’esempio:

cd ~/www/yt-dlp/config
cp config.sample.php config.php
nano config.php

e cambia queste voci, mettendo il tuo nome utente nei percorsi:

"security" => true,
"password" => "IMPRONTA_MD5",
"outputFolder" => "/home/TUO_UTENTE/downloads/yt-dlp",
"ytdlp" => "/home/TUO_UTENTE/.local/bin/yt-dlp",
"extracter" => "ffmpeg",
"max_dl" => 3);
  • security attiva la richiesta della password: lasciala sempre a true.
  • outputFolder è la cartella del passo 4, senza la barra finale.
  • ytdlp è il percorso completo di yt-dlp: il server web non conosce il tuo PATH.
  • max_dl è il numero massimo di download contemporanei (0 vuol dire nessun limite).

config.php non fa parte del repository: i futuri git pull non lo toccano.

6. Apache

Per rendere l’interfaccia raggiungibile all’indirizzo /yt-dlp, crea un piccolo file di configurazione:

sudo nano /etc/apache2/conf-available/yt-dlp.conf
Alias /yt-dlp "/home/TUO_UTENTE/www/yt-dlp"

<Directory "/home/TUO_UTENTE/www/yt-dlp">
    Options FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

Poi attivalo, controlla la sintassi e ricarica Apache:

sudo a2enconf yt-dlp
sudo apache2ctl configtest
sudo systemctl reload apache2

Il file in conf-available vale per tutti i siti del server: l’interfaccia si raggiunge sia dall’indirizzo IP sia dai nomi dei siti ospitati.

7. Uso

Apri il browser all’indirizzo http://IP_DEL_RASPBERRY/yt-dlp/ ed entra con la password scelta al passo 5. Incolla uno o più link, separati da una virgola, scegli Video o Audio e le opzioni, e premi Download.

  • Il menu Background downloads mostra i download in corso e permette di fermarli tutti.
  • In List of videos e List of songs trovi i file scaricati, comprese le cartelle delle playlist: puoi riprodurli, scaricarli o cancellarli.
  • Le ultime opzioni scelte vengono ricordate per il download successivo.

Note

  • Se un download non parte o finisce con un errore, la spiegazione è nel file nascosto .yt-dlp.log nella cartella dei download. Spesso basta aggiornare yt-dlp con yt-dlp -U.
  • Nella stessa cartella, .plays.log e .downloads.log registrano data, indirizzo e nome del file di ogni riproduzione e salvataggio.
  • Se rendi l’interfaccia raggiungibile da internet, usa una password lunga e diversa dalle altre, e accedi solo in HTTPS: la password viaggia nel modulo di login.
  • Riferimenti: la guida all’installazione di yt-dlp, la documentazione delle opzioni e la mia versione dell’interfaccia.
Torna su