Youtube letöltések tapasztalatai

Egy ideje már letöltöm az engem érdeklő Youtube videókat saját gépre. A célom az, hogy a lehető leg-jövőállóbb, legkompatibilisebb formátumban legyenek meg azok a videók nálam helyben, amiket máskor is meg szeretnék találni, és meg szeretnék nézni ismételten. Ez elég sok melóval jár, mivel a Youtube nem túl együttműködő partner az efféle tervek megvalósításában.

Na de miért kellene bármit is offline letöltögetni, mikor a Youtube-on ott van mindig, bármi bárhonnan bármikor elérhető, és könnyen megtalálható a későbbiekben is? Először is, a Youtube keresője elég gyatra, nem lehet eléggé precízen pontosan rászűrni arra amit éppen szeretnél. Hiába emlékszel egy videó valamilyen jellemzőjére pl. tudod h. egy óránál hosszabb de 1,5 óránál rövidebb, vagy tavaly húsvétkor töltötték fel. Ezek nem segítenek, ha csak olyan opciót kapsz h. 1 óránál rövidebb videót mutasson v. 1 óránál hosszabbat, a feltöltés 1 hónapja volt v. 1 éve, és nem lehet pontosabban szűrni abban az óriási mennyiségben. Persze valamit mindig talál neked ha keresel, de abban nagyon pocsék, hogy PONT AZT dobja ki neked, amit te szeretnél. Így online megtalálni valami konkrétat később csak egyre nehezebb lesz.

Továbbá mert ami nem a te gépeden van, afölött nincs kontrollod, ezt lassan 30 év internet tapasztalat mondatja velem. Ami csak másnak a gépén van meg, az nincs meg neked. Az utóbbi 6-8 évben pedig már nagyon beindult a youtube-nál a videók nagyüzemi törölgetése.

Eleinte csak a média kiadók vadásztak az illegális filmfeltöltögetőkre, meg a zenéket feltöltőkre. Azóta azonban már szintet lépett az Alphabet-elmebaj: észnélkül törölgetnek mindent a robotok, amikben megflag-elnek 1 (azaz egy) másodpernyi háttérben elhangzó dalrészletet, vagy bármi olyasmit ami nekik nem tetszik és bele akarnak kötni. Nincs kézzelfogható szabálylista, hogy mi OK és mi nem. Így az egész videó van hogy azonnal megy törlésre. A feltöltőnek sokszor kb. esélye sincs reagálni, hülye robotokkal kell levelezgetni. Valódi hús-vér ember nem néz rá szinte soha semmire, akkora mennyiségben vannak fent a kifogásolt videók. Nem 1 feltöltő panaszkodik erre évek óta. Néha a százmilliós követőtáborral rendelkezőket is szivatja így a google, szóval ez nem csak a kicsi tartalomgyártókat veszélyezteti.

----

Ennél 1 fokkal meredekebb, ami akkor történik, ha csinálsz magadnak 1 playlist-et. Ugye nagy naívan arra gondolsz: de fasza lesz saját gyűjteményt létrehozni, mert akkor a kedvenc (és főleg mások által feltöltött) videókat össze tudod gyűjteni egy (vagy több) listába, kategória, téma szerint stb. Később visszakereshető, szortírozható és hasonlók. Eddig mind szép és jó.

Ha azonban az egyik videót megflaggeli a robothadsereg h. jogsértő (copyright strike) v. nem illik a Youtube világnézetébe (community guideline strike), akkor amellett h. likvidálják azt a konkrét videót, még az is előfordulhat h. ha te ezt a videót felvetted egy általad készített playlist-re, hiába a videó feltöltője nem is te vagy, esélyes h. te is kaphasz érte warning-ot. Súlyosabb esetben akár ban-t is. A playlist-edet meg gyakran előfordulhat, hogy törlik is szónélkül, teljes egészében. Akár ezres playlist-et is, egyetlen illegális videó miatt. Lehet könyörögni (appeal-nek hívják) h. kapd vissza, mert téged ártatanul vádoltak meg valamivel, amit nem is te követtél el. Kellemes időtöltés, közben azon aggódni h. az évek óta gyűjtögetett listád vajon visszakapod-e.

Copyright strike basics:
https://support.google.com/youtube/answer/2814000

Community guideline strike basics:
https://support.google.com/youtube/answer/2802032?hl=en

Nem fogok belemenni ennél mélyebben, mert -szerencsére- nem videófeltöltőként, csak pusztán enduserként kell vesződnöm a google debilségeivel.

A fentebb leírtak a strike-al kapcsolatban akkor igazak, ha a playlist-et publikus-ként hoztad létre. Publikus playlist-et mások is láthatják: megtalálhatják youtube kereső alapján, és elmenthetik a playlistet a saját youtube library-jükbe. Természetesen (vagy maradjunk inkább annyiban, hogy jelenleg ez a helyzet) mások nem tudják módosítani az ilyen playlist-eket, a tulajdonjog és szerkesztési jog az annál marad, aki létrehozta a playlist-et (esetünkben pl. én). Ez azt is jelenti, hogy a módosításokat én végzem, de mindenkinél láthatóak lesznek, aki szintén hozzáadta ezt a playlist-et a saját youtube fiókjában a library alatt. Ha azonban nem akarod h. mások megtalálják, felfedezzék a playlist-edet, akkor privát-ra lehet állítani. Ebben az esetben még az egzakt URL birtokában sem tudja más megnyitni a listát, csak az akinek a youtube (==google) account-jában létre lett hozva.

