YouTube trzyma wszystkie treści na swoich serwerach, a my je sobie streamujemy, nieraz wielokrotnie. Nigdy nie trafiają do nas na stałe.

Tak wygląda typowy, zaplanowany dla nas scenariusz.
Istnieje jednak wiele sytuacji, kiedy wolelibyśmy mieć ich filmiki u siebie:

  • Znaleźliśmy filmik, który bardzo nam się podoba, ale może niedługo zniknąć.

    W przypadku YouTube’a to nagminne. Znikają amatorskie teledyski ze scenami z komercyjnych produkcji. Filmiki o kontrowersyjnych (ale nie foliarskich) tematach. A czasem po prostu losowe rzeczy, kiedy automat okaże się nadgorliwy.

  • Nie chcemy być zależni od łączności z internetem.

    Być może wyruszamy w podróż? Dostęp do internetu może być niepewny albo drogi, jeśli korzystamy z danych mobilnych. Dlatego jest nam na rękę, żeby skompletować biblioteczkę przed wyjazdem.

  • Nie chcemy karmić Google’a historią tego, ile razy coś oglądaliśmy, kiedy robiliśmy pauzy i tak dalej. Już i tak za dobrze nas zna.
  • Chcemy być wierni przysłowiu „Lepszy wróbel w garści…”.

Niezależnie od naszych powodów, rozwiązaniem jest youtube-dl albo jego alternatywa, yt-dlp.
Bardzo wszechstronny program konsolowy, którym da się pobierać filmiki z YouTube’a (i wielu innych stron).

A ponieważ konsola może być dla wielu osób czymś nowym, napisałem ten przyjazny samouczek pokazujący, jak się z tym programikiem obchodzić. Sam opis instalacji dopasowałem do użytkowników Windowsa, ale reszta jest uniwersalna.

Aktualizacja 2023

Niedawno kontrowersyjny wyrok niemieckiego sądu doprowadził do ukarania stronki hostującej YtDl.
Walczyli o to producenci: Sony Entertainment, Warner Music Group oraz Universal Music. Wcześniej próbowali również strącić kod źródłowy programu, ale im się nie udało.
Od tego czasu coraz częściej poleca się zamiennik. Nosi nazwę yt-dlp, obsługuje się go tak samo jak poprzednika. Dopasowałem do niego część instrukcji z tego samouczka.
Poza tym stworzyłem osobny samouczek dotyczący instalacji na smartfonie z systemem Android (w apce Termux).

Uwaga

Jeśli na konsolę reagujemy alergicznie i za żadną cenę nie chcemy z niej skorzystać, to istnieją również programy z graficznym interfejsem. Dobrze oceniany jest na przykład ten od użytkownika jely2002.
Warto jednak pamiętać, że będzie aktualny tylko dopóty, dopóki twórcy się chce. Nie mamy gwarancji, że będzie na bieżąco ze zmianami w podstawowej, konsolowej wersyjce.

Instalacja na Windowsie

Zaczynajmy!

Najpierw pobieramy plik EXE. Ten dla yt-dlp – nowszej, mniej problematycznej wersji – znajdziemy tutaj.

Ustalanie folderu dla pliku

Gdy już mamy plik na dysku, to warto ustalić, do jakiego specjalnego folderu go wrzucić, żeby dał się przywoływać z dowolnego miejsca. Opcji jest kilka.

  • Możemy spróbować do C:\Windows. Zwykle jest domyślnie aktywny, przynajmniej na Windowsie 10. Tylko trzeba kliknąć, że mamy uprawnienia administratora.

  • Można też wyklikać drogę do C:\Użytkownicy\NAZWA\AppData\Local\Microsoft\WindowsApps.

    Przy czym Użytkownicy będą się nazywali inaczej, jeśli mamy ustawiony inny język systemu. Zamiast NAZWA będziemy mieli swój login. A po drodze warto włączyć wyświetlanie ukrytych folderów, żeby ujrzeć AppData.

