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 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ć.

Uwagi na temat starszego youtube-dl

Kiedyś polecałem w tym samouczku program youtube-dl, prekursora yt-dlp.

Potem jednak 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 zaczęto polecać zamiennik wolny od prawnego ryzyka. Nosi nazwę yt-dlp, obsługuje się go tak samo jak poprzednika. Dopasowałem do niego instrukcje z tego samouczka.

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.

Spis treści

Instalacja na Windowsie

Zaczynajmy!
Najpierw pobieramy plik EXE. Ten dla yt-dlp znajdziemy na oficjalnej stronie projektu.

Ustalanie folderu dla pliku

Możemy teraz otworzyć Eksploratora (przeglądarkę plików), skopiować/wyciąć pobrany plik i umieścić go w odpowiednim miejscu.

Windows posiada kilka folderów o specjalnych właściwościach. Jeśli umieścimy nasz plik EXE w którymś z nich, to będziemy mogli go łatwo przyzywać przez konsolę, wpisując samo yt-dlp, bez pełnej ścieżki.

Opcji jest kilka, zaproponuję tu dwie.

  • Folder C:\Windows. Zwykle jest domyślnie aktywny, przynajmniej na Windowsie 10. Tylko trzeba kliknąć, że mamy uprawnienia administratora.

  • Można też wyklikać drogę do takiej ścieżki:

    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 pokazał się AppData.

Jeśli z jakiegoś powodu nie pasuje nam żaden z tych dwóch folderów specjalnych, to możliwości jest więcej. Ale tutaj już przyda się użycie konsoli, która na Windowsie nosi nazwę PowerShell.

Jak uruchomić konsolę
  • 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.

Inne foldery specjalne na Windowsie

Foldery specjalne (szybkiego dostępu), które opisałem wyżej, są na Windowsie wymienione w tak zwanej zmiennej PATH.

Można się zapoznać z jej zawartością, uruchamiając PowerShella i wpisując w niego:

$env:path -split ";"

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

Każdy z wypisanych folderów powinien być godnym miejscem na plik EXE z naszym pobierakiem multimediów (za wyjątkiem System32! Odradzają ten folder na stronie projektu).

Zatem otwieramy Eksploratora, bierzemy nasz pobrany wyżej plik EXE i przenosimy go do któregoś z folderów z listy.

Sprawdzenie czy działa

Teraz warto jeszcze sprawdzić, czy nasz plik EXE faktycznie stał się łatwo dostępny z konsoli.
Można uruchomić PowerShella, wpisać w niego samo yt-dlp i wcisnąć klawisz Enter. Powinno wyświetlić informację, że program działa (ale potrzebuje linka):

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

Instalacja przez PIP (uniwersalna)

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

Ale gdyby pojawiła się konieczność zaktualizowania programu, to trzeba za każdym razem go pobierać, usuwać poprzedni plik EXE (albo odpowiednik z innego systemu) i wstawiać zamiast niego nowy.

Jeśli ktoś woli szybsze i prostsze aktualizacje, to warto postawić na instalację przez pip (moduł języka Pythona). Jeśli chcecie spróbować, to polecam opis na stronie yt-dlp.

Na Windowsie sprawa sprowadza się do pobrania i zainstalowania Pythona oraz wkucia jednej komendy konsolowej.

W przypadku Linuksa sprawa nieco się komplikuje. Z jednej strony zwykle nie trzeba instalować Pythona, bo jest domyślnie dostępny. Ale z drugiej – ten systemowy ma ograniczone możliwości.
Po szczegóły odsyłam parę linijek niżej.

Instalacja na Linuksie

Dawniej w przypadku Linuksa polecałbym w ciemno instalację i aktualizowanie przez PIP.

Obecnie jednak sprawy nieco się pogmatwały, bo różne Linuksy zaczęły traktować Pythona systemowego jak osobną wersję, której lepiej nie modyfikować. Po wpisaniu typowej komendy instalującej najnowszą wersję pojawiłby się błąd Externally managed environment. Ten problem występuje choćby na Mincie, Linuksie którego używam.

Rozwiązanie „prawilne” zalecane na forach (używanie Pythona przez środowiska wirtualne) wydaje mi się mało komfortowe przy yt-dlp. Powinien być łatwy w użyciu: widzi się film, kopiuje link do konsoli, zdobywa film. Stawianie środowisk byłoby z tym sprzeczne.

