Pobieranie wielu plików za pomocą youtube-dl


45

Używam youtube-dl do pobierania plików z YouTube. Próbowałem pobrać wiele plików, ale to nie działa. Muszę otworzyć wiele terminali i zacząć od nowa za każdym razem, gdy chcę pobrać film.

Czy możesz mi pomóc pobrać wiele plików za pomocą jednego okna terminala, wymieniając tylko wszystkie adresy URL jednocześnie? Używam Ubuntu 12.04 64-bit.


1
Nie jest to odpowiedź na twoje pytanie, ale inni mogą się na to natknąć. Jeśli filmy są w jakiś sposób powiązane, pamiętaj, że youtube-dl może pobrać wszystkie filmy z listy odtwarzania, użytkownika lub kanału.
Dennis

zobacz odpowiedź poniżej (obecnie nie jest to najbardziej uprzywilejowane) sugerujące dodanie spacji między adresem URL i gotowe.
gota

Odpowiedzi:


54

Skróty

Jeśli wszystkie filmy są na tej samej liście odtwarzania lub na tym samym kanale, możesz zaoszczędzić czas, korzystając z następujących skrótów.

Lista odtwarzania

youtube-dl -f FORMAT -ciw -o "%(title)s.%(ext)s" -v <url-of-playlist>

... gdzie <url-of-playlist>jest zastąpiony adresem URL listy odtwarzania i FORMATna przykład dowolnym dostępnym formatem wideo 18. Możesz użyć tej -Fopcji, aby wyświetlić wszystkie prawidłowe formaty takie jak to:

youtube-dl -F 'http://www.youtube.com/some-alphanumeric-string'

Pobierz część listy odtwarzania od początku partii do końca partii

youtube-dl -f FORMAT -ci --playlist-start NUMBER --playlist-end NUMBER <url-of-playlist>  

... gdzie <url-of-playlist>jest zastąpiony adresem URL listy odtwarzania, FORMATna przykład dowolnym dostępnym formatem wideo 18i NUMBERjest numerem filmu na liście odtwarzania, od którego można rozpocząć / zakończyć pobieranie.

Kanał

youtube-dl -f FORMAT -ciw -o "%(title)s.%(ext)s" -v <url-of-channel>

... gdzie <url-of-channel>jest zastąpiony adresem URL kanału i FORMATna przykład dowolnym dostępnym formatem wideo 18.

Filmy spoza tej samej listy odtwarzania lub kanału

Najpierw utwórz plik wsadowy, który jest plikiem tekstowym zawierającym listę adresów URL filmów z YouTube, które chcesz pobrać. Adresy URL powinny być ułożone na liście zawierającej tylko jeden adres URL i nic więcej w każdym wierszu, z nową linią dla każdego adresu URL na liście. Zapisz plik wsadowy z łatwą do zapamiętania nazwą, jak plik wsadowy.txt. Jeśli wszystkie pliki znajdują się na tej samej liście odtwarzania, kanale lub stronie użytkownika w YouTube, możesz wygenerować plik tekstowy z listą zawierającą wszystkie linki na tej stronie, uruchamiając następujące polecenie:

sudo apt install jq  
youtube-dl -j --flat-playlist "https://<yourYoutubeWebpage>" | jq -r '.id' | sed 's_^_https://youtu.be/_' > batch-file.txt

Z terminalu:

youtube-dl -ct --simulate --batch-file='/path/to/batch-file.txt'

Jest to podstawowe polecenie, ale musisz również dodać formaty filmów, które chcesz pobrać, w przeciwnym razie możesz pobrać filmy w formatach, których nie chcesz. Najpierw symuluj pobieranie, aby sprawdzić, czy żądany format jest dostępny:

youtube-dl -ct -f 34 --simulate 'http://www.youtube.com/some-alphanumeric-string'

Jeśli format wideo nie jest dostępne otrzymasz komunikat o błędzie: requested format not available. Jeśli format wideo jest dostępny, nie pojawi się komunikat o błędzie podczas korzystania z tej --simulateopcji. Możesz także dodać opcję -F, aby wyświetlić wszystkie prawidłowe formaty takie jak to:

youtube-dl -F 'http://www.youtube.com/some-alphanumeric-string'

W trzeciej komendzie Użyłem wspólnej flv 360p format wideo:
-f 34. Możesz wypróbować format wideo flv 480p przy użyciu -f 35. Więc po dodaniu formatu wideo, który chcesz do polecenia, polecenie staje się mniej więcej takie:

youtube-dl -ciw -o "%(title)s.%(ext)s" --batch-file='/path/to/batch-file.txt'

Uwagi:

Nie dodałem tej --simulateopcji do ostatniego polecenia, więc to polecenie zostanie wykonane naprawdę.


18

Możesz umieszczać adresy URL jeden po drugim, z odstępem pomiędzy nimi. Youtube-dl pobierze je sekwencyjnie. Jest to nieco prostsze niż tworzenie pliku wsadowego.

Zauważ, że --help mówi youtube-dl --help Usage: youtube-dl [options] url [url...]

Przykładowe dane wejściowe:

youtube-dl http://www.youtube.com/watch?v=fqULJBBEVQE http://www.youtube.com/watch?v=vDbbz-BdyYc http://www.youtube.com/watch?v=OrIFaWJ9Glo