Ugyebár ismert probléma, h. a Youtube felülete egy haszontalan szarkupac, ha arról van szó hogy exportálni / menteni szeretnéd bármilyen Youtube-ban tárolt adatodat, legyen az elsősorban pl. playlist-ek tartalma. Egy ideális világban miről szólna ez az egész? Belépsz Youtube-on a google fiókoddal, elnavigálsz a saját library-dba, jobb klikkelsz az adott playlist-re, aztán export to .TXT vagy save as .TXT és kezétcsókolom. Neadj isten még szűrőket is tudnál használni a playlisted-ben, h. pl. csak azokat a videókat listázza, amik X percnél hosszabbak, a feltöltésük eközött meg aközött a dátum közötti, a playlisted-hez hozzáadás dátuma nem régebbi mint Y és a többi. Bármilyen piaci alapon működő szoftver UI-n ezek alapból elérhetőek lennének már 10+ éve. De nem így a Youtube-nál, az tapasztalat alapján igazából csak visszafelé butul az évek múlásával. Ami egyrészt érthetetlen, másrészt bosszantó. Még azt se mondhatja nekem senki, h. örülj neki hogy ezt is kapod ingyen-userként, mert éppenséggel előfizetek Prémiumnra. Csak sajnos a YT Prémiummal nem jön az ilyen adatkezelés felokosítása, az marad ugyanolyan hülye szinten, mint a free usereknek. Ennél Prémiumabb szint meg nincs Youtube-éknál, tehát ne akarjak többet, mint amit ők gondolnak h. mindenkinek elég.

És akkor itt kanyarodunk rá a fő témára, ami a videók letöltése. Prémium előfizetéssel elvileg lehet hivatalosan, Google-által jóváhagyottan letölteni videókat. De ez egy Google-féle DRM-el körbebástyázott letöltést jelent: védett tárolóba pakolja le a videókat, nem tudsz hozzáférni böngészőn (vagy android-on app-on) kívülről, h. oda másold, azt csinálj vele amit akarsz. Továbbá X naponta kell online kapcsolat a google szervereihez, hogy az offline megnézéshez letöltött videókat "életben tartsa", pl. ha lejárt a Prémium előfizetésed, utána ne lehessen tovább offline tárolni ezeket. Szóval papíron le tudsz tölteni hivatalosan is Youtube-ról videókat, gyakorlatilag meg a DRM miatt nem vagy semmivel sem előrébb, mintha nem is lenne ilyen lehetőség.

Szóval letöltésre csak a YT-DLP nevű free programot érdemes (és szabad) használni, ami githubon van fent:

https://github.com/yt-dlp/yt-dlp

Ez egy parancssori eszköz, azaz sokat kell benne gépelni, így kezdő usereknek a lehető legrémisztőbb dolog a világon. Viszont mivel szükség van a millió féle rugalmas paraméterezhetőségére (lejjebb kiderül, ez miért fontos), megtanulás után elég kézreálló szerszám lesz belőle. GUI-s változatáról egyelőre nem tudok.
A millió másik free (de zárt forráskódú) noname youtube downloader variánst meg messziről kell kerülni, mint a leprát! De szószerint! Általában vagy valamilyen bitcoin-miner, vagy keylogger, v. csak szimplán valamilyen spammer ajándék bújhat meg bennük. Szóval nem éri meg semmi mással kísérletezgetni, nagy a rizikó hogy valami nemkívánt károkozót szedünk össze ezekkel.

YT-DLP-vel le lehet tölteni egyedi youtube videókat is, és szerencsére playlist-eket is. Szívás is lenne többszázas elemszámú playlist-ből a videókat egyesével  kimásolva mentegetni. Viszont a playlist-hez értelemszerűen csak akkor fér a yt-dlp, ha az publikus típusú. A privát playlist-ekhez nem. Két opciód van: 1)  vagy átállítod a mentés idejére privát-ról public típusúra, majd letöltés után visszarejted. Vagy 2) belépsz a gépen a Youtube fiókodba böngészőből, és a yt-dlp-nek átengeded az auth cookie-t, így anonim letöltő helyett a te nevedben fog nekiállni a playlist letöltésének.

---
Youtube videó anatómia

A Youtube-on tárolt videók mindegyikének van egy egyedi azonosítója (Video ID). Ez egy pontosan 11 karakteres ID (nem kevesebb, nem több, pontosan 11 karakter, ez hasznos lesz majd később), base64 formátumban, ahol az érvényes karakterek: angol abc (kisbetű-nagybetű-érzékeny), számok, aláhúzás és kötőjel. Az általad feltöltött videó nevének adhatsz amit csak akarsz, mivel lehet másik 100 millió ugyanilyen nevű videó is feltöltve Youtube-on, az egyedüli teljesen biztonsan egyedi azonosító ez a (rendszer által feltöltéskor automatikusan generált) Video ID lesz.

Pl. ha ez a böngészőben ez a Youtube videó teljes URL-je: https://www.youtube.com/watch?v=btAqhCm4k7Q --> akkor a Video ID a "watch?v=" utáni "btAqhCm4k7Q" sztring (természetesen az idézőjelek nélkül).

Letölteni ennek a Video ID-nek a birtokában így kell:

yt-dlp.exe [OPTIONS] URL [URL...] , ahol az OPTIONS az opcionális dolgok listája, az URL a letöltendő URL (a teljes URL, nem csak a Video ID-s rész), és megadhatsz egymás után 1 parancssorban többet is.

