Ugrás a fő tartalomra
50% kedvezmény minden csomagra, korlátozott ideig. Már $2.48/mo
11 min left
Gaming és média

yt-dlp futtatása VPS-en felület nélküli személyes archiváláshoz

S Szerző: Sajjad 11 perc olvasás
yt-dlp running headless on a VPS, feeding scheduled downloads into an organized video library that a media server can scan

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

yt-dlp VPS sizing guide: starting allocations of 2 vCPU and 2 GB RAM for raw yt-dlp with systemd, 2 vCPU and 4 GB RAM for MeTube or Pinchflat, and 4 vCPU and 8 GB RAM for Tube Archivist, beside a method for projecting storage from a sample download

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ásKiinduló erőforrásTárhelystratégiaLegjobb illeszkedés
Csupasz yt-dlp systemddel2 vCPU, 2 GB RAMMéretezés minta alapjánÜtemezett letöltések felület nélkül
MeTube vagy Pinchflat2 vCPU, 4 GB RAMMéretezés minta alapjánBöngészős várólista vagy csatornafeliratkozások
Tube Archivist4 vCPU, 8 GB RAMHelyi lemez növekedési tartalékkalKereshető 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:

  1. Nyisson meg egyetlen privát vagy inkognitóablakot, és jelentkezzen be a YouTube-ra.
  2. Ugyanabban a lapon nyissa meg a YouTube robots.txt fájlját.
  3. Csak a youtube.com sütijeit exportálja Netscape formátumban, a yt-dlp GYIK-jában felsorolt bővítmények egyikével.
  4. Zárja be a privát ablakot, és ne nyissa meg újra azt a munkamenetet.
  5. 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

yt-dlp access troubleshooting flow: simulate the URL first, then branch to no cookies needed for a working public video, a cookie export for account-gated content, or a dependency update and PO Token check when failures continue

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:

  1. Frissítse a yt-dlp-t, a yt-dlp-ejs-t és a JavaScript-futtatókörnyezetet.
  2. Játssza le újra a hibát --verbose kapcsolóval, extra kliensfelülbírálás nélkül.
  3. Csak akkor adjon hozzá sütiket, ha a videóhoz fiók kell.
  4. 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égTelepítésMiben jóFő kompromisszum
Csupasz CLINincs felületSzkriptek, konfigurációs fájlok, systemd, pontos kapcsolóvezérlésNincs böngészős felület
A MeTubeEgyetlen Docker-konténerBöngészős letöltések, csatorna- és lejátszásilista-feliratkozásokkalKorlátozott könyvtárkezelés a letöltés után
A PinchflatEgyetlen Docker-konténerSzabályok csatornákhoz és lejátszási listákhoz, RSS, megőrzés, médiaközpontnak való kimenetLetöltéskezelésre készült, nem alkalmazáson belüli nézésre
Tube ArchivistAlkalmazás-, Redis- és Elasticsearch-konténerekKeresés, metaadatok, várólisták, csatornaoldalak és lejátszásA 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.

Linux csomagok megtekintése

Építkezz Linux VPS-en root hozzáféréssel, NVMe-vel és AMD EPYC teljesítménnyel.

Linux csomagok megtekintése

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

Osztozzon a yt-dlp és a Jellyfin egy VPS-en?

Osztozhatnak egy VPS-en, ha a tárhely, a processzor és a kimenő forgalom mindkét feladatra elég. Válassza szét őket, ha a lejátszás vagy az átkódolás versenyez a nagy letöltésekkel, ha külön karbantartási ablakokra van szüksége, vagy ha az archívumnak olcsóbb tárolón a helye, mint a streamingkiszolgálónak.

Megosztás

Több a blogról

Folytassa az olvasást.

Készen áll a telepítésre? Már 2,48 $/hó-tól.

Független felhő 2008 óta. AMD EPYC, NVMe, 40 Gbps. 14 napos pénzvisszafizetési garancia.