A jeśli chcemy zobaczyć wszystkie możliwości, to warto podejrzeć zmienne systemowe.
W tym celu włączamy konsolę PowerShell. Możemy to zrobić na kilka sposobów:

  • Przez menu startowe.
    Klikamy ikonę Windowsa w dolnym lewym rogu, przewijamy do zakładki Windows PowerShell, klikamy.

  • Z klawiatury.
    Naciskamy jednocześnie klawisz z ikoną Windowsa (dolna część klawiatury) oraz przycisk X. Następnie naciskamy I (jak Irena).

  • Przez Eksplorator Plików.
    Możemy przejść do dowolnego folderu i wybrać z górnego paska Plik, a następnie Otwórz program Windows PowerShell.

Gdy pojawi się konsola, to wpisujemy w nią:

$env:path -split ";"

Potwierdzamy Enterem. Wyświetlą nam się, jeden pod drugim, foldery z kategorii PATH.

To coś w rodzaju przegródek szybkiego dostępu. Kiedy mamy w tych folderach jakieś pliki EXE, to możemy je łatwo uruchamiać. Wystarczy wpisać w PowerShella samą ich nazwę zamiast pełnej ścieżki.

Zatem otwieramy Eksploratora, bierzemy nasz pobrany wyżej plik EXE i przenosimy go do któregoś z folderów z listy (za wyjątkiem System32! Odradzają to na stronie projektu).

Od teraz, kiedy wpiszemy w PowerShella yt-dlp, powinno nam wyświetlać, że działa (ale potrzebuje linka):

Okno konsoli z wpisanym tekstem 'youtube-dl'. Pod spodem widać informację, że trzeba podać co najmniej jeden adres uRL.

Alternatywna metoda instalacji

Powyższy sposób – polegający na umieszczeniu pliku w odpowiednim folderze – jest bardzo intuicyjny. I działa.

Tym niemniej instalacja przez pip (moduł Pythona) ma nieco więcej zalet.
Pozwala szybko i łatwo aktualizować program, gdyby coś przestało działać wskutek zmian YouTube’a. Wystarczy jedna komenda w konsoli zamiast pobierania nowego EXE i zastąpienia nim starego.

Gdybyście byli gotowi spróbować, to polecam opis na stronie yt-dlp. To dosłownie parę komend konsolowych.

Instalacja na Androidzie

Gdyby ktoś chciał używać yt-dlp również na urządzeniu mobilnym, to mam dobrą wiadomość – na systemie Android to całkiem możliwe! Żeby nie zajmować tu miejsca, wydzieliłem instrukcje do osobnego samouczka.

Zdobywanie linków

Gdy już mamy konsolę i wiemy że działa, możemy pobierać do woli.

Najpierw musimy odwiedzić YouTube’a, żeby zdobyć link do filmu. Jako przykładu użyję satyrycznej reklamy GmailMan sprzed 10 lat.
Wykonał ją Microsoft, żeby reklamować swoje usługi, a przy tym dać prztyczka w nos Google’owi i jego zwyczajowi zbierania danych z maili.

Zgadzam się z jej sednem; ale jest w tym pewna ironia losu, patrząc na to, że sami od teraz wymagają posiadania u siebie konta, żebyśmy mogli w ogóle używać Windowsa.

Wracając do rzeczy! Po wejściu na stronkę klikamy dwukrotnie link z paska i go kopiujemy:

Zrzut ekranu z YouTube'a. Widoczna stopklatka z filmiku pokazuje uśmiechniętego mężczyznę trzymającego koperty w kształcie ikony Gmaila. Adres strony z górnego paska wyróżniono czerwoną ramką, a pod spodem dodano napis 'Control plus C'.

Wygląda tak:

https://www.youtube.com/watch?v=9x4_dozWkq0

Na tym kończy się część dotycząca YouTube’a. Zdobyty link można wysłać znajomym.
Zaś wszystko poniżej dotyczy bliżej nieokreślonych, lubiących się z programikiem filmów.

Korzystanie z programu