Nem árulok el titkot, ha azt mondom a Youtube a feltöltött videókat több változatban tárolja. Pl. felbontás alapján egy 1080p-s eredetijű videót lekonvertálnak feltöltéskor 720p, és 360p-re is. Ez amiatt kell, hogy ha valaki rosszabb internetsebességgel, vagy gyengébb gépen próbálja megnézni a videót, lejátszás elején, vagy akármikor menet közben dinamikusan tud váltani a Youtube player a megfelelő videó formátumra. A felbontáson kívül különböző videó (és audio) codec-ekben is le van tárolva ugyanaz a videó. A legnépszerűbb videó kodek a H.264, másnéven AVC (Advanced Video Codec). Ezt az égvilágon minden képes lejátszani. Kicsi a lejátszás gépigénye, 10+ éve van hozzá minden média feldolgozó processzorban hardveres gyorsítás, így energiatakarékosan (főleg akku takarékosan) tudja kezelni minden eszköz. Egy hátránya van csak: relative nagy méretűek a H.264-ben tárolt fájlok. Adott minőségi szinthez jöttek már ki ennél fejlettebb videó kodek-ek is, pl. a H.264 közvetlen utódja a H.265 (hivatalos nevén HEVC, High Efficiency Video Coding). Az AVC-t a Youtube 1080p felett már nem is használja. Egy HEVC-ben kódolt videófájl kb. 25-50%-al kevesebb helyet igényel az AVC-hez képest, ugyanolyan képminőség, felbontás mellett. Egy (igazából 2) hátránya van a HEVC-nek: sokkal nagyobb feldolgozási teljesítményt igényel a lejátszás az AVC-hez képest. Dedikált hardveres gyorsítás sokkal később jelent meg beépítve a modern eszközökbe, és ezek nem is annyira elterjedtek, mint az AVC. Másik nagy hátránya (és igazából az a nagyobb baj vele), h. licenszdíj-köteles, és az AVC idején tapasztalt licensz-cirkuszok miatt az ipar nagy része úgy menekült a HEVC elől megjelenésekor, mint a leprás elől. Ezért csak a filmiparban (Bluray, UHD Blu-ray) terjedt el a HEVC. A streaming platformok, és úgy általában az összes nagy tech cég mind az alternativák felé mentek el. Ezért Youtube-on sincs HEVC kodek-es videó 1080p felbontás felett. Helyette 1080p felett az AV1 és a VP9 a két használt videókodek, amit találni fogsz.

Audio fronton kicsit egyszerűbb a helyzet. Van a de facto M4A (ami valójában hivatalos nevén MPEG 4-Part 3 Audio szabvány, abban is az AAC, Advanced Audio Codec), és a free OPUS codec. OPUS-t eleve kevés elterjedt lejátszó kezel, így itt az M4A/AAC szokott lenni a nyerő változat.

Egy konkrét video ID esetén egyszerűen le lehet kérni, hogy hányféle formátumban tárolja azt a videót a Youtube:

yt-dlp.exe -F URL

Az eredmény egy ehhez hasonló táblázat lesz:

Ez a táblázat egy egyszerű példa, amikor csak 1080p-s videó a maximum:

ID  EXT   RESOLUTION FPS CH │   FILESIZE   TBR PROTO │ VCODEC          VBR ACODEC      ABR ASR MORE INFO
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
sb2 mhtml 48x27        0    │                  mhtml │ images                                  storyboard
sb1 mhtml 80x45        0    │                  mhtml │ images                                  storyboard
sb0 mhtml 160x90       0    │                  mhtml │ images                                  storyboard
233 mp4   audio only        │                  m3u8  │ audio only          unknown             [en] Default, low, IOS
234 mp4   audio only        │                  m3u8  │ audio only          unknown             [en] Default, high, IOS
140 m4a   audio only      2 │   79.02MiB  129k https │ audio only          mp4a.40.2  129k 44k [en] medium, TV, m4a_dash
251 webm  audio only      2 │   60.56MiB   99k https │ audio only          opus        99k 48k [en] medium, TV, webm_dash
269 mp4   256x144     30    │ ~124.06MiB  203k m3u8  │ avc1.4D400C    203k video only          IOS
160 mp4   256x144     30    │   31.39MiB   51k https │ avc1.4d400c     51k video only          144p, TV, mp4_dash
230 mp4   640x360     30    │ ~508.31MiB  833k m3u8  │ avc1.4D401E    833k video only          IOS
134 mp4   640x360     30    │   52.80MiB   87k https │ avc1.4d401e     87k video only          360p, TV, mp4_dash
18  mp4   640x360     30  2 │ ≈131.33MiB  215k https │ avc1.42001E         mp4a.40.2       44k [en] 360p, TV
605 mp4   640x360     30    │ ~435.95MiB  714k m3u8  │ vp09.00.21.08  714k video only          IOS
243 webm  640x360     30    │   44.64MiB   73k https │ vp9             73k video only          360p, TV, webm_dash
136 mp4   1280x720    30    │  139.28MiB  228k https │ avc1.4d401f    228k video only          720p, TV, mp4_dash
311 mp4   1280x720    60    │ ~  2.25GiB 3776k m3u8  │ avc1.4D4020   3776k video only          IOS
298 mp4   1280x720    60    │  140.51MiB  230k https │ avc1.4d4020    230k video only          720p60, TV, mp4_dash
312 mp4   1920x1080   60    │ ~  3.70GiB 6202k m3u8  │ avc1.64002A   6202k video only          IOS
299 mp4   1920x1080   60    │  217.69MiB  357k https │ avc1.64002a    357k video only          1080p60, TV, mp4_dash

Az oszlopok magyarázata:
ID = format ID, erre lehet hivatkozni h. melyik konkrét formátumban akarod letölteni a videót. Két különböző videó ID esetén a format ID nem valószínű h. teljesen egyezni fog, bár van néhány közös format ID.
EXT = kiterjesztés, a fájlnév végén ez lesz, mikor letöltöd
RESOLUTION = milyen (kép)felbontású az adott formátum. Nyilván csak kép/videó esetén van értelme, hang esetén nem.
FPS = Frame Per Second, másodpercenként hány képkockát tartalmaz a videó. Hang esetén nincs értelmezve. A hagyományos a 30 FPS, a 60 FPS viszont már sokkal folyamatosabb mozgást jelent
CH = Channel, hány hangcsatornás az audio, értelemszerűen videó esetén nincs értelme. A 2 jelenti a sztereó hangot
FILESIZE = a fájl mérete, ekkora lesz a letöltött fájl. Nem mindig egzakt a méret, mert van olyan protokol, ahol az átviteli hibatűrés miatt nagyon megnő a mennyiség
TBR = ?
PROTO = letöltési protokol. A https-t célszerű letöltéshez választani, ezesetben 1 darab adatfolyamként jön le a file. Az m3u8 esetében darabkákban (fragment) érkezik a fájl, és azt még össze kell ragasztania a letöltő programnak (amit ugyan megcsinál, de felesleges ezzel dolgoztatni)
VCODEC = az adott formátum kódhoz tartozó videó sávnak a kodek típusát mondja meg. Ha itt az szerepel h. audio only, akkor ez a formátum nem tartalmaz videó sávot. Az AVC jelenti a H.264-et. Az AVC-n kívül itt látható még VP9 videó kodek is. AVC-ből létezik többféle minőségű is, ezt az utána levő hexa szám mutatja. Ezekhez itt van némi megfejtési segítség:

