Skip to content

Latest commit

 

History

History
343 lines (244 loc) · 14.5 KB

stahování-videí.md

File metadata and controls

343 lines (244 loc) · 14.5 KB

Stahování videí

!Štítky: {program}{internet}{video} !OblíbenáZaklínadla: !ÚzkýRežim: zap

Úvod

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.

Definice

  • Id je technický textový (popř. číselný) identifikátor videa či zvukového záznamu na přílušné službě.

!ÚzkýRežim: vyp

Zaklínadla

Stahování videí

# 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}

Nejdůležitější parametry

# 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}'

Výběr formátu videa (-f)

# 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]'

Formátovací řetězec pro parametry -o a -O

# 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

Získat informace o videu

# 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}

Zpracování playlistu či kanálu

# 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}...

Stahování titulků

# 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}] {...}

Aktualizace programu

# 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]

Parametry příkazů

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.

Instalace na Ubuntu

*# *
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

Ukázka

*# *
yt-dlp "https://www.youtube.com/watch?v=CvhJWKtBLn4"

!ÚzkýRežim: zap

Tipy a zkušenosti

  • 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“.

Další zdroje informací

*# *
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ě.

Zákulisí kapitoly

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