Aby pobierać filmik, wystarczy wpisać w konsoli yt-dlp (w starej wersji youtube-dl), potem spację, a potem wkleić link do filmu. Zostanie pobrany do tego samego folderu, w którym odpaliliśmy PowerShella, w najlepszej dostępnej jakości.

yt-dlp LINK_DO_FILMU

Czasem jednak nie potrzebujemy najbardziej odpicowanej wersji. W tej sytuacji możemy sobie wyświetlić listę dostępnych formatów, dopisując -F:

yt-dlp -F LINK_DO_FILMU

Pokaże nam się coś w tym stylu:

Lista formatów wyświetlonych jeden pod drugim

Po lewej stronie mamy liczby odpowiadające poszczególnym formatom, a po prawej stronie ich opisy. Żeby pobrać któryś z nich, wpisujemy -f, a potem liczbę odpowiadającą danej wersji. Czyli na przykład:

yt-dlp -f 242 LINK_DO_FILMU

Uwaga: Zwracajmy uwagę na opisy plików. Czasem, szczególnie w górnej części listy, mamy pliki będące samym dźwiękiem albo obrazem (audio onlyvideo only). Gotowe kombinacje obrazu i dźwięku znajdziemy na końcu listy.

Oprócz liczb mamy też parę gotowych komend. Chcemy sam dźwięk (przydatne przy piosenkach)? Żaden problem, nie trzeba nawet wyświetlać listy formatów! Wpisujemy -f bestaudio.

yt-dlp -f bestaudio LINK_DO_FILMU

A jeśli chcemy jakieś nietypowe połączenie? Na przykład najniższą jakość obrazu i najwyższą dźwięku? Wpisujemy -f, liczbę odpowiadającą plikowi wideo, plusa i liczbę odpowiadającą plikowi audio (kolejność ważna!).

Patrzę na listę szczegółów i widzę, że najmniejszy obraz ma rozdzielczość 256x144, odpowiada mu liczba 278. A pliku audio nie wypatruję, tylko wpisuję gotowca:

yt-dlp -f 278+bestaudio LINK_DO_FILMU

To tylko ułamek możliwości tego programiku. Pozwala też m.in. na pobieranie całych playlist. Ale z tej funkcji akurat nie miałem potrzeby korzystać, więc na jej temat się nie wypowiem.

Porada

Ten program zapisuje pobierane filmiki do aktywnego folderu. Dlatego, jeśli chcemy je na przykład zapisać do folderu Wideo, to musimy właśnie tam otworzyć naszą konsolę.
W przypadku Windowsa wystarczy włączyć Eksploratora, przejść do tego folderu, a potem uruchomić tam PowerShella przez menu Plik z górnego paska.
„Hakierzy” mogą też poruszać się po folderach, korzystając z komendy konsolowej cd.

Rozwiązywanie błędów

Nasz programik musi niestety stale gonić YouTube’a oraz jego wewnętrzne mechanizmy, które nieraz się zmieniają. Nie unikniemy przez to sytuacji, kiedy raz na jakiś czas wyskoczy nam błąd.

Ale bez obaw! Zwykle jest więcej osób mających taki problem jak my, a naprawienie nieraz sprowadza się do pobrania nowszej wersji. A potem na długi czas mamy spokój.

Ogólna zasada – jeśli w konsoli wyświetlił nam się tekst, to patrzymy co mamy na dole, po słowie ERROR:. Treść takiego komunikatu można wkleić w wyszukiwarkę, żeby poszukać rozwiązania.

A parę powszechnych przypadków omówię dla naszej wygody w tym miejscu.

Zawieszenie programu

Jeśli zerwie nam połączenie, to programik może się zawiesić. Licznik stoi w miejscu, niczego nie pobiera.

W takiej sytuacji otwieramy to samo okno konsoli, w którym pracował. Po czym:

  • najpierw naciskamy Ctrl+C, żeby przerwać aktualną komendę;
  • następnie strzałkę do góry, żeby ponownie wyświetliła się poprzednia komenda (yt-dlp…);
  • potwierdzamy, wciskając Enter.

I voila! Jeśli już mamy łączność, to zacznie nam pobierać od miejsca, w którym poprzednio się zatrzymało.