https://www.reddit.com/r/youtubedl/comments/uxzhca/codec_comparison_qua…
https://cconcolato.github.io/media-mime-support/#video/mp4;%20codecs=%2…

ACODEC = az adott formátum kódhoz tartozó audió sávnak a kodek típusát mondja meg. Ha itt az szerepel h. video only, akkor ez a formátum nem tartalmaz audió sávot.
ABR, ASR = bitrate-t jelent, pontosabban nem néztem utána
MORE INFO = kb. meghatározza, milyen jellegű eszközhöz érdemes ezt a formátumot használni. Legutóbb már a nyelv (audió esetén) és a DRC (Dynamic Range Compression) állapotát is itt lehet látni

Néhány format ID szám kb. minden videónál létezik, és a konkrét tartalma az adott sorban is ugyanaz lesz minden videónál. Más format ID számok viszont csak újabban feltöltött videóknál jelennek meg, vagy nagy felbontásban (4K) feltöltött videóknál. Ezért vakon megadni egy format ID-t előzetes lekérdezés nélkül csak akkor érdemes, ha a régi "jólismert" format ID-ket használod.
Amit élesszeműek észrevehetnek, h. a format ID = 18 egy olyan formátumot jelöl, ahol 640x360 (azaz 360p) videó van AVC kodekkel, hozzá pedig egy MP4A-s audio kodek. Ha letöltéskor ezt az 1 format ID-t adod meg a YT-DLP-nek, akkor szimplán letölti ezt az 1 formátumot, amiben videó+audió szépen együtt van, nincs vele további meló. Ez elég alacsony felbontású videó, és minőség így 2025-ben, cserébe szinte alig foglalnak az ilyen formátumú videók helyet. Fontos még megjegyezni, h. ez a format ID = 18 egy kb. 99%-ban elérhető formátum kód, azaz ebben biztosan le fogsz tudni bármilyen Youtube videót, ami mellett lesz hang is.
Viszont ha neked nem elég a 360p felbontás, akkor a többi nagyobb felbontású videó formátum esetén már nem tartozik hozzá beépítve audio sáv is. Tehát pl. a 136-as format ID-t letöltve lesz egy 1280x720 (azaz 720p) felbontású, AVC videósávos videód, de audio nélkül. Ilyen esetben összetettebb a formátum ID megadása, mert kell 1 videó és 1 audió formátumot is megadnod. Ebben az esetben a YT-DLP-nek a formátum ID = 136+140 -t célszerű megadni letöltéskor. Ekkor letölti a 2 külön fájlt (a 136-os 720p AVC videó mp4-et és a 140-es audió m4a-t), és összedolgozza (össze "mux"-olja).

------------------

A következő példa, amikor már 4K videóformátum is van:

