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?


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

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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.