Ha a yt-dlp VPS-en fut, a hosszú letöltések olyan gépet kapnak, amely a laptop lecsukása után is online marad. Ezzel tiszta út nyílik az ütemezett csatornaletöltéstől a médiatárig, amelyet a Jellyfin be tud olvasni.
A kiszolgáló a munkafolyamat három részét változtatja meg: a telepítéshez aktuális YouTube-függőségek kellenek, a fiókhoz kötött videókhoz biztonságos sütiátvitel, az automatizáláshoz pedig tudatosan megválasztott kéréstempó. Az alábbi beállítás mindhármat kezeli anélkül, hogy feltételezné: minden letöltéshez süti, webes felület vagy PO Token-szolgáltató kell.
Röviden
- Telepítse a yt-dlp-t Python virtuális környezetbe az ffmpeg, az ffprobe, a yt-dlp-ejs és egy támogatott JavaScript-futtatókörnyezet mellé. A projekt jelenleg a Denót ajánlja.
- Kezdje fiókos sütik nélkül. Csak privát lejátszási listákhoz, korhatáros videókhoz, tagoknak szóló tartalomhoz vagy más, fiókhoz kötött esethez adja hozzá őket.
- Tartsa meg a yt-dlp alapértelmezett, egyfragmentumos viselkedését, amíg nincs mérésen alapuló oka a változtatásra. A kérésterhelés csökkentéséhez használjon várakoztatási beállításokat és eltolt ütemezést.
- A csupasz CLI systemddel a legegyszerűbb megbízható felállás. Válassza a Pinchflatet a kézi beavatkozás nélküli csatornaszabályokhoz, a MeTube-ot a böngészős várólistához, vagy a Tube Archivistet a kereshető nézőfelülethez.
- A tárhelyet tekintse a méretezés fő változójának. Mielőtt lemezkapacitást vásárolna egy teljes archívumhoz, teszteljen egy reprezentatív mintát.
Használja felelősen a yt-dlp-t
Csak akkor archiváljon médiát, ha van rá engedélye, és a felhasználás megfelel a platform feltételeinek és a vonatkozó jogszabályoknak.
- Jó jelöltek a saját feltöltései, a közkincsnek számító művek, és az olyan anyagok, amelyeknél a jogtulajdonos engedélyezte a letöltést.
- A YouTube Premium előfizetés önmagában nem ad engedélyt arra, hogy a YouTube által kínált funkciókon kívül másoljon videókat.
- A YouTube engedélyei és korlátozásai korlátozzák a letöltést és az automatizált hozzáférést, kivéve ha a szolgáltatás vagy az érintett jogtulajdonosok ezt engedélyezik.
- Ez az útmutató nem foglalkozik a DRM megkerülésével, a kereskedelmi továbbterjesztéssel, sem a platform intézkedéseinek kijátszásával.
Mire lesz szüksége indulás előtt
Az alaptelepítés kicsi, a médiafájlok nem. Készítse elő a kiszolgálót és a tárolási útvonalat, mielőtt egy teljes csatornát letöltene.
- Egy Ubuntu 22.04 vagy újabb, illetve aktuális Debian kiadású VPS, SSH-hozzáféréssel
- Python 3.10 vagy újabb
- Elegendő tárhely egy reprezentatív mintához, plusz tartalék a részleges fájloknak és az utófeldolgozásnak
- Külön helyi böngésző, csak ha fiókos sütikre van szüksége
- Opcionális: Jellyfin, Emby vagy más médiakiszolgáló, amely be tudja olvasni az archívum könyvtárát
Miért érdemes VPS-re tenni a yt-dlp-t?
A VPS akkor hasznos, ha a feladatnak a napi gépétől függetlenül kell futnia. A letöltőnek tartós folyamatot, kiszámítható fájlrendszert és olyan ütemezőt ad, amely nem áll le, ha egy laptop alvó módba kerül vagy hálózatot vált.
A kompromisszumok számítanak. A kiszolgáló havi forgalmi kerete korláttá válhat, amikor visszafelé streameli az archívumot, és egy VPS IP-címe hamarabb ütközhet kéréskorlátokba, mint az otthoni kapcsolata. Öné a frissítések, a hitelesítő adatok kezelése, a mentések, a tárhely takarítása és a médiakiszolgáló biztonsága is. Egyszeri letöltéshez egy laptop egyszerűbb. Ismétlődő letöltésekhez vagy közös médiatárhoz a VPS könnyebben üzemeltethető.
A VPS-t a tárhely és a lejátszás köré méretezze
A yt-dlp letölti és újracsomagolja a médiát; általában nem kódol át minden fájlt. Így a letöltő tartós processzor- és memóriaigénye szerény marad, a lemezhasználat viszont a videó hosszától, felbontásától, kodekjétől és a választott formátumtól függ.
Ezeket az értékeket óvatos kiindulópontnak vegye, nem hivatalos minimumnak:
| Beállítás | Kiinduló erőforrás | Tárhelystratégia | Legjobb illeszkedés |
|---|---|---|---|
| Csupasz yt-dlp systemddel | 2 vCPU, 2 GB RAM | Méretezés minta alapján | Ütemezett letöltések felület nélkül |
| MeTube vagy Pinchflat | 2 vCPU, 4 GB RAM | Méretezés minta alapján | Böngészős várólista vagy csatornafeliratkozások |
| Tube Archivist | 4 vCPU, 8 GB RAM | Helyi lemez növekedési tartalékkal | Kereshető archívum beépített lejátszással |
Egy kis teszthez körülbelül 2 GB szabad memória kell, közepes vagy nagy telepítéshez pedig körülbelül 4 GB, a Tube Archivist telepítési útmutatója. Ha e fölött indul, marad hely az operációs rendszernek, a Dockernek, az Elasticsearch munkájának és még egy szolgáltatásnak, például a Jellyfinnek.
Mielőtt egy teljes archívumot méretezne, szimuláljon vagy töltsön le egy reprezentatív csoportot a választott felbontásban. Nézze meg a keletkezett könyvtárat a du paranccsal, ossza el a befejezett videók számával, és számoljon a szokatlanul hosszú feltöltésekkel is.
du -sh ~/archive
find ~/archive -type f \( -name '*.mp4' -o -name '*.mkv' \) | wc -l
df -h ~/archive
A minta hasznosabb, mint egy általános, videónkénti gigabájtos becslés, mert a csatorna tényleges hosszait és formátumkeverékét tükrözi.
A yt-dlp és aktuális függőségeinek telepítése
A yt-dlp projekt a Python 3.10-es és újabb verzióit támogatja. A yt-dlp függőséglistája nyomatékosan ajánlja az ffmpeg, az ffprobe, a yt-dlp-ejs és egy támogatott JavaScript-futtatókörnyezet használatát a teljes YouTube-támogatáshoz.
Kezdje a rendszercsomagokkal és egy elkülönített Python-környezettel:
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]"
A Deno alapértelmezetten engedélyezett a yt-dlp-ben, és ezt a futtatókörnyezetet ajánlja jelenleg a projekt EJS-útmutatója EJS-útmutatója. Telepítse, vegye fel a shell elérési útjába, és ellenőrizzen minden összetevőt:
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"
A részletes kimenet felsorolja azokat a függőségeket, amelyeket a yt-dlp lát. Ha hiányzik az ffmpeg, a yt-dlp figyelmeztet, és nem tudja összefűzni a külön érkező, legjobb minőségű kép- és hangsávokat, sem több utófeldolgozási lépést végrehajtani.
Pipes telepítésnél úgy frissítsen, hogy a virtuális környezetben újra lefuttatja a pipet. A beépített yt-dlp -U parancs a kiadási binárisokhoz való, nem a pip-csomagokhoz.
source ~/yt-dlp-venv/bin/activate
python -m pip install -U --pre "yt-dlp[default]"
A frissítési csatornákat a yt-dlp frissítési megjegyzései. A stable, a nightly és a master csatorna is elérhető, és a projekt az átlagos felhasználóknak a nightlyt ajánlja, mert a kinyerőket érintő javítások előbb kerülnek oda, mint a következő stabil kiadásba.
Sütiket csak fiókhoz kötött tartalomhoz adjon hozzá
Előbb próbálja meg a cél-URL-t sütik nélkül. A yt-dlp YouTube-útmutatója szerint sütikre csak fiókot igénylő tartalomnál van szükség, például privát lejátszási listáknál, korhatáros videóknál és tagoknak szóló tartalomnál. Az OAuth-os bejelentkezés már nem működik a yt-dlp-vel.
Ha mégis sütikre van szükség, exportáljon egy külön YouTube-munkamenetet a helyi gépén. A projekt sütiexportálási eljárása privát böngészőablakot használ, hogy a YouTube ne cserélje le az exportált munkamenetet egy nyitva hagyott normál lapon:
- Nyisson meg egyetlen privát vagy inkognitóablakot, és jelentkezzen be a YouTube-ra.
- Ugyanabban a lapon nyissa meg a YouTube robots.txt fájlját.
- Csak a youtube.com sütijeit exportálja Netscape formátumban, a yt-dlp GYIK-jában felsorolt bővítmények egyikével.
- Zárja be a privát ablakot, és ne nyissa meg újra azt a munkamenetet.
- Másolja a fájlt a VPS-re, és szűkítse a jogosultságait.
scp cookies.txt your-user@your-vps-ip:~/cookies.txt
ssh your-user@your-vps-ip 'chmod 600 ~/cookies.txt'
Tesztelje a fájlt egy fiókot igénylő URL-lel:
~/yt-dlp-venv/bin/yt-dlp \
--cookies ~/cookies.txt \
--simulate \
"https://www.youtube.com/watch?v=VIDEO_ID"
A sütifájlok munkamenet-hitelesítő adatok, a böngészőbővítményeket pedig gondosan kell megválasztani, ahogy azt a yt-dlp sütikkel foglalkozó GYIK-ja írja. A YouTube-kinyerő útmutatója arra is figyelmeztet, hogy ha fiókot használ a yt-dlp-vel, az ideiglenes vagy végleges tiltáshoz vezethet. Sütiket csak akkor használjon, ha a cél megköveteli, tartsa titokban a fájlt, és a fő Google-fiókja helyett külön fiókot használjon.
Ne tegye a --cookies kapcsolót a globális konfigurációba, ha a célok többsége nyilvános. Használjon második konfigurációs fájlt, vagy csak azokhoz a feladatokhoz adja hozzá, amelyeknek kell.
A PO Tokeneket feltételes hibaelhárításként kezelje
A Proof of Origin Token nem általános telepítési követelmény. A YouTube jelenleg bizonyos kliens- és kéréskombinációknál várja el ezeket a tokeneket, és a pontos mátrix változik.
Ha az alapértelmezett kliensek elakadnak, a mweb klienshez szolgáltatói bővítmény ajánlott, ahogy azt a yt-dlp PO Token-útmutatója írja. Kiemelt lehetőségként a bgutil-ytdlp-pot-providert említi, ehhez a bővítményhez azonban tokenszolgáltató és yt-dlp-bővítmény is kell. Önmagában a Python-csomag telepítése nem teljes beállítás.
Ha egy YouTube-letöltés meghiúsul, ezt a sorrendet kövesse:
- Frissítse a yt-dlp-t, a yt-dlp-ejs-t és a JavaScript-futtatókörnyezetet.
- Játssza le újra a hibát --verbose kapcsolóval, extra kliensfelülbírálás nélkül.
- Csak akkor adjon hozzá sütiket, ha a videóhoz fiók kell.
- Ha a hiba PO Token-kényszerítésre utal, kövesse a hivatalos útmutatóból hivatkozott, aktuális szolgáltatói leírást.
Így egy ingatag kerülőmegoldás kimarad az egyébként stabil alaptelepítésből.
Válasszon felületet a munkafolyamat szerint
A fő döntés nem az, melyik felületnek hosszabb a funkciólistája. Döntse el, hogy böngészős várólistára, szabályalapú feliratkozásokra, vagy teljes értékű, YouTube-szerű helyi könyvtárra van-e szüksége.
| Lehetőség | Telepítés | Miben jó | Fő kompromisszum |
|---|---|---|---|
| Csupasz CLI | Nincs felület | Szkriptek, konfigurációs fájlok, systemd, pontos kapcsolóvezérlés | Nincs böngészős felület |
| A MeTube | Egyetlen Docker-konténer | Böngészős letöltések, csatorna- és lejátszásilista-feliratkozásokkal | Korlátozott könyvtárkezelés a letöltés után |
| A Pinchflat | Egyetlen Docker-konténer | Szabályok csatornákhoz és lejátszási listákhoz, RSS, megőrzés, médiaközpontnak való kimenet | Letöltéskezelésre készült, nem alkalmazáson belüli nézésre |
| Tube Archivist | Alkalmazás-, Redis- és Elasticsearch-konténerek | Keresés, metaadatok, várólisták, csatornaoldalak és lejátszás | A legnagyobb memória- és üzemeltetési teher |
Könnyed böngészős munkafolyamathoz a MeTube olyan csatorna- és lejátszásilista-feliratkozásokat támogat, amelyek rendszeresen keresik az új elemeket, és automatikusan sorba állítják őket. Továbbra is ez a legegyszerűbb választás, ha főleg egy webes űrlapot és egy letöltési sort szeretne.
A Pinchflat illik a legjobban a folyamatos csatornaarchiváláshoz, amelyet később Jellyfinen, Plexen, Kodin vagy RSS-olvasón néz meg. Önálló, rendszeresen ellenőrzi a forrásokat, támogatja a megőrzési szabályokat, és szándékosan másik alkalmazásra hagyja a lejátszást.
A Tube Archivist akkor termeli ki a plusz szolgáltatásai árát, ha azt szeretné, hogy maga az archívum kereshető videóoldalként viselkedjen. Ha a lejátszási felületet már a Jellyfin adja, kezdjen csupasz CLI-vel vagy Pinchflattel, és csak akkor vegye be a Tube Archivistet, ha annak kereső- és metaadatmodellje valós problémát old meg Önnél.
Építsen megismételhető archiválási konfigurációt
A tartós beállításokat tartsa egyetlen fájlban, a csatorna URL-jét pedig a parancssorból vagy az ütemezőből adja át. Ez a példa 1080p-re korlátozza a kimenetet, feljegyzi a kész videók azonosítóit, enyhén széthúzza a kéréseket, és olyan metaadatokat ír ki, amelyek a yt-dlp-n kívül is hasznosak.
Hozza létre a könyvtárakat és a konfigurációs fájlt:
mkdir -p ~/.config/yt-dlp ~/archive
nano ~/.config/yt-dlp/archive.conf
Adja hozzá ezeket a beállításokat:
-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
Futtasson egyvideós tesztet, mielőtt egy teljes csatornát adna a yt-dlp-nek:
~/yt-dlp-venv/bin/yt-dlp \
--config-location ~/.config/yt-dlp/archive.conf \
"https://www.youtube.com/watch?v=VIDEO_ID"
Ezután futtasson egy csatorna- vagy lejátszásilista-URL-t ugyanazzal a konfigurációval:
~/yt-dlp-venv/bin/yt-dlp \
--config-location ~/.config/yt-dlp/archive.conf \
"https://www.youtube.com/@CHANNEL/videos"
A --download-archive fájl feljegyzi a sikeresen letöltött azonosítókat, így a későbbi futások átugorják őket. Eleinte hagyja meg az alapértelmezett --concurrent-fragments 1 értéket. A yt-dlp YouTube-útmutatója szüneteket javasol a videók között, amikor egy munkamenet eléri a kéréskorlátokat; általánosan biztonságos fragmentum-párhuzamossági felső határt azonban nem közöl VPS-IP-címekre.
Letöltések ütemezése systemddel
Egy felhasználói szintű systemd-időzítő tartós ütemezést és naplókat ad a feladatnak anélkül, hogy hosszú parancsot kellene a cronba írni. A véletlenszerű késleltetés azt is megakadályozza, hogy minden ütemezett forrás ugyanabban a másodpercben induljon. Hogy ne a felhasználói kezelő PATH-jára kelljen hagyatkozni, a szolgáltatás közvetlenül a Deno alapértelmezett telepítési helyére mutat.
Hozza létre a szolgáltatást:
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
Hozza létre az időzítőt:
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
Engedélyezze az időzítőt, és tegye lehetővé, hogy a felhasználói szolgáltatás bejelentkezés nélkül is fusson:
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
Több csatorna esetén hozzon létre csatornánként egy szolgáltatáspéldányt, vagy használjon külön időzítőket. Tolja el őket időben, ahelyett hogy több nagy letöltést egyszerre indítana.
Az archívum összekötése a Jellyfinnel
Csatolja vagy tegye elérhetővé ugyanazt a ~/archive könyvtárat a Jellyfin számára, majd adja hozzá könyvtárként. A nyers csatorna/dátum elrendezéshez a Jellyfin Music Videos könyvtártípusa könyvtártípusa fogadja a beágyazott mappákat és a tetszőleges fájlneveket, online metaadat-párosítás nélkül. A címke nem tökéletes egy nem zenei archívumhoz, a fájlszerkezethez viszont jobban illik, mint a „Shows” típus, amely sorozat- és évadmappákat vár SxxEyy formájú epizódnevekkel. Kerülje a Mixed Contentet, hacsak nem fogadja el a Jellyfin figyelmeztetését, hogy a metaadat-találatai megbízhatatlanok lehetnek.
A yt-dlp konfigurációjában a metaadat-, bélyegkép- és feliratbeállítások hasznos információt őriznek meg minden fájl mellett vagy azon belül. A Jellyfinben ettől még szükség lehet kézi metaadat-igazításra, mert egy YouTube-csatorna nem képezhető le tisztán egy tévésorozat-adatbázisra.
Ha kevesebb kézi munkával szeretne Jellyfinhez illő fájlneveket és metaadatokat, a Pinchflat kínál médiaközpont-előbeállításokat ehhez a munkafolyamathoz. A médiakiszolgálók közötti tágabb választást a Jellyfin és Plex összehasonlításunk tárgyalja , amely a lejátszás, a távoli hozzáférés és az átkódolás kompromisszumait veszi sorra.
Tegye a rendszert állandóan futó kiszolgálóra
Amint a munkafolyamat működik egy kis tesztadagon, költöztesse át ide: A Cloudzy Linux VPS-e , így az ütemezett letöltések és a médiatára online maradhat anélkül, hogy lekötné a napi gépét. Emellett telepítheti a Jellyfint egykattintásos alkalmazásként , és állítsa a könyvtárát a yt-dlp kimeneti mappájára.
Építkezz Linux VPS-en root hozzáféréssel, NVMe-vel és AMD EPYC teljesítménnyel.
Linux csomagok megtekintéseGyakran ismételt kérdések
Kell-e GPU a yt-dlp-hez egy VPS-en?
Nem. A yt-dlp GPU nélkül is le tudja tölteni és újracsomagolni a médiát. A GPU akkor válik fontossá, ha a Jellyfinnek vagy más médiakiszolgálónak át kell kódolnia a videót nem kompatibilis kliensek vagy kisebb sávszélességű kapcsolatok miatt; a közvetlen lejátszáshoz nincs szükség erre az átalakításra.
Folytatja-e a yt-dlp a megszakadt letöltést?
Igen. A yt-dlp alapból engedélyezi a részleges fájlokat és a folytatást, így egy későbbi futás rendszerint a már letöltött fragmentumoktól halad tovább, ahelyett hogy elölről kezdené. Ha ezt a viselkedést szeretné, ne adja hozzá a --no-continue, --no-part vagy --force-overwrites kapcsolót.