ID      EXT   RESOLUTION FPS CH │   FILESIZE    TBR PROTO │ VCODEC           VBR ACODEC      ABR ASR MORE INFO
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
sb3     mhtml 48x27        0    │                   mhtml │ images                                   storyboard
sb2     mhtml 80x45        0    │                   mhtml │ images                                   storyboard
sb1     mhtml 160x90       0    │                   mhtml │ images                                   storyboard
sb0     mhtml 320x180      0    │                   mhtml │ images                                   storyboard
233     mp4   audio only        │                   m3u8  │ audio only           unknown             [en] Default, low, IOS
234     mp4   audio only        │                   m3u8  │ audio only           unknown             [en] Default, high, IOS
249-drc webm  audio only      2 │    5.92MiB    51k https │ audio only           opus        51k 48k [en] low, DRC, TV, webm_dash
250-drc webm  audio only      2 │    7.54MiB    65k https │ audio only           opus        65k 48k [en] low, DRC, TV, webm_dash
249     webm  audio only      2 │    5.87MiB    50k https │ audio only           opus        50k 48k [en] low, TV, webm_dash
250     webm  audio only      2 │    7.52MiB    64k https │ audio only           opus        64k 48k [en] low, TV, webm_dash
140-drc m4a   audio only      2 │   15.12MiB   129k https │ audio only           mp4a.40.2  129k 44k [en] medium, DRC, TV, m4a_dash
251-drc webm  audio only      2 │   14.21MiB   122k https │ audio only           opus       122k 48k [en] medium, DRC, TV, webm_dash
140     m4a   audio only      2 │   15.12MiB   129k https │ audio only           mp4a.40.2  129k 44k [en] medium, TV, m4a_dash
251     webm  audio only      2 │   14.17MiB   121k https │ audio only           opus       121k 48k [en] medium, TV, webm_dash
602     mp4   256x144     15    │ ~ 11.61MiB    99k m3u8  │ vp09.00.10.08    99k video only          IOS
269     mp4   256x144     30    │ ~ 19.84MiB   170k m3u8  │ avc1.4D400C     170k video only          IOS
160     mp4   256x144     30    │    4.70MiB    40k https │ avc1.4d400c      40k video only          144p, TV, mp4_dash
603     mp4   256x144     30    │ ~ 19.98MiB   171k m3u8  │ vp09.00.11.08   171k video only          IOS
278     webm  256x144     30    │    7.22MiB    62k https │ vp9              62k video only          144p, TV, webm_dash
394     mp4   256x144     30    │    5.95MiB    51k https │ av01.0.00M.08    51k video only          144p, TV, mp4_dash
229     mp4   426x240     30    │ ~ 36.32MiB   311k m3u8  │ avc1.4D4015     311k video only          IOS
133     mp4   426x240     30    │    9.98MiB    86k https │ avc1.4d4015      86k video only          240p, TV, mp4_dash
604     mp4   426x240     30    │ ~ 35.89MiB   308k m3u8  │ vp09.00.20.08   308k video only          IOS
242     webm  426x240     30    │    9.58MiB    82k https │ vp9              82k video only          240p, TV, webm_dash
395     mp4   426x240     30    │    8.83MiB    76k https │ av01.0.00M.08    76k video only          240p, TV, mp4_dash
230     mp4   640x360     30    │ ~ 93.72MiB   803k m3u8  │ avc1.4D401E     803k video only          IOS
134     mp4   640x360     30    │   21.16MiB   181k https │ avc1.4d401e     181k video only          360p, TV, mp4_dash
18      mp4   640x360     30  2 │   52.14MiB   447k https │ avc1.42001E          mp4a.40.2       44k [en] 360p, TV
605     mp4   640x360     30    │ ~ 78.55MiB   673k m3u8  │ vp09.00.21.08   673k video only          IOS
243     webm  640x360     30    │   22.03MiB   189k https │ vp9             189k video only          360p, TV, webm_dash
396     mp4   640x360     30    │   16.35MiB   140k https │ av01.0.01M.08   140k video only          360p, TV, mp4_dash
231     mp4   854x480     30    │ ~158.19MiB  1355k m3u8  │ avc1.4D401F    1355k video only          IOS
135     mp4   854x480     30    │   34.73MiB   297k https │ avc1.4d401f     297k video only          480p, TV, mp4_dash
606     mp4   854x480     30    │ ~136.78MiB  1172k m3u8  │ vp09.00.30.08  1172k video only          IOS
244     webm  854x480     30    │   32.94MiB   282k https │ vp9             282k video only          480p, TV, webm_dash
397     mp4   854x480     30    │   29.08MiB   249k https │ av01.0.04M.08   249k video only          480p, TV, mp4_dash
136     mp4   1280x720    30    │   95.92MiB   822k https │ avc1.4d401f     822k video only          720p, TV, mp4_dash
247     webm  1280x720    30    │   64.37MiB   551k https │ vp9             551k video only          720p, TV, webm_dash
311     mp4   1280x720    60    │ ~442.13MiB  3788k m3u8  │ avc1.4D4020    3788k video only          IOS
298     mp4   1280x720    60    │  156.08MiB  1337k https │ avc1.4d4020    1337k video only          720p60, TV, mp4_dash
612     mp4   1280x720    60    │ ~429.25MiB  3678k m3u8  │ vp09.00.40.08  3678k video only          IOS
302     webm  1280x720    60    │  111.47MiB   955k https │ vp9             955k video only          720p60, TV, webm_dash
398     mp4   1280x720    60    │   86.88MiB   744k https │ av01.0.08M.08   744k video only          720p60, TV, mp4_dash
312     mp4   1920x1080   60    │ ~726.11MiB  6222k m3u8  │ avc1.64002A    6222k video only          IOS
299     mp4   1920x1080   60    │  286.26MiB  2452k https │ avc1.64002a    2452k video only          1080p60, TV, mp4_dash
617     mp4   1920x1080   60    │ ~697.61MiB  5978k m3u8  │ vp09.00.41.08  5978k video only          IOS
303     webm  1920x1080   60    │  179.40MiB  1537k https │ vp9            1537k video only          1080p60, TV, webm_dash
399     mp4   1920x1080   60    │  159.93MiB  1370k https │ av01.0.09M.08  1370k video only          1080p60, TV, mp4_dash
623     mp4   2560x1440   60    │ ~  1.60GiB 14082k m3u8  │ vp09.00.50.08 14082k video only          IOS
308     webm  2560x1440   60    │  627.66MiB  5377k https │ vp9            5377k video only          1440p60, TV, webm_dash
400     mp4   2560x1440   60    │  378.25MiB  3240k https │ av01.0.12M.08  3240k video only          1440p60, TV, mp4_dash
628     mp4   3840x2160   60    │ ~  3.19GiB 28028k m3u8  │ vp09.00.51.08 28028k video only          IOS
315     webm  3840x2160   60    │    1.64GiB 14409k https │ vp9           14409k video only          2160p60, TV, webm_dash
401     mp4   3840x2160   60    │  822.70MiB  7048k https │ av01.0.13M.08  7048k video only          2160p60, TV, mp4_dash

Itt látszik, hogy pl. 623-as format ID-től lefelé már nincs AVC típusú videó.

-----------

A következő példa, amikor a 140-es audio kódból már al-kódok is vannak az egyes eltérő nyelvek miatt, és en-us English United States-ből is van több is, mert van DRC-s és nem-DRC-s változatban is

