Descargar la lista de reproducción de youtube con youtube-dl, omitiendo los archivos existentes

22

Me preguntaba si era posible descargar una lista de reproducción de YouTube como mp3 usando youtube-dl, omitiendo los archivos ya existentes. Estoy usando este comando:

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

y, aunque lo configuré para que no se sobrescriba, vuelve a descargar todo desde cero. es posible?

Guerrero
fuente
a pesar de que se vuelve a descargar, generalmente omite escribir el archivo de forma predeterminada, incluso sin esa opción establecida
mchid
Ok, si mantengo el video descargado junto con el archivo mp3, la función de salto funciona correctamente. No es exactamente lo que necesitaba, pero está bien.
Guerrero

Respuestas:

45

Con la opción --download-archive FILE youtube-dl, ambos leen y agregan a una lista de archivos para no volver a descargar. Cada vez que un archivo se descarga correctamente, se agrega esa identificación de video FILE.

Puede usarlo de la siguiente manera:

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

Volverá a descargar los videos anteriores que no guardó por última vez mientras crea la lista. Ahora puedes eliminarlos.

Si sus archivos MP3 se hubieran nombrado con el formato predeterminado de %(title)s-%(id)s.%(ext)s, podría haber evitado la descarga al crear downloaded.txtdesde YouTube %(id)sen un terminal bash de la siguiente manera:

for n in *.mp3
do if [[ "$n" =~ -[-_0-9a-zA-Z]{11}.mp3$ ]]
   then echo "youtube ${n: -15: 11}" >> downloaded.txt
   fi
done
Martin Thornton
fuente
1
Valiosa respuesta aquí. Resuelve mi problema. gracias.
Guerrero
Que hay -cwixaqui
bteo
2
-cwixes una alternativa más corta a--continue --no-overwrites --ignore-errors --extract-audio
Martin Thornton
1
Vale la pena mencionar que si bien esto funciona perfectamente para YouTube, youtube-dl también funciona con otros sitios (por ejemplo, Soundcloud) donde la -xopción parece romper la salida. Puede eliminar esa bandera de forma segura si está descargando desde una fuente de audio.
christianbundy
2

Esto es realmente útil. Si es de utilidad para alguien, modifiqué el código para crear la lista de descargas existente para incluir todos los archivos en la carpeta. Útil si descarga audio con las banderas --extract-audioy--audio-quality "best"

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

Estoy seguro de que la mayoría de las personas podrían haberlo solucionado por sí mismas, pero no todos están al tanto de las secuencias de comandos bash.

Jeremy Paul Carroll
fuente