Pobieranie listy odtwarzania youtube za pomocą youtube-dl, pomijanie istniejących plików

22

Zastanawiałem się, czy można pobrać playlistę YouTube jako mp3 youtube-dl, pomijając już istniejące pliki. Używam tego polecenia:

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

i chociaż ustawiłem, aby nie nadpisywało, pobiera wszystko od nowa. czy to możliwe?

Wojownik
źródło
mimo że pobiera ponownie, zwykle domyślnie pomija zapisywanie pliku, nawet bez tej opcji
mchid
Ok, jeśli zachowam pobrany plik wideo wraz z plikiem mp3, funkcja pomijania działa poprawnie. Nie do końca to, czego potrzebowałem, ale jest w porządku.
Warrior

Odpowiedzi:

45

Dzięki opcji --download-archive FILE youtube-dl zarówno czyta, jak i dodaje do listy plików, których nie należy pobierać ponownie. Za każdym razem, gdy plik zostanie pobrany, ten identyfikator wideo jest dodawany do FILE.

Możesz użyć tego w następujący sposób:

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

Ponownie pobierze wszystkie filmy, które nie były przechowywane po raz ostatni, ponieważ tworzy listę. Możesz je teraz usunąć.

Jeśli Twoje pliki MP3 zostały nazwane w domyślnym formacie %(title)s-%(id)s.%(ext)s, możesz uniknąć ponownego pobierania, tworząc downloaded.txtz youtube %(id)sw terminalu bash w następujący sposób:

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
źródło
1
Cenna odpowiedź tutaj. To rozwiązuje mój problem. Dziękuję Ci.
Warrior
Co -cwixtu jest
bteo
2
-cwixjest krótszą alternatywą dla--continue --no-overwrites --ignore-errors --extract-audio
Martin Thornton
1
Warto wspomnieć, że chociaż działa to idealnie na YouTube, youtube-dl działa również z innymi stronami (np. Soundcloud), w których -xopcja wydaje się przerywać działanie. Możesz bezpiecznie usunąć tę flagę, jeśli pobierasz ze źródła audio.
christianbundy
2

To jest naprawdę pomocne. Jeśli jest to przydatne dla kogokolwiek, zmodyfikowałem kod, aby utworzyć istniejącą listę pobrań, aby uwzględnić wszystkie pliki w folderze. Przydatne, jeśli pobierasz audio z flagami --extract-audioi--audio-quality "best"

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

Jestem pewien, że większość ludzi mogła to sobie wyobrazić, ale nie wszyscy mają do czynienia ze skryptami bash.

Jeremy Paul Carroll
źródło