ID    EXT   RESOLUTION FPS CH │   FILESIZE   TBR PROTO │ VCODEC          VBR ACODEC      ABR ASR MORE INFO
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
sb3   mhtml 48x27        0    │                  mhtml │ images                                  storyboard
sb2   mhtml 80x45        0    │                  mhtml │ images                                  storyboard
sb1   mhtml 160x90       0    │                  mhtml │ images                                  storyboard
sb0   mhtml 320x180      0    │                  mhtml │ images                                  storyboard
233-0 mp4   audio only        │                  m3u8  │ audio only          unknown             [de-DE] Deutsch (Deutschland) - dubbed-auto, IOS
233-1 mp4   audio only        │                  m3u8  │ audio only          unknown             [es-US] es-US - dubbed-auto, IOS
233-2 mp4   audio only        │                  m3u8  │ audio only          unknown             [fr-FR] Français (France) - dubbed-auto, IOS
233-3 mp4   audio only        │                  m3u8  │ audio only          unknown             [it] Italiano - dubbed-auto, IOS
233-4 mp4   audio only        │                  m3u8  │ audio only          unknown             [pt-BR] Português (Brasil) - dubbed-auto, IOS
234-0 mp4   audio only        │                  m3u8  │ audio only          unknown             [de-DE] Deutsch (Deutschland) - dubbed-auto, IOS
234-1 mp4   audio only        │                  m3u8  │ audio only          unknown             [es-US] es-US - dubbed-auto, IOS
234-2 mp4   audio only        │                  m3u8  │ audio only          unknown             [fr-FR] Français (France) - dubbed-auto, IOS
234-3 mp4   audio only        │                  m3u8  │ audio only          unknown             [it] Italiano - dubbed-auto, IOS
234-4 mp4   audio only        │                  m3u8  │ audio only          unknown             [pt-BR] Português (Brasil) - dubbed-auto, IOS
233-5 mp4   audio only        │                  m3u8  │ audio only          unknown             [en-US] American English - original, low (default), IOS
234-5 mp4   audio only        │                  m3u8  │ audio only          unknown             [en-US] American English - original, high (default), IOS
249-0 webm  audio only      2 │    7.59MiB   55k https │ audio only          opus        55k 48k [fr-FR] French (France), low, TV, webm_dash
249-1 webm  audio only      2 │    8.00MiB   58k https │ audio only          opus        58k 48k [es-US] Spanish (United States), low, TV, webm_dash
249-2 webm  audio only      2 │    8.27MiB   60k https │ audio only          opus        60k 48k [pt-BR] Portuguese (Brazil), low, TV, webm_dash
249-3 webm  audio only      2 │    8.37MiB   60k https │ audio only          opus        60k 48k [de-DE] German (Germany), low, TV, webm_dash
249-4 webm  audio only      2 │    8.39MiB   60k https │ audio only          opus        60k 48k [it] Italian, low, TV, webm_dash
250-0 webm  audio only      2 │    9.87MiB   71k https │ audio only          opus        71k 48k [fr-FR] French (France), low, TV, webm_dash
250-1 webm  audio only      2 │   10.37MiB   75k https │ audio only          opus        75k 48k [es-US] Spanish (United States), low, TV, webm_dash
250-2 webm  audio only      2 │   10.73MiB   77k https │ audio only          opus        77k 48k [pt-BR] Portuguese (Brazil), low, TV, webm_dash
250-3 webm  audio only      2 │   10.82MiB   78k https │ audio only          opus        78k 48k [it] Italian, low, TV, webm_dash
250-4 webm  audio only      2 │   10.91MiB   79k https │ audio only          opus        79k 48k [de-DE] German (Germany), low, TV, webm_dash
249-5 webm  audio only      2 │    7.04MiB   51k https │ audio only          opus        51k 48k [en-US] English (United States) original (default), low, TV, webm_dash
250-5 webm  audio only      2 │    9.22MiB   66k https │ audio only          opus        66k 48k [en-US] English (United States) original (default), low, TV, webm_dash
140-0 m4a   audio only      2 │   17.97MiB  129k https │ audio only          mp4a.40.2  129k 44k [es-US] Spanish (United States), medium, TV, m4a_dash
140-1 m4a   audio only      2 │   17.97MiB  129k https │ audio only          mp4a.40.2  129k 44k [fr-FR] French (France), medium, TV, m4a_dash
140-2 m4a   audio only      2 │   17.97MiB  129k https │ audio only          mp4a.40.2  129k 44k [it] Italian, medium, TV, m4a_dash
140-3 m4a   audio only      2 │   17.97MiB  129k https │ audio only          mp4a.40.2  129k 44k [de-DE] German (Germany), medium, TV, m4a_dash
140-4 m4a   audio only      2 │   17.97MiB  129k https │ audio only          mp4a.40.2  129k 44k [pt-BR] Portuguese (Brazil), medium, TV, m4a_dash
140-5 m4a   audio only      2 │   17.97MiB  129k https │ audio only          mp4a.40.2  129k 44k [en-US] English (United States) original (default), medium, TV, m4a_dash
251-0 webm  audio only      2 │   19.18MiB  138k https │ audio only          opus       138k 48k [fr-FR] French (France), medium, TV, webm_dash
251-1 webm  audio only      2 │   20.03MiB  144k https │ audio only          opus       144k 48k [es-US] Spanish (United States), medium, TV, webm_dash
251-2 webm  audio only      2 │   20.65MiB  149k https │ audio only          opus       149k 48k [it] Italian, medium, TV, webm_dash
251-3 webm  audio only      2 │   20.76MiB  150k https │ audio only          opus       150k 48k [pt-BR] Portuguese (Brazil), medium, TV, webm_dash
251-4 webm  audio only      2 │   21.33MiB  154k https │ audio only          opus       154k 48k [de-DE] German (Germany), medium, TV, webm_dash
251-5 webm  audio only      2 │   16.59MiB  120k https │ audio only          opus       120k 48k [en-US] English (United States) original (default), medium, TV, webm_dash
602   mp4   256x144     15    │ ~ 12.49MiB   90k m3u8  │ vp09.00.10.08   90k video only          IOS
269   mp4   256x144     30    │ ~ 22.89MiB  165k m3u8  │ avc1.4D400C    165k video only          IOS
160   mp4   256x144     30    │    2.60MiB   19k https │ avc1.4d400c     19k video only          144p, TV, mp4_dash
603   mp4   256x144     30    │ ~ 22.56MiB  163k m3u8  │ vp09.00.11.08  163k video only          IOS
278   webm  256x144     30    │    3.85MiB   28k https │ vp9             28k video only          144p, TV, webm_dash
394   mp4   256x144     30    │    3.69MiB   27k https │ av01.0.00M.08   27k video only          144p, TV, mp4_dash
229   mp4   426x240     30    │ ~ 35.54MiB  256k m3u8  │ avc1.4D4015    256k video only          IOS
133   mp4   426x240     30    │    4.21MiB   30k https │ avc1.4d4015     30k video only          240p, TV, mp4_dash
604   mp4   426x240     30    │ ~ 40.05MiB  289k m3u8  │ vp09.00.20.08  289k video only          IOS
242   webm  426x240     30    │    5.86MiB   42k https │ vp9             42k video only          240p, TV, webm_dash
395   mp4   426x240     30    │    5.24MiB   38k https │ av01.0.00M.08   38k video only          240p, TV, mp4_dash
230   mp4   640x360     30    │ ~ 70.59MiB  509k m3u8  │ avc1.4D401E    509k video only          IOS
134   mp4   640x360     30    │    7.49MiB   54k https │ avc1.4d401e     54k video only          360p, TV, mp4_dash
18    mp4   640x360     30  2 │   38.95MiB  281k https │ avc1.42001E         mp4a.40.2       44k [en] 360p, TV
605   mp4   640x360     30    │ ~ 85.46MiB  616k m3u8  │ vp09.00.21.08  616k video only          IOS
243   webm  640x360     30    │   12.72MiB   92k https │ vp9             92k video only          360p, TV, webm_dash
396   mp4   640x360     30    │    9.87MiB   71k https │ av01.0.01M.08   71k video only          360p, TV, mp4_dash
231   mp4   854x480     30    │ ~ 90.30MiB  651k m3u8  │ avc1.4D401F    651k video only          IOS
135   mp4   854x480     30    │   11.32MiB   82k https │ avc1.4d401f     82k video only          480p, TV, mp4_dash
606   mp4   854x480     30    │ ~139.65MiB 1006k m3u8  │ vp09.00.30.08 1006k video only          IOS
244   webm  854x480     30    │   19.50MiB  141k https │ vp9            141k video only          480p, TV, webm_dash
397   mp4   854x480     30    │   16.87MiB  122k https │ av01.0.04M.08  122k video only          480p, TV, mp4_dash
232   mp4   1280x720    30    │ ~144.32MiB 1040k m3u8  │ avc1.4D401F   1040k video only          IOS
136   mp4   1280x720    30    │   21.22MiB  153k https │ avc1.4d401f    153k video only          720p, TV, mp4_dash
609   mp4   1280x720    30    │ ~265.19MiB 1911k m3u8  │ vp09.00.31.08 1911k video only          IOS
247   webm  1280x720    30    │   36.44MiB  263k https │ vp9            263k video only          720p, TV, webm_dash
398   mp4   1280x720    30    │   31.33MiB  226k https │ av01.0.05M.08  226k video only          720p, TV, mp4_dash
270   mp4   1920x1080   30    │ ~675.26MiB 4866k m3u8  │ avc1.640028   4866k video only          IOS
137   mp4   1920x1080   30    │   78.61MiB  566k https │ avc1.640028    566k video only          1080p, TV, mp4_dash
614   mp4   1920x1080   30    │ ~477.34MiB 3440k m3u8  │ vp09.00.40.08 3440k video only          IOS
248   webm  1920x1080   30    │   66.88MiB  482k https │ vp9            482k video only          1080p, TV, webm_dash
399   mp4   1920x1080   30    │   58.79MiB  424k https │ av01.0.08M.08  424k video only          1080p, TV, mp4_dash
616   mp4   1920x1080   30    │ ~789.02MiB 5686k m3u8  │ vp09.00.40.08 5686k video only          Premium, IOS