Przykładowe dane wyjściowe:

    [youtube] Setting language
    [youtube] fqULJBBEVQE: Downloading video webpage
    [youtube] fqULJBBEVQE: Downloading video info webpage
    [youtube] fqULJBBEVQE: Extracting video information
    [download] Destination: Web Components - A Tectonic Shift for Web Development - Google I_O 2013-fqULJBBEVQE.mp4
    [download] 100% of 238.14MiB in 36:54
    [youtube] vDbbz-BdyYc: Downloading video webpage
    [youtube] vDbbz-BdyYc: Downloading video info webpage
    [youtube] vDbbz-BdyYc: Extracting video information
    [download] Paul Irish on Web Application Development Workflow-vDbbz-BdyYc.mp4 has already been downloaded
    [youtube] OrIFaWJ9Glo: Downloading video webpage
    [youtube] OrIFaWJ9Glo: Downloading video info webpage
    [youtube] OrIFaWJ9Glo: Extracting video information
    [download] Got server HTTP error. Retrying (attempt 1 of 20)...
    [download] Destination: Single Page Web Applications - JavaScript End-to-End (The Hard Stuff)-OrIFaWJ9Glo.mp4
    [download] 100% of 553.10MiB in 42:17

1
Najlepsza odpowiedź moim zdaniem! Bardzo proste!
gota

5

krok 1: przejdź na pulpit i utwórz dokument tekstowy o nazwielist(lub innej nazwie). Skopiuj i wklej adresy URL, jeśli pliki chcesz pobrać do pliku, jeden adres URL w wierszu

krok 2: otwórz terminal i przejdź do pulpitu

cd Desktop

krok 3: aby pobrać pliki z listy, wpisz (zamieńlistodpowiednio, jeśli nazwa twojego pliku jest inna)

youtube-dl -a list

Aby pobrać kanał YouTube

Uruchom to polecenie

youtube-dl -citk -format mp4 -yes-playlist VIDEO_PLAYLIST_LINK
  • -c wznowić częściowo pobrane pliki
  • -i zignoruj ​​wszelkie błędy.
  • -t użyj tytułu wideo jako nazwy pliku.
  • -k zachowaj wideo na dysku po zakończeniu przetwarzania końcowego.
  • --format mp4 zapisz pliki wideo jako pliki MP4.
  • --yes-playlist potwierdza, że ​​następujący adres URL wskazuje na listę odtwarzania wideo.

1
-citkjest bardzo mylące i może prowadzić do błędów. -czmusza wznowienie, nawet jeśli nie ma to większego sensu. Domyślne jest już kontynuowane. -imoże być w porządku, ale pamiętaj, że możesz przegapić błędy w niektórych filmach. -tjest już wartością domyślną i jest przestarzała. -knie ma sensu z -f mp4. Aby uzyskać więcej informacji, zobacz często zadawane pytania dotyczące youtube-dl .
phihag

3

Jeśli masz wiele adresów URL filmów, po prostu dodaj je do jednej listy odtwarzania do listy odtwarzania YouTube, tworząc nową lub używając istniejącej.

Następnie użyj polecenia poniżej.

youtube-dl -f FORMAT --yes-playlist [url-of-playlist]

Opcja --yes-playlistpobierze listę odtwarzania, jeśli adres URL odnosi się do filmu i listy odtwarzania.

Jest to najprostsza i najszybsza opcja, jaką znalazłem, aby pobrać setki filmów ze strony internetowej, do której były połączone filmy z YouTube.


Jest to przydatne do pobierania wielu filmów z tego samego kanału. Możesz użyć niepublicznej listy odtwarzania, aby nie upublicznić jej
qwr

3

Aby pobrać wiele filmów, możesz użyć tej struktury. Jest podobny do odpowiedzi @ coreyb z tym, że możesz użyć go w bashu gdzie indziej, na przykład za pomocą echa. Oto dwa sposoby:

Szelki

youtube-dl -f FORMAT {url1,url2,url...}

Powtórz ostatnie polecenie bez ostatniego argumentu

youtube-dl -f FORMAT url1; !:- url2; !:-url...

3

najprostszym rozwiązaniem byłoby wykonanie takiego skryptu bash

#!/bin/bash
terminal=`tty`
exec < ~/Documents/youtubevideolinks.txt

while read -r line
do
    cd ~/Desktop/TilakDa/
    youtube-dl -f 18 "$line"
done
exec < "$terminal"

po prostu skopiuj i wklej linki wideo w tym pliku txt w folderze dokumentów z każdym adresem URL wideo w nowej linii i uruchom ten skrypt , pobierze filmy jeden po drugim Domyślnie -f 18opcja dotyczy filmów 360p


1

Wpisz polecenie, a następnie wpisz &&i wpisz następne polecenie, takie jak:

youtube-dl--add-metadata -xic http://(the url) && youtube-dl--add-metadata -xic http://(the url) 

1

Spróbuj ze skryptem bash:

while read LL ; do youtube-dl "$LL" ; done < your_file

1

Temat jest nadal aktualny, więc:

  • Uzyskaj link do YouTube.
  • Usuń pierwszy parametr wideo, zaczynając od ?
  • użyj w ten sposób :-)

    youtube-dl.exe --yes-playlist https://www.youtube.com/watch?list=yourlistlink
    

To działa dla mnie.

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.