Istnieje metoda prosta jak kiedyś, choć nieco brawurowa i wiążąca się z ryzykiem; opisałem ją pod koniec wpisu.

W tej części pokażę coś pomiędzy: metodę bezawaryjną, ale nieco okrężną, podobną do tej z Windowsa – pobranie pliku z oficjalnej strony. Gdyby pojawiła się potrzeba aktualizacji, to trzeba wszystko wykonać od nowa dla nowszej wersji i zastąpić nią starszą.

Instalacja krok po kroku
  • Odwiedzamy listę wydań na stronie projektu, wybieramy najnowsze i pobieramy plik o nazwie yt-dlp_linux.

    Jest tam parę podobnych, zawierających w nazwie tekst aarch oraz arm. Jeśli jednak mamy typowego laptopa, to te pozostałe nas nie interesują.

  • Włączamy plikowi wykonywalność (uprawnienie do działania jako program) – wystarczy to zrobić raz.

    Na niektórych Linuksach można kliknąć plik prawym przyciskiem myszy, wybrać Właściwości, przejść w zakładkę Uprawnienia i tam zaznaczyć opcję Pozwól na uruchamianie pliku jako programu albo coś zbliżonego.

    Inna, uniwersalna opcja? Sposób konsolowy. Uruchamiamy terminal w tym samym folderze co plik (np. klikając pustą przestrzeń obok pliku prawym przyciskiem myszy i wybierając Otwórz w terminalu).
    Następnie wpisujemy chmod +x yt-dlp_linux (zamiast ręcznie wpisywać nazwę, w przypadku Minta można chwycić plik i upuścić go wewnątrz terminala).

  • Uruchamiamy program.

    Klikanie ikonki pliku wewnątrz graficznej przeglądarki może nie działać, więc lepiej otworzyć terminal w tym samym folderze.
    Od teraz będzie można używać programu zgodnie z przykładami z dalszej części wpisu. Jedyna różnica: we wszystkich poleceniach zamiast yt-dlp należy wpisywać na początku ./yt-dlp_linux.

Osoby chcące wołać program samą jego nazwą, bez konieczności wchodzenia do jego folderu i dopisywania ./ na początku, mogą go skopiować do folderu szybkiego dostępu, jak /usr/bin. Polecenie kopiujące:

sudo cp yt-dlp_linux /usr/bin

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! Wymaga jedynie zainstalowania i użycia (darmowej, otwartoźródłowej… I świetnej) aplikacji Termux.

Ż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, 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 wyświetlać listy formatów ani szukać liczby!
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 z internetem, 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 znów pojawił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:

Błąd Externally managed environment

Ten błąd może się pojawić, jeśli spróbujemy zainstalować albo zaktualizować yt-dlp przez Pythona, a dokładniej przez PIP-a, jeden z jego modułów.
Oznacza, że twórcy systemu celowo utrudnili możliwość modyfikacji systemowego Pythona. Tak jest na przykład na systemie Linux Mint.

W tym konkretnym przypadku istnieje rozwiązanie grzeczne, choć nieco okrężne (opisane w części „Instalacja na Linuksie”), a także szybkie i potencjalnie ryzykowne, które umieszczę tutaj.

W dniu pisania tej porady (30.07.2025) mogę po prostu olać ostrzeżenia, wpisując w konsoli groźnie brzmiący tekst:

pip install --break-system-packages -U yt-dlp

W przypadku Minta olanie ryzyka wydaje mi się uzasadnione – yt-dlp to duży i znany projekt; zachowuje się grzecznie i nie wpycha nosa w kluczowe pliki. Choć jest wśród pakietów systemowych, nie stanowi żadnego filara, a jedynie narzędzie pomocnicze jednego z załączonych programów do streamowania.

Nie mogę jednak ręczyć za inne systemy ani obiecać, że na Mincie coś się nie zmieni. Gdyby twórcy wbrew godności człowieka uznali, że zrobią z tego programu fundament systemu, to wykonanie polecenia wyżej mogłoby coś popsuć. Czujcie się ostrzeżeni :smiling_imp:

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, którymi psuje naszego konsolowego pobieracza.

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.
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) muszą sięgnąć po jego nową wersję.

Przy wersji konsolowej wystarczy zaś zwykle szybka aktualizacja prosto od twórców.

„Unable to extract uploader_id”

Opis starego błędu

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!