Itt már az audió format ID-t se tudod sima fix 140-ként megadni, hogy a jólismert m4a-t kapd meg. Sajnos ilyenkor ki kell keresni, hogy melyik 140-essel kezdődő lesz az EN-US United States english (lehetőleg az original, nem-DRC-s változat), és azt kell megadni a YT-DLP-nek.
Azaz a használatos formátum kód páros ebben az esetben a 136+140-5 lesz. Ráadásul ez a 140-5 sem biztos h. ugyanezt fogja jelenti egy másik videónál.

---------

Ennyi alapozó után beszélek a WATCH LATER-ről.

Ez egy speciális playlist. Látsz valami érdekes videót, a YT felületén rányomsz h. save to WATCH LATER, és majd később megnézed. Pakolgatod bele a videókat, aztán csak hízik csak hízik. Nem nagyon törölgetsz belőle. Ha meg nem nézed meg egyből amit beleraksz, csak tovább hízik a lista, és elfelejted amit régebben raktál bele. Nekem 2000 fölé sikerült menni, mikor elkezdtem takarítani. Bónusz tény, hogy ugyanazt a videót többször is belepakolhatod a playlist-be. Mivel a Watch later-en levő videókat ezután az algoritmus többször is fel-fel fogja dobni a home screen-en v. az ajánlatok között, esélyes h. tudatalatt emlékezni fogsz rá h. mintha ezt már 1x meg akartad volna nézni, és akkor most is gyorsan rányomsz, hogy a Watch Later-be megint bekerüljön. Így aztán duplikátumok (2-3-4-sokszorosan hozzáadva ugyanaz az elem) bőven előfordulnak majd ebben a playlist-ben. Érdekes gondolatkísérlet, ha több sessiönből is pakolgatsz a WATCH LATER-be videókat (vagy akármelyik másik hagyományos playlist-be), akkor egy korábban a böngészőben megnyitott ilyen playlist-ben ha törölsz egy találomra rábökött elemet, akkor vajon fog-e automatikusan frissítődni a lista az előző betöltés óta bekerült új videókkal? A törlés után is csak az elemszám frissül. Vajon így a törlés tényleg arra a videóra történt meg, mint amire rákattintottál h. törölni szeretted volna, nem pedig az új sorrend alapján egy másik -ugyanezen sorszámú helyen álló új- videóra?

Válasz: szerencsére nem :)

