Download della playlist di YouTube con youtube-dl, saltando i file esistenti


22

Mi chiedevo se fosse possibile scaricare una playlist di YouTube come mp3 usando youtube-dl, saltando i file già esistenti. Sto usando questo comando:

youtube-dl --continue --ignore-errors --no-overwrites --extract-audio --audio-format mp3 --output "%(title)s.%(ext)s" [path here]

e, anche se l'ho impostato per non sovrascrivere, scarica di nuovo tutto da zero. È possibile?


anche se si scarica nuovamente, di solito salta la scrittura del file per impostazione predefinita anche senza
quell'opzione

Ok, se mantengo il video scaricato insieme al file mp3, la funzione di salto funziona correttamente. Non esattamente quello di cui avevo bisogno, ma è ok.
Guerriero,

Risposte:


45

Con l'opzione --download-archive FILE youtube-dl entrambi legge e aggiunge a un elenco di file da non scaricare di nuovo. Ogni volta che un file viene scaricato correttamente, viene aggiunto l'ID video FILE.

Puoi usarlo come segue:

youtube-dl --download-archive downloaded.txt --no-post-overwrites -ciwx --audio-format mp3 -o "%(title)s.%(ext)s" [path here]

Scarica nuovamente tutti i video precedenti che non hai conservato per l'ultima volta mentre crea l'elenco. Ora puoi eliminarli.

Se i tuoi file MP3 fossero stati nominati con il formato predefinito di %(title)s-%(id)s.%(ext)s, avresti potuto evitare il redownload creando downloaded.txtda youtube %(id)sin un terminale bash come segue:

for n in *.mp3
do if [[ "$n" =~ -[-_0-9a-zA-Z]{11}.mp3$ ]]
   then echo "youtube ${n: -15: 11}" >> downloaded.txt
   fi
done

1
Preziosa risposta qui. Risolve il mio problema. grazie.
Guerriero,

Cosa c'è -cwixqui?
bteo

2
-cwixè un'alternativa più breve a--continue --no-overwrites --ignore-errors --extract-audio
Martin Thornton

1
Vale la pena ricordare che mentre funziona perfettamente per YouTube, youtube-dl funziona anche con altri siti (ad esempio Soundcloud) in cui l' -xopzione sembra interrompere l'output. Puoi rimuovere in modo sicuro quel flag se stai scaricando da una sorgente audio.
christianbundy

2

Questo è davvero utile. Se è utile a qualcuno, ho modificato il codice per creare l'elenco di download esistente per includere tutti i file nella cartella. Utile se si scarica audio con i flag --extract-audioe--audio-quality "best"

for n in *.*
do if [[ "$n" =~ -[-_0-9a-zA-Z]{11}.*$ ]]
   then echo "youtube ${n: -15: 11}" >> downloaded.txt
   fi
done

Sono sicuro che la maggior parte delle persone avrebbe potuto risolverlo da soli, ma non tutti sono stati informati con gli script di Bash.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.