!Štítky: {program}{internet}{video} !OblíbenáZaklínadla: !ÚzkýRežim: zap
Tato kapitola se zabývá stahováním videí a zvukových záznamů ze služeb jako YouTube, Instagram, Facebook, MixCloud, Vimeo apod. pomocí programu „yt-dlp“. Je určena vždy pro jeho nejaktuálnější verzi z GitHubu, protože časté změny ve webovém rozhraní online služeb obvykle způsobují nefunkčnost dřívějších verzí programu.
- Id je technický textový (popř. číselný) identifikátor videa či zvukového záznamu na přílušné službě.
!ÚzkýRežim: vyp
# stáhnout video či více videí
yt-dlp -f {požadované,formáty} [-P "{adresář/kam/stáhnout}"] -o "{formát názvu souboru}" [--no-mtime] [{další parametry}] '{URL/videa}' ['{URL/dalšího/videa}']...
# stáhnout všechna videa z playlistu či kanálu
yt-dlp -f {požadované,formáty} [-P "{adresář/kam/stáhnout}"] -o "{formát názvu souboru}" [--no-mtime] [{další parametry}] '{URL/playlistu/či/kanálu}'
# stáhnout nová videa z playlistu či kanálu
// Před prvním použitím by měl být záznamový soubor prázdný. Tento příkaz do něj vyplní id již stažených videí.
yt-dlp -f {požadované,formáty} [-P "{adresář/kam/stáhnout}"] -o "{formát názvu souboru}" [--no-mtime] --download-archive {záznamový-soubor} [{další parametry}] '{URL/playlistu/či/kanálu}'
# vytvořit prázdný/úplný záznamový soubor
// Úplný záznamový soubor bude obsahovat identifikátory všech videí z daného playlistu či kanálu, takže při jeho příštím použití se stáhnou jen ta, která přibyla od jeho vytvoření.
true >{záznamový-soubor}
yt-dlp -O '%(extractor)s %(id)s' -i --flat-playlist '{URL/playlistu/či/kanálu}' >{záznamový-soubor}
# volba formátů ke stažení (-f; obecně/příklad)
// V parametru -f se používají tři operátory (zde v pořadí od nejvyšší priority po nejnižší): „+“ odděluje formát videa a formát zvuku v případě, že mají být staženy samostatně a spojeny; „/“ odděluje alternativy — program stáhne první z uvedených formátů, který bude dostupný; „,“ odděluje více formátů k postupnému stažení.
-f '{požadované,formáty}'
-f 'bestvideo+bestaudio/best'
-f '244+140,248+140'
# cílový adresář (-P; obecně/příklad)
-P "{cesta}"
-P "../videa"
-P ~/Videa
# formát názvu souboru
// Obsahuje-li parametr -o relativní cestu, ta bude vyhodnocena relativně vůči cestě určené parametrem -P; neexistující adresáře budou vytvořeny podle potřeby. Každý formát názvu souboru by měl končit „.%(ext)s“, aby nenastaly problémy při konverzích.
-o "[{cesta}]{formátovací řetězec}.%(ext)s"
-o "%(title)s(%(id)s)-%(heightd).%(ext)s"
-o "%(title)s/%(title)s-%(format_id)s.%(ext)s"
# čas poslední změny souboru nastavit na: čas nahrátí videa na službu/čas stažení
--mtime
--no-mtime
# nepřerušovat činnost při chybě
-i
# nestahovat, ale vypsat údaje o videu na standardní výstup
-O '{formátovací řetězec}'
# stáhnout nejlepší dostupný formát/ale pokud možno s jiným kodekem než AV1
-f 'bestvideo+bestaudio/best'
-f 'bestvideo[vcodec!^=av01]+bestaudio/bestvideo+bestaudio/best'
# stáhnout nejlepší dostupný formát s výškou maximálně 480 pixelů
// Vhodné hodnoty výšky: 144, 240, 360, 480, 720, 1080, 1440, 2160.
-f 'bestvideo[height<=?480]+bestaudio/best[height<=?480]/best'
# stáhnout co nejmenší formát
-f 'best' --format-sort '+size,+br,+res,+fps'
# stáhnout co nejlepší formát, ale každý soubor maximálně cca 100 MiB
-f 'bestvideo[filesize<=100M]+bestaudio[filesize<=100M]/best[filesize<=100M]'
# stáhnout jen co nejlepší zvuk bez obrazu
// Audio-formát uvádějte, jen pokud vám na něm záleží (překódování může snížit kvalitu zvuku). Může to být: best, aac, flac, mp3, m4a, opus, vorbis nebo wav.
-f 'bestaudio' [-x [--audio-format {audio-formát}]]
# stáhnout jedině nejlepší video bez obrazu, s kodekem H264
-f 'bestvideo[vcodec^=avc1]'
# identifikátor videa
%(id)s ⊨ CvhJWKtBLn4
# název videa
%(title)s ⊨ Oficiální ASMR booktrailer seriálu Ester Krejčí 1.0
# správná přípona výstupního souboru
%(ext)s ⊨ mkv
# šířka/výška videa
%(width)d ⊨ 1920
%(height)d ⊨ 1080
# formát videa (číslo/podrobný popis)
%(format_id)s ⊨ 299
%(format)s ⊨ 299 - 1920x1080 (1080p60)
# datum nahrátí videa na službu (nemusí odpovídat datu zveřejnění)
%(upload_date)s ⊨ 20190618
%(upload_date>%Y-%m-%d)s ⊨ 2019-06-18
# počítadlo stahování (pět míst/jen číslo)
%(autonumber[+{prvníčíslo}-1])05d ⊨ 00001
%(autonumber[+{prvníčíslo}-1])d ⊨ 1
# index v playlistu (doplněný nulami/jen číslo)
%(playlist_index)03d ⊨ 001
%(playlist_index)d ⊨ 1
# název kanálu
%(uploader)s ⊨ Mikoláš Štrajt
# délka videa v sekundách
%(duration)d ⊨ 1448
# aktuální čas před zahájením stahování videa (různé formáty)
%(epoch>%Y-%m-%dT%H:%M:%S)s ⊨ 2022-02-20T12:53:40
%(epoch>%Y%m%d)s ⊨ 20220220
# popis videa
%(description)s
# počet zhlédnutí/liků/disliků
%(view_count)d ⊨ 12
%(like_count)d ⊨ 1
%(dislike_count)d ⊨ 0
# technické označení kodeku videa/zvuku
%(vcodec)s ⊨ avc1.64001e
%(acodec)s ⊨ mp4a.40.2
# identifikátor/název playlistu
%(playlist_id)s ⊨ NA
%(playlist_title)s ⊨ NA
# licence videa
%(license)s ⊨ NA
# přibližná/co nejpřesnější velikost souboru v bajtech
%(filesize_approx)d ⊨ 235205166
%(filesize,filesize_approx)d ⊨ 235205166
# vypsat dostupné formáty videa
yt-dlp -F [-v] {URL-videa}
# získat o videu informace ve vlastním formátu (obecně/příklad)
yt-dlp -O "{formátovací řetězec}" [-f '{formáty-videa}'] {URL-videa}
yt-dlp -O "Video '%(title)s' od %(uploader)s je k dispozici ve formátu %(format_id)s s rozměry %(width)dx%(height)d a příponou .%(ext)s." -f 'bestvideo+bestaudio/best' "https://www.youtube.com/watch?v=CvhJWKtBLn4"
# získat všechny dostupné informace (výstup do formátu JSON)
yt-dlp -j '{URL videa, playlistu či kanálu}' [{URL dalšího}]...
# získat popisek videa bez dalších informací
yt-dlp -O '%(description)s' {URL-videa}
# rychle vypsat playlist (obecně/příklad)
// Při použití parametru --flat-playlist budou ve formátovacím řetězci fungovat pouze některé parametry (zejména id, title, duration a údaje související s playlistem či kanálem, ostatní položky budou vracet „NA“. Doporučuji předem vyzkoušet, zda bude váš formátovací řetězec s tímto parametrem správně fungovat.
yt-dlp --flat-playlist -O '{formátovací řetězec}' {URL-playlistu-či-kanálu}...
yt-dlp --flat-playlist -O '%(url,id)s %(title)s' 'https://www.youtube.com/playlist?list=PLXGwauS5zHVbHtwHtc\_4YET61DZwVOSco'
# vypsat každé video z playlistu (informace ve vlastním formátu)
yt-dlp -i -O "{formátovací řetězec}" [-f '{formát-videa}'] {URL-playlistu}...
# pro každé video v playlistu YouTube vypsat jeho úplnou adresu
yt-dlp -i -O 'https://www.youtube.com/watch?v=%(id)s' {URL-playlistu}...
# pro každé video v playlistu vypsat jeho index, id a titulek
yt-dlp -i -O "%(playlist_index)d. %(id)s %(title)s" {URL-playlistu}...
# pro každé video v playlistu vypsat jeho index, id a rozměry nejlepšího formátu
yt-dlp -i -O "%(playlist_index)d. %(id)s %(width)dx%(height)d" -f "bestvideo/best" {URL-playlistu}...
# vypsat dostupné titulky
yt-dlp --list-subs '{URL-videa}'
# stáhnout k videu i titulky (normální/automaticky přeložené)
// Formát titulků může být ass, srt, vtt nebo lrc.
yt-dlp --write-sub [--sub-lang {jazyk}] --convert-subs {formát-titulků} "{URL-videa}"
yt-dlp --write-auto-sub [--sub-lang {jazyk}] --convert-subs {formát-titulků} "{URL-videa}"
# stáhnout s videem titulky a sloučit je do kontejneru/všít do videa
{...} --embed-subs --write-subs [--sub-lang {jazyk}] {...}
?
# stáhnout z videa jen titulky (normální/automaticky přeložené)
{...} --skip-download --write-subs [--sub-lang {jazyky}] {...}
{...} --skip-download --write-auto-subs [--sub-lang {jazyky}] {...}
# aktualizovat program
rm -fv yt-dlp
wget https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -O ./yt-dlp && (cmp yt-dlp /usr/local/bin/yt-dlp || sudo install -CpvT -o root -g root -m 755 yt-dlp /usr/local/bin/yt-dlp)
[rm -fv yt-dlp]
Začíná-li zaklínadlo v této kapitole příkazem „yt-dlp“, uvádí úplný příkaz; jinak uvádí jen parametry příkazu „yt-dlp“, které je třeba skombinovat s dalšími parametry.
*# *
sudo apt-get install -y ffmpeg python3 wget
sudo wget https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -O /usr/local/bin/yt-dlp
sudo chmod u=rwx,go=rx /usr/local/bin/yt-dlp
*# *
yt-dlp "https://www.youtube.com/watch?v=CvhJWKtBLn4"
!ÚzkýRežim: zap
- Pokud stahování z některé služby přestane fungovat, první, co je třeba vyzkoušet, je aktualizovat program.
- Důrazně doporučuji si na volání příkazu „yt-dlp“ vytvořit skripty (popř. funkce či aliasy), které mu předají obvyklá nastavení. Parametry sice lze vložit také do konfiguračního souboru, ale dle mých zkušeností jsou skripty či aliasy praktičtější.
- Pole „%(url)s“ není v některých kontextech k dispozici, pomůže ho v takovém případě nahradit polem „%(id)s“.
*# *
yt-dlp --help [| less]
Pro podrobný popis formátovacího řetězce a mechanismu automatického výběru formátu ke stažení navštivte oficiální dokumentaci. Bohužel, veškerá oficiální nápověda je jen v angličtině.
- Článek: Pět tipů pro přehrávání webového videa
- Oficiální dokumentace (anglicky)
- Video: Downloading Videos, Music and More with Youtube DL (anglicky)
- Video: Command Line App For Downloading YouTube Videos (anglicky)
V této verzi kapitoly chybí:
!KompaktníSeznam:
- práce s náhledovými obrázky
Tato kapitola záměrně nepokrývá:
!KompaktníSeznam:
- nic
!ÚzkýRežim: vyp