Odmowa dostępu

Wyświetla się jako HTTP Error 403: Forbidden.

Czasami to chwilowy zgrzyt i wystarczy spróbować ponownie. Strzałka w górę, żeby ponownie wyświetlić komendę. Enter, żeby ją wykonać. Zazwyczaj mi wtedy działa.

Innym razem sam filmik ma jakieś ograniczenia. Na przykład te wprowadzone przez Google, żeby wyciągnąć od nas zdjęcie dowodu albo numer konta. Zwykle omijam je szerokim łukiem, więc chwilowo nie wiem, czy jest jakieś proste obejście.

Film niedostępny/usunięty

W takim przypadku wyświetli nam się komunikat Video unavailable.
Oznacza to zapewne, że film został usunięty w przedziale czasowym między wejściem na stronę a rozpoczęciem pobierania. Może usunął go autor, może automatyczna moderacja.

Wyjątkowy pech. Zdarzyło mi się to dosłownie raz, niedawno.

A Wasz film? Jeśli macie nadal otwartą stronę, to zapewne jesteście w stanie go nadal oglądać (serwis jeszcze będzie przez chwilę podtrzymywał połączenie, zanim usunie sam plik). Być może możecie go nawet odzyskać z pamięci podręcznej.

W każdym razie w takiej sytuacji gra się toczy o wysoką stawkę – gdy zamkniecie okno przeglądarki z tym filmem, to możecie już go nie zobaczyć. Jeśli jest fajny, ale nie umielibyście go wyłuskać z pamięci podręcznej, to może warto nawet odpalić jakieś OBS Studio i nagrać ekran wraz z dźwiękiem :wink:

Inne błędy

Z czasem trafi się jakiś nieoczekiwany błąd. Może wynikać z tego, że co jakiś czas YouTube wprowadza większe zmiany za kulisami, przez co psuje youtube-dl i yt-dlp.

Ale autorzy zwykle szybko nadganiają. Wtedy po prostu bierzemy od nich najnowszą wersję i zastępujemy nią poprzednią.

To równocześnie jeden z argumentów przemawiających za tym, żeby korzystać z wersji konsolowej, a nie graficznej. Łatwiej być na bieżąco.

Wszelkie nakładki graficzne może i są przyjaźniejsze, ale nadal zależą od podstawowego, konsolowego programu. Gdy Google coś popsuje, to najpierw źródło musi naprawić to u siebie, a potem autorzy wersji graficznej (którzy mogą np. być akurat na wakacjach) po swojej stronie.

„Unable to extract uploader_id”

W moim przypadku dotknął wersji 2021.12.17, czyli najnowszej dostępnej na stronie youtube-dl. Być może nie aktualizują wersji przez to, że organizacje branżowe próbowały im robić problemy. Ale kod na szczęście zmieniają na bieżąco.

W tym wypadku zwykła aktualizacja nie działa, bo numer działającej i niedziałającej wersji jest taki sam. Ale rozwiązanie opisali w dyskusji na Githubie.

Ogólnie: trzeba zdobyć wersję najnowszą i siłowo zastąpić nią wersję poprzednią.

W przypadku „instalacji” przez włożenie pliku EXE do folderu pomogłoby zapewne zdobycie jego nowszej wersji i zastąpienie nią starej (mimo że formalnie mają ten sam numer wersji), ale tego nie testowałem.

Osobiście instalowałem wcześniej youtube-dl przez Pythona, a dokładniej pip. W takim wypadku pomogło wpisanie komendy:

pip install --force-reinstall 'https://github.com/ytdl-org/youtube-dl/archive/refs/heads/master.tar.gz'

…I się naprawiło!

Jeśli mamy Linuksa, na którym pip odpowiada starszemu Pythonowi 2, to wpisalibyśmy zamiast niego pip3.

Jeśli instalowaliśmy dla całego systemu, to przed komendą trzeba jeszcze dopisać sudo i spację, a potem podać hasło.

I to tyle! Życzę szybkich pobrań i miłego oglądania!