Naszóval a WATCH later egy olyan playlist, aminek a tartalmát jó lenne menteni. Itt érkezik az első hoppá, mivel ugye ez egy alapból privát lista. Így megadni a YT-DLP-nek nem tudod, hogy anonim módon hozzáférjen. Viszont publikussá meg nem tehető egy ideiglenes letöltés idejére. Van egy olyan trükk, hogy egy konkrét elemen jobb klikkelve hozzá tudsz adni 1 másik playlist-hez, amit már publikussá tudnál tenni. Na de ezt egyesével kellene megcsinálni 2000 elemre, mert csoportos kijelölést nem enged a rohadék YT. Hát ez felér egy kínzással, szóval így inkább nem.
Szintén probléma, hogy a Watch Later playlist-et a rendszer egy vanity URL-ként mutatja:

https://www.youtube.com/playlist?list=WL

magyarul mindenkinek ugyanez a Watch Later playlist URL-je. A konkrét tartalom az alapján dől el, hogy ki az akinek a Google account-jában vagyok kíváncsi a WL playlistre. Hogyan tudom megmondani, h. pont az enyém érdekel, és nem valaki másé? Elárulom a titkot: a WL playlist-nek is van kutyaközönséges URL-je, csak a Google megint mindent jobban akar tudni mindenkinél, ezért rejtegeti az UI-n előled.

(folyt köv).

Hozzászólások

Mindent ingyen kérsz, ugye? A boltban a kenyeret meg a kocsmában a sört is? És a fizetésedet sem veszed fel, mert ingyen dolgozol... Ahogy elvárod, hogy a tartalomkészítők is ingyen dolgozzanak neked...

Igen, ezt mindenki érti. Amit viszont például én nem értek, hogy mennyire torz gondolkodás helyeselni azt, hogy a jogtulajdonos akár másnap is visszavonhatja egyoldalúan a megtekintési jogosultságodat.

Ha mondjuk a haverod kibérel egy autót egy hétre, de a tulajdonos másnap visszalopja tőle (se csereautó nincs, se a pénzt nem kapod vissza), a haver pedig kukán tűrné a dolgot, nem az lenne az első gondolatod, hogy a tulaj egy féreg, a haver meg egy szolgalelkű balek?

Igen, ezt mindenki érti. Amit viszont például én nem értek, hogy mennyire torz gondolkodás helyeselni azt, hogy a jogtulajdonos akár másnap is visszavonhatja egyoldalúan a megtekintési jogosultságodat.

Ez nem torz gondolkodás, időt áldoz és pénzt, hogy tartalmat gyártson, ezért szemben népszerűséget és pénzt vár. Te tudatosan idekevered a streaming szolgáltatók gyakorlatát, ahol teljesen másról beszélünk. A Youtube-on létező legnagyobb gyártóknak sincs érdekében a tartalmaikat levenni amíg azt nézik pénzt hajt. 

Sajnos én is azt tapasztaltam, hogy a lejátszási listáim idővel elkezdenek foghíjasok lenni, leveszik videókat.

Emellett pont tegnap futottam bele, hogy egy videót néztem, és véletlen megnyomtam az egéren a "vissza" gombot, na ezután már nem sikerült ismét megtalálnom a videót. Miután sikeresen összekavartam a böngésző history-t, utána hiába próbáltam ugyanarra keresni, már másokat dobott fel.

A letöltött videókról egyébként aki elkezd itt "a kenyeret is ingyen kéred"-ezni, semmit nem tud, egyrészt saját felhasználásra kerülnek letöltésre, senki nem terjeszti tovább, vagy keres vele pénzt, megnézésre kell, másrészt pedig simán lehet olyan nyílt licencű tartalom, vagy oktatási célra szánt, online korlátozott ideig elérhető, vagy saját tartalom akár, ahol a kutyát nem érdekli, hogy letöltötted, és használod. 

Ezért kicsit erős volt ez a kioktatás rögtön az első kommentben egy technikai jellegű blogra.

Jó kis összefoglaló, köszi szépen.

Azokat az eseteket se felejtsük el, amikor egy "eredeti" videó eltűnik, majd már csak a függőleges, tiktokos változata van fent (adott esetben még zavaróan meg is vágják), vagy amikor egy stand-up-előadás egyetlen példányát lecserélik egy olyan változatra, ahol a "shit", "fuck" és hasonló szavakat kisípolják, mert hát hópihééknek nem esik jól. Na, ezért is kell letölteni.

Köszi a kimerítő leírást! Még csak az elején vagyok, és annyit szeretnék hozzátenni, hogy úgy emlékszem volt olyan mondás, hogy az inaktív userek tartalmait is törli a Youtube. Tehát garantált, hogy végül mindent törölni fog, mert a userek meghalnak, inaktívak online és végül törlik amit felraktak annó. Szervezetek meg tudják tenni, hogy pátyolgatják az accountot potenciálisan végtelen ideig.

Már én is több esetben tapasztaltam, hogy emlékszem valamire hogy láttam és vissza akarnám nézni, és sehol sincs meg. Vagy régi blogposztok még fenn vannak valahol YT linkkel, és a link már nem működik. Ha valami "politikailag loaded", akkor nem lepődöm meg, de például Stirling motorokat is szeretek nézegetni és abból a témából is eltűntek régi dolgok már.

Ami igazán fontos azt le kell menteni, nincs mese.

Kérdés h mekkora tárolókapacitással érdemes számolni? Erről esetleg majd a folytatásban lesz szó?
Sok esetben a kommentek is fontosak! Azokkal vajon mi lesz? 
Amúgy thx az ötletért! Úgy értem persze h nyilvánvalóan mindenki mentett már le dolgokat a yt-ról. De h ezt szakmányban csináljam és ilyen házi-yt -ot csináljak valamiért nem jutott még az eszembe. Mondjuk elég grandiózus vállalkozásnak tűnik. Minden hdd betelik egyszer - hova lehet tenni 50 hdd-t?

"antiegalitarian, antiliberal, antidemocratic, and antipopular"