Provoz yt-dlp na VPS dá dlouhým stahováním stroj, který zůstane online i poté, co zavřete notebook. Zároveň vytvoří čistou cestu od naplánovaného stažení kanálu k mediální knihovně, kterou dokáže načíst Jellyfin.
Server mění tři části pracovního postupu: instalace potřebuje aktuální závislosti pro YouTube, videa vázaná na účet potřebují bezpečný přenos cookies a automatizace potřebuje promyšlené tempo požadavků. Následující nastavení řeší všechny tři, aniž by předpokládalo, že každé stažení vyžaduje cookies, webové rozhraní nebo poskytovatele PO Tokenů.
Stručně
- Nainstalujte yt-dlp do virtuálního prostředí Pythonu spolu s ffmpeg, ffprobe, yt-dlp-ejs a podporovaným běhovým prostředím JavaScriptu. Projekt aktuálně doporučuje Deno.
- Začněte bez cookies účtu. Přidejte je jen u soukromých playlistů, videí s věkovým omezením, obsahu pro členy nebo jiného případu vázaného na účet.
- Ponechte výchozí chování yt-dlp s jedním fragmentem, dokud nebudete mít změřený důvod ke změně. Ke snížení tlaku požadavků použijte volby s prodlevou a rozprostřené plány.
- Holé CLI plus systemd je nejjednodušší spolehlivé řešení. Zvolte Pinchflat pro bezobslužná pravidla kanálů, MeTube pro frontu v prohlížeči nebo Tube Archivist pro prohledávatelné rozhraní ke sledování.
- Berte úložiště jako hlavní proměnnou při dimenzování. Než koupíte diskovou kapacitu na celý archiv, otestujte reprezentativní vzorek.
Používejte yt-dlp zodpovědně
Média archivujte jen tehdy, když k tomu máte svolení a vaše použití je v souladu s podmínkami platformy a platnými zákony.
- Dobrými kandidáty jsou vaše vlastní nahrávky, díla ve veřejném vlastnictví a materiál, u něhož držitel práv stahování povolil.
- Předplatné YouTube Premium samo o sobě nedává právo kopírovat videa mimo funkce, které YouTube nabízí.
- Oprávnění a omezení YouTube omezují stahování a automatizovaný přístup, pokud jej služba nebo příslušní držitelé práv nepovolí.
- Tento návod se nevěnuje obcházení DRM, komerčnímu šíření ani způsobům, jak obejít vynucování pravidel platformy.
Co potřebujete před začátkem
Základní instalace je malá, mediální soubory nikoli. Než začnete stahovat celý kanál, připravte server i cestu k úložišti.
- VPS s Ubuntu 22.04 nebo novějším, případně s aktuálním vydáním Debianu, a přístupem přes SSH
- Python 3.10 nebo novější
- Dost místa na reprezentativní vzorek plus rezerva na částečné soubory a následné zpracování
- Samostatný lokální prohlížeč, jen pokud potřebujete cookies účtu
- Volitelně: Jellyfin, Emby nebo jiný mediální server, který umí číst adresář archivu
Proč dát yt-dlp na VPS?
VPS se hodí, když má úloha běžet nezávisle na vašem každodenním počítači. Dá stahovači trvalý proces, předvídatelný souborový systém a plánovač, který se nezastaví, když notebook usne nebo změní síť.
Na kompromisech záleží. Měsíční přenosový limit vašeho serveru se může stát překážkou, když archiv streamujete zase ven, a IP adresa VPS může narazit na limity požadavků dřív než vaše domácí připojení. Na vás jsou také aktualizace, práce s přihlašovacími údaji, zálohy, úklid úložiště i zabezpečení mediálního serveru. Na jednorázové stažení je notebook jednodušší. Na opakované stahování nebo sdílenou knihovnu se VPS provozuje snáz.
Dimenzujte VPS podle úložiště a přehrávání
yt-dlp média stahuje a přebaluje; obvykle nepřekódovává každý soubor. Trvalé nároky stahovače na procesor a paměť tak zůstávají skromné, zatímco spotřeba místa na disku kolísá podle délky videa, rozlišení, kodeku a zvoleného formátu.
Berte tyto hodnoty jako konzervativní výchozí body, ne jako oficiální minima:
| Nastavení | Výchozí přidělení | Přístup k úložišti | Nejlepší volba |
|---|---|---|---|
| Holé yt-dlp se systemd | 2 vCPU, 2 GB RAM | Dimenzovat podle vzorku | Naplánovaná stahování bez rozhraní |
| MeTube nebo Pinchflat | 2 vCPU, 4 GB RAM | Dimenzovat podle vzorku | Fronta v prohlížeči nebo odběry kanálů |
| Tube Archivist | 4 vCPU, 8 GB RAM | Lokální disk s rezervou na růst | Prohledávatelný archiv s vestavěným přehráváním |
Malý test potřebuje zhruba 2 GB dostupné paměti a střední až velká instalace zhruba 4 GB, jak uvádí průvodce nasazením Tube Archivist. Začít nad touto hranicí nechává prostor operačnímu systému, Dockeru, činnosti Elasticsearche i další službě, jako je Jellyfin.
Než začnete dimenzovat celý archiv, nasimulujte nebo stáhněte reprezentativní skupinu ve zvoleném rozlišení. Výsledný adresář zkontrolujte pomocí du, vydělte počtem dokončených videí a počítejte i s neobvykle dlouhými nahrávkami.
du -sh ~/archive
find ~/archive -type f \( -name '*.mp4' -o -name '*.mkv' \) | wc -l
df -h ~/archive
Vzorek je užitečnější než obecný odhad v gigabajtech na video, protože odráží skutečnou délku a mix formátů daného kanálu.
Instalace yt-dlp a jeho aktuálních závislostí
Projekt yt-dlp podporuje Python 3.10 a novější. Seznam závislostí yt-dlp důrazně doporučuje ffmpeg, ffprobe, yt-dlp-ejs a podporované běhové prostředí JavaScriptu pro plnou podporu YouTube.
Začněte systémovými balíčky a izolovaným prostředím Pythonu:
sudo apt update
sudo apt install -y python3 python3-venv ffmpeg curl nano
python3 -m venv ~/yt-dlp-venv
source ~/yt-dlp-venv/bin/activate
python -m pip install -U --pre "yt-dlp[default]"
Deno je v yt-dlp ve výchozím stavu zapnuté a je to běhové prostředí, které aktuálně doporučuje průvodce EJS průvodce EJS daného projektu. Nainstalujte ho, přidejte do cesty svého shellu a ověřte každou součást:
curl -fsSL https://deno.land/install.sh | sh
export PATH="$HOME/.deno/bin:$PATH"
echo 'export PATH="$HOME/.deno/bin:$PATH"' >> ~/.profile
yt-dlp --version
ffmpeg -version | head -1
deno --version
yt-dlp --simulate --verbose "https://www.youtube.com/watch?v=VIDEO_ID"
Podrobný výstup vypíše závislosti, které yt-dlp vidí. Pokud ffmpeg chybí, yt-dlp na to upozorní a nedokáže spojit oddělené video a audio stopy v nejlepší kvalitě ani provést několik kroků následného zpracování.
U instalace přes pip aktualizujte tak, že pip spustíte znovu uvnitř virtuálního prostředí. Vestavěný příkaz yt-dlp -U je určen pro binárky vydání, ne pro balíčky z pipu.
source ~/yt-dlp-venv/bin/activate
python -m pip install -U --pre "yt-dlp[default]"
Aktualizační kanály popisují poznámky k aktualizaci yt-dlp. K dispozici jsou kanály stable, nightly i master a běžným uživatelům projekt doporučuje nightly, protože opravy extraktorů tam dorazí dřív než v příštím stabilním vydání.
Cookies přidávejte jen u obsahu vázaného na účet
Cílovou adresu nejprve zkuste bez cookies. Průvodce yt-dlp pro YouTube uvádí, že cookies jsou potřeba jen u obsahu vyžadujícího účet, tedy u soukromých playlistů, videí s věkovým omezením a obsahu pro členy. Přihlášení přes OAuth už s yt-dlp nefunguje.
Když jsou cookies opravdu potřeba, vyexportujte na svém lokálním počítači vyhrazenou relaci YouTube. Postup projektu pro export cookies používá okno anonymního prohlížení, aby YouTube nevyměnil exportovanou relaci v otevřené běžné kartě:
- Otevřete jedno anonymní nebo soukromé okno a přihlaste se na YouTube.
- Ve stejné kartě otevřete soubor robots.txt YouTube.
- Vyexportujte jen cookies z youtube.com ve formátu Netscape, a to některým z rozšíření uvedených ve FAQ yt-dlp.
- Zavřete anonymní okno a tuto relaci už znovu neotvírejte.
- Zkopírujte soubor na VPS a omezte jeho oprávnění.
scp cookies.txt your-user@your-vps-ip:~/cookies.txt
ssh your-user@your-vps-ip 'chmod 600 ~/cookies.txt'
Otestujte soubor na adrese, která vyžaduje účet:
~/yt-dlp-venv/bin/yt-dlp \
--cookies ~/cookies.txt \
--simulate \
"https://www.youtube.com/watch?v=VIDEO_ID"
Soubory cookies jsou přihlašovací údaje relace a rozšíření prohlížeče je třeba vybírat obezřetně, jak uvádí FAQ yt-dlp ke cookies. Průvodce extraktorem YouTube také varuje, že používání účtu s yt-dlp může vést k dočasnému nebo trvalému zablokování. Cookies používejte jen tam, kde je cíl vyžaduje, soubor držte v soukromí a použijte samostatný účet místo svého hlavního účtu Google.
Nedávejte --cookies do globální konfigurace, když je většina cílů veřejná. Použijte druhý konfigurační soubor nebo přidejte přepínač jen k úlohám, které ho potřebují.
Berte PO Tokeny jako podmíněné řešení potíží
Proof of Origin Token není univerzální požadavek instalace. YouTube tyto tokeny aktuálně vyžaduje jen u některých kombinací klienta a požadavku a přesná matice se mění.
Když výchozí klienti selžou, doporučuje se plugin poskytovatele pro klienta mweb, jak uvádí průvodce yt-dlp k PO Tokenům. Uvádí bgutil-ytdlp-pot-provider jako jednu z doporučených možností, tento plugin ale vyžaduje jak poskytovatele tokenů, tak plugin pro yt-dlp. Nainstalovat jen balíček pro Python není kompletní nastavení.
Když stahování z YouTube selže, postupujte v tomto pořadí:
- Aktualizujte yt-dlp, yt-dlp-ejs a běhové prostředí JavaScriptu.
- Chybu zreprodukujte s --verbose a bez dodatečného přepsání klienta.
- Cookies přidejte jen tehdy, když video vyžaduje účet.
- Pokud chyba ukazuje na vynucování PO Tokenů, řiďte se aktuálními pokyny poskytovatele, na které odkazuje oficiální průvodce.
Tím udržíte nestálé provizorní řešení mimo jinak stabilní základní instalaci.
Vyberte frontend podle pracovního postupu
Hlavní rozhodnutí není, které rozhraní má nejdelší seznam funkcí. Určete, jestli potřebujete frontu v prohlížeči, odběry řízené pravidly, nebo kompletní lokální knihovnu ve stylu YouTube.
| Možnost | Nasazení | V čem vyniká | Hlavní kompromis |
|---|---|---|---|
| Holé CLI | Žádný frontend | Skripty, konfigurační soubory, systemd, přesná kontrola nad přepínači | Bez rozhraní v prohlížeči |
| MeTube | Jeden kontejner Docker | Stahování z prohlížeče plus odběry kanálů a playlistů | Omezená správa knihovny po stažení |
| Pinchflat | Jeden kontejner Docker | Pravidla pro kanály a playlisty, RSS, retence, výstup pro media centrum | Postavené pro správu stahování, ne pro sledování v aplikaci |
| Tube Archivist | Kontejnery aplikace, Redisu a Elasticsearche | Vyhledávání, metadata, fronty, stránky kanálů a přehrávání | Nejvyšší nároky na paměť i provoz |
Pro odlehčený postup v prohlížeči podporuje MeTube odběry kanálů a playlistů, které pravidelně kontrolují nové položky a samy je řadí do fronty. Zůstává nejjednodušší volbou, když chcete hlavně webový formulář a frontu stahování.
Pinchflat nejlépe sedne na průběžnou archivaci kanálů, které pak budete konzumovat přes Jellyfin, Plex, Kodi nebo RSS klienta. Je soběstačný, pravidelně kontroluje zdroje, podporuje pravidla retence a přehrávání záměrně nechává jiné aplikaci.
Tube Archivist si své služby navíc zaslouží tehdy, když chcete, aby se samotný archiv choval jako prohledávatelný videoweb. Pokud vám přehrávací rozhraní už dává Jellyfin, začněte holým CLI nebo Pinchflatem a Tube Archivist přidejte teprve tehdy, až jeho model vyhledávání a metadat vyřeší problém, který skutečně máte.
Sestavte opakovatelnou konfiguraci archivu
Trvalé volby držte v jednom souboru a URL kanálu předávejte z příkazové řádky nebo z plánovače. Tento příklad omezuje výstup na 1080p, zapisuje ID dokončených videí, mírně rozprostírá požadavky a ukládá metadata, která zůstanou užitečná i mimo yt-dlp.
Vytvořte adresáře a konfigurační soubor:
mkdir -p ~/.config/yt-dlp ~/archive
nano ~/.config/yt-dlp/archive.conf
Přidejte tyto volby:
-P "~/archive"
-o "%(channel)s/%(upload_date>%Y-%m-%d)s - %(title)s [%(id)s].%(ext)s"
-f "bv*[height<=1080]+ba/b[height<=1080]"
--merge-output-format mp4
--download-archive ~/archive/downloaded.txt
--sleep-requests 1
--sleep-interval 5
--max-sleep-interval 10
--write-info-json
--write-thumbnail
--write-subs
--write-auto-subs
--sub-langs en.*
--embed-subs
--embed-thumbnail
--embed-metadata
--sponsorblock-mark all
Než dáte yt-dlp celý kanál, otestujte ho na jednom videu:
~/yt-dlp-venv/bin/yt-dlp \
--config-location ~/.config/yt-dlp/archive.conf \
"https://www.youtube.com/watch?v=VIDEO_ID"
Pak spusťte URL kanálu nebo playlistu se stejnou konfigurací:
~/yt-dlp-venv/bin/yt-dlp \
--config-location ~/.config/yt-dlp/archive.conf \
"https://www.youtube.com/@CHANNEL/videos"
Soubor --download-archive zaznamenává ID úspěšně stažených videí, takže je další běhy přeskočí. Zpočátku ponechte výchozí --concurrent-fragments 1. Průvodce yt-dlp pro YouTube doporučuje prodlevy mezi videi, když relace narazí na limity požadavků; univerzální bezpečný strop souběžnosti fragmentů pro IP adresy VPS ale neuvádí.
Naplánujte stahování pomocí systemd
Uživatelský časovač systemd dá úloze trvalé plánování i logy, aniž byste do cronu psali dlouhý příkaz. Náhodná prodleva navíc brání tomu, aby všechny naplánované zdroje startovaly ve stejnou vteřinu. Aby se nespoléhalo na PATH uživatelského správce, služba ukazuje yt-dlp přímo na výchozí místo instalace Dena.
Vytvořte službu:
mkdir -p ~/.config/systemd/user
nano ~/.config/systemd/user/yt-dlp-archive.service
[Unit]
Description=Archive a YouTube channel with yt-dlp
[Service]
Type=oneshot
ExecStart=%h/yt-dlp-venv/bin/yt-dlp --js-runtimes deno:%h/.deno/bin/deno --config-location %h/.config/yt-dlp/archive.conf https://www.youtube.com/@CHANNEL/videos
Vytvořte časovač:
nano ~/.config/systemd/user/yt-dlp-archive.timer
[Unit]
Description=Run the yt-dlp archive daily
[Timer]
OnCalendar=*-*-* 04:00:00
RandomizedDelaySec=30m
Persistent=true
[Install]
WantedBy=timers.target
Zapněte časovač a povolte uživatelské službě běžet, i když nejste přihlášeni:
systemctl --user daemon-reload
systemctl --user enable --now yt-dlp-archive.timer
sudo loginctl enable-linger "$USER"
systemctl --user list-timers
journalctl --user -u yt-dlp-archive.service -n 100 --no-pager
U více kanálů vytvořte pro každý kanál vlastní instanci služby nebo použijte samostatné časovače. Rozprostřete je v čase, místo abyste spouštěli několik velkých stahování naráz.
Propojte archiv s Jellyfinem
Připojte nebo zpřístupněte tentýž adresář ~/archive Jellyfinu a pak jej přidejte jako knihovnu. Pro syrové uspořádání kanál/datum se hodí knihovna Music Videos v Jellyfinu knihovna, která přijímá vnořené složky a libovolné názvy souborů bez online párování metadat. Označení není pro nehudební archiv ideální, ale souborové struktuře sedí lépe než typ „Shows“, jenž očekává složky seriálů a řad s názvy epizod ve tvaru SxxEyy. Vyhněte se Mixed Content, ledaže přijmete varování Jellyfinu, že jeho výsledky u metadat nemusí být spolehlivé.
Volby pro metadata, náhledový obrázek a titulky v konfiguraci yt-dlp uchovají užitečné informace vedle každého souboru nebo přímo v něm. Jellyfin přesto může vyžadovat ruční úpravy metadat, protože kanál na YouTube se na databázi televizních seriálů čistě nemapuje.
Pokud chcete názvy souborů a metadata šitá na Jellyfin s menší ruční prací, Pinchflat má pro tento postup přednastavení pro media centra. Širší volbu mezi mediálními servery rozebírá naše srovnání Jellyfinu a Plexu rozebírá kompromisy kolem přehrávání, vzdáleného přístupu a překódování.
Umístěte stack na trvale běžící server
Jakmile postup zafunguje na malé testovací sadě, přesuňte jej na Linux VPS od Cloudzy , aby naplánovaná stahování i vaše mediální knihovna zůstaly online, aniž by blokovaly váš každodenní počítač. Nasadit můžete také Jellyfin jako aplikaci na jedno kliknutí a jeho knihovnu nasměrovat na výstupní adresář yt-dlp.
Stavte na Linux VPS s root přístupem, NVMe a výkonem AMD EPYC.
Zobrazit Linux plányČasté dotazy
Potřebuje yt-dlp na VPS grafickou kartu?
Ne. yt-dlp umí média stáhnout a přebalit i bez grafické karty. GPU začne být důležité, až když Jellyfin nebo jiný mediální server musí video překódovat pro nekompatibilní klienty nebo pomalejší připojení; přímé přehrávání takový převod nepotřebuje.
Umí yt-dlp navázat na přerušené stahování?
Ano. yt-dlp má částečné soubory a navazování zapnuté ve výchozím stavu, takže pozdější běh obvykle naváže na už stažené fragmenty místo toho, aby začínal znovu. Pokud tohle chování chcete, nepřidávejte --no-continue, --no-part ani --force-overwrites.
