yt-dlp Kurulumu ve Kullanımı
yt-dlp, öncelikle YouTube olmak üzere harici platformlardan ses ve video indirmeye yarayan komut istemcisi uygulamasıdır. youtube-dl projesinin altyapısından geliştirilmiştir.
Kurulum
- https://github.com/yt-dlp/yt-dlp/releases bağlantısına gidin.
- Assets bölümünden yt-dlp.exe dosyasını indirin.
- Herhangi bir dizinde yt-dlp adlı klasör oluşturup indirdiğiniz exe dosyasını içerisine atın.
Buradan sonrası isteğe bağlı, fakat rahat kullanım için yapılmasını öneririm.
- Windows aramada “Sistem ortam değişkenlerini düzenleyin” yazdıktan sonra açılan pencerede Ortam Değişkenleri… kutucuğuna tıklayın.
- “… için kullanıcı değişkenleri” bölümünde Path üzerine tıklayın ve düzenleye basın.
- Ekle butonuna tıklayarak exe dosyasının olduğu dizini yazın.
PATH, işletim sisteminin gerekli yürütülebilir dosyaları komut satırından veya terminal penceresinden bulabilmek için kullandığı toplu bir sistem değişkenidir.
Seçenekler
yt-dlp [SEÇENEKLER] [--] URL [URL...]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
GENEL
-h, --help Yardım metnini yazdır
--version Program versiyonu yazdır
-U, --update Güncelle
--no-update Güncelleme kontrolünü devre dışı bırak
(varsayılan)
DETAY VE SİMÜLASYON
-s, --simulate Videoyu indirme ve diske hiçbir şey yazma
--no-simulate Bir listeleme seçeneği kullanılsa bile
videoyu indir
--skip-download Video hariç diğer dosyaları
indir (Diğer ad: --no-download)
VİDEO BİÇİMİ
-f, --format FORMAT Video biçim kodu
"FORMAT SEÇİMİ" kısmına bakınız
-S, --format-sort SIRALAMA Biçimleri verilen alana göre sırala
"FORMAT SIRALAMA" kısmına bakınız
-F, --list-formats Her bir video için mümkün olan biçimleri listele
--no-simulate kullanılmamış ise simüle et.
ALT YAZILAR
--write-subs Alt yazı ekle
--no-write-subs Alt yazıları ekleme
--write-auto-subs Otomatik oluşturulmuş alt yazıları ekle
(Diğer ad: --write-automatic-subs)
--sub-lang DİLLER Eklenecek alt yazı dilleri. Regex
ya da "all" yazarak tümü seçilebilir. Virgül
ile çoklu seçim de mümkün. "en.*" tüm
İngilizce
alt yazı türlerini ekler. İstenmeyen dilin
başına - koyularak hariç tutulabilir.
--list-subs Her bir video için mümkün olan
alt yazı dillerini listele.
--no-simulate kullanılmamış ise simüle et.
--sub-format FORMAT Alt yazı formatı; kısa halini de kabul eder,
örn. "srt" ya da "ass/srt/best"
KÜÇÜK RESİM
--write-thumbnail Küçük resmi indir
--no-write-thumbnail Küçük resmi indirme (varsayılan)
--write-all-thumbnails Tüm küçük resimleri indir
--list-thumbnails Var olan küçük resimleri listele
--no-simulate kullanılmamış ise simüle et.
POST-PROCESSING
-x, --extract-audio Videoyu ses dosyasına dönüştür
(ffmpeg ve ffprobe gerektirir)
--embed-subs Alt yazıları videoya ekle
(mp4, webm ve mkv dosya türlerinde)
--no-embed-subs Alt yazıları ekleme (varsayılan)
--embed-thumbnail Küçük resmi videonun posteri olarak ekle
--no-embed-thumbnail Küçük resmi ekleme (varsayılan)
--embed-metadata Meta verilerini dosyaya ekle.
--no-embed-chapters / --no-embed-info-json
kullanılmamışsa bölümleri ve bilgileri de
ekle (Diğer ad: --add-metadata)
Kullanım
İlgili video için uygun format ve çözünürlükleri listele.
1
yt-dlp -F https://www.youtube.com/watch?v=dQw4w9WgXcQ
Karşımıza şöyle bir liste çıkacaktır.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
[youtube] dQw4w9WgXcQ: Downloading webpage
[youtube] dQw4w9WgXcQ: Downloading android player API JSON
[info] Available formats for dQw4w9WgXcQ:
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 1 │ mhtml │ images storyboard
sb0 mhtml 160x90 1 │ mhtml │ images storyboard
600 webm audio only 2 │ 813.30KiB 31k https │ audio only opus 31k 48k ultralow, webm_dash
249 webm audio only 2 │ 1.18MiB 46k https │ audio only opus 46k 48k low, webm_dash
250 webm audio only 2 │ 1.55MiB 61k https │ audio only opus 61k 48k low, webm_dash
251 webm audio only 2 │ 3.28MiB 130k https │ audio only opus 130k 48k medium, webm_dash
599 m4a audio only 2 │ 798.64KiB 31k https │ audio only mp4a.40.5 31k 22k ultralow, m4a_dash
139 m4a audio only 2 │ 1.23MiB 49k https │ audio only mp4a.40.5 49k 22k low, m4a_dash
140 m4a audio only 2 │ 3.27MiB 130k https │ audio only mp4a.40.2 130k 44k medium, m4a_dash
17 3gp 176x144 6 1 │ 1.97MiB 78k https │ mp4v.20.3 78k mp4a.40.2 0k 22k 144p
598 webm 256x144 13 │ 632.46KiB 24k https │ vp9 24k video only 144p, webm_dash
278 webm 256x144 25 │ 2.05MiB 81k https │ vp9 81k video only 144p, webm_dash
597 mp4 256x144 13 │ 826.87KiB 32k https │ avc1.4d400b 32k video only 144p, mp4_dash
394 mp4 256x144 25 │ 1.71MiB 68k https │ av01.0.00M.08 68k video only 144p, mp4_dash
160 mp4 256x144 25 │ 1.79MiB 71k https │ avc1.4d400c 71k video only 144p, mp4_dash
242 webm 426x240 25 │ 3.72MiB 147k https │ vp9 147k video only 240p, webm_dash
395 mp4 426x240 25 │ 3.37MiB 134k https │ av01.0.00M.08 134k video only 240p, mp4_dash
133 mp4 426x240 25 │ 2.90MiB 115k https │ avc1.4d4015 115k video only 240p, mp4_dash
243 webm 640x360 25 │ 6.54MiB 259k https │ vp9 259k video only 360p, webm_dash
396 mp4 640x360 25 │ 6.57MiB 260k https │ av01.0.01M.08 260k video only 360p, mp4_dash
134 mp4 640x360 25 │ 5.44MiB 215k https │ avc1.4d401e 215k video only 360p, mp4_dash
18 mp4 640x360 25 2 │ ~ 8.91MiB 344k https │ avc1.42001E 344k mp4a.40.2 0k 44k 360p
244 webm 854x480 25 │ 9.38MiB 371k https │ vp9 371k video only 480p, webm_dash
397 mp4 854x480 25 │ 11.45MiB 453k https │ av01.0.04M.08 453k video only 480p, mp4_dash
135 mp4 854x480 25 │ 8.32MiB 329k https │ avc1.4d401e 329k video only 480p, mp4_dash
247 webm 1280x720 25 │ 16.51MiB 653k https │ vp9 653k video only 720p, webm_dash
22 mp4 1280x720 25 2 │ ~ 19.77MiB 764k https │ avc1.64001F 764k mp4a.40.2 0k 44k 720p
398 mp4 1280x720 25 │ 23.71MiB 938k https │ av01.0.05M.08 938k video only 720p, mp4_dash
136 mp4 1280x720 25 │ 16.05MiB 635k https │ avc1.4d401f 635k video only 720p, mp4_dash
248 webm 1920x1080 25 │ 53.59MiB 2120k https │ vp9 2120k video only 1080p, webm_dash
399 mp4 1920x1080 25 │ 45.16MiB 1786k https │ av01.0.08M.08 1786k video only 1080p, mp4_dash
137 mp4 1920x1080 25 │ 76.77MiB 3037k https │ avc1.640028 3037k video only 1080p, mp4_dash
Bitrate çözünürlükten, codec ise bitrate değerinden daha önemlidir. TBR ve VBR sütununda bitrate değerleri görülmekte, vp9 codeci ise avc1’den daha iyi (videonuz yeteri miktarda izlenmezse YouTube vp9 codecini aktifleştirmez, bunu sağ tık menüsünde istatistiklere bakarak görebilirsiniz).
İstediğimiz iki seçenekle videoyu indirelim. Seçenek belirtmek zorunlu değildir, varsayılan olarak yt-dlp en yüksek kaliteyi indirir fakat bu mp4 olmayabilir. Dolayısıyla mp4 olarak indirecek 137 ve 140 özelliklerini kullanacağım.
1
2
3
4
5
6
7
8
9
10
11
12
yt-dlp -f 137+140 https://www.youtube.com/watch?v=dQw4w9WgXcQ
[youtube] dQw4w9WgXcQ: Downloading webpage
[youtube] dQw4w9WgXcQ: Downloading android player API JSON
[info] dQw4w9WgXcQ: Downloading 1 format(s): 137+140
[download] Destination: Rick Astley - Never Gonna Give You Up (Official Music Video) [dQw4w9WgXcQ].f137.mp4
[download] 100% of 76.77MiB in 00:00:26 at 2.90MiB/s
[download] Destination: Rick Astley - Never Gonna Give You Up (Official Music Video) [dQw4w9WgXcQ].f140.m4a
[download] 100% of 3.27MiB in 00:00:01 at 2.87MiB/s
[Merger] Merging formats into "Rick Astley - Never Gonna Give You Up (Official Music Video) [dQw4w9WgXcQ].mp4"
Deleting original file Rick Astley - Never Gonna Give You Up (Official Music Video) [dQw4w9WgXcQ].f140.m4a (pass -k to keep)
Deleting original file Rick Astley - Never Gonna Give You Up (Official Music Video) [dQw4w9WgXcQ].f137.mp4 (pass -k to keep)
İndirilecek dizini belirtmek için -P
, isimlendirmek için -o
seçeneğini kullanabiliriz. Çeşitli isimlendirme yöntemleri ve metadata işlemesi Output Template bölümünde bulunmakta.
1
yt-dlp -P "C:/Users/user/Documents" -o "%(title)s.%(ext)s" https://www.youtube.com/watch?v=dQw4w9WgXcQ
Sadece ses indirmek:
1
yt-dlp --extract-audio https://www.youtube.com/watch?v=dQw4w9WgXcQ
Alt yazı seçeneklerini listelemek:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
yt-dlp --list-subs https://www.youtube.com/watch?v=dQw4w9WgXcQ
[youtube] dQw4w9WgXcQ: Downloading webpage
[youtube] dQw4w9WgXcQ: Downloading android player API JSON
[info] Available automatic captions for dQw4w9WgXcQ:
Language Name Formats
af Afrikaans vtt, ttml, srv3, srv2, srv1, json3
ak Akan vtt, ttml, srv3, srv2, srv1, json3
... ... ... ...
zh-Hans Chinese (Simplified) vtt, ttml, srv3, srv2, srv1, json3
zh-Hant Chinese (Traditional) vtt, ttml, srv3, srv2, srv1, json3
co Corsican vtt, ttml, srv3, srv2, srv1, json3
hr Croatian vtt, ttml, srv3, srv2, srv1, json3
cs Czech vtt, ttml, srv3, srv2, srv1, json3
da Danish vtt, ttml, srv3, srv2, srv1, json3
dv Divehi vtt, ttml, srv3, srv2, srv1, json3
nl Dutch vtt, ttml, srv3, srv2, srv1, json3
en-orig English (Original) vtt, ttml, srv3, srv2, srv1, json3
en English vtt, ttml, srv3, srv2, srv1, json3
... ... ... ...
İstenilen dilde alt yazılı videoyu indirmek:
1
yt-dlp --write-subs en https://www.youtube.com/watch?v=dQw4w9WgXcQ
Giriş yapmayı gerektiren bir videoyu indirmek için direkt olarak tarayıcı adı, ya da çerezleri txt dosyasına çıkaracak bir eklenti kullanabilirsiniz.
Chrome mağazasındaki “Get cookies.txt” eklentisi kötü amaçlı yazılım olacak işaretlenmiştir. Açık kaynak alternatifi olan “Get cookies.txt LOCALLY” eklentisini kullanabilirsiniz.
1
yt-dlp --cookies-from-browser chrome / --cookies cookies.txt https://www.youtube.com/watch?v=r41n7dOcEf0
Output Template
En basit şekilde -o
kullanımı, tek bir video indirirken yt-dlp -o komik_video.flv "https://video/bağlantısı"
şeklinde. Bu komut çıktı dosyasının adını uzantı dahil değiştirir. O yüzden böyle bir isimlendirmeye hiç gerek yok, çıktının nasıl olacağına karar vermek için önce dosyanın metadata verilerine bakmak en iyisi.
Bunun için --write-info-json
kullanarak metadatayı bir json dosyasına aktarabiliriz, ya da --print-json
ile komut penceresine yazdırabiliriz.
Örneğin bir YouTube Music linkinin metadatasının bazı kısımları şu şekilde.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
{
"id": "Z925Fr4dkVA",
"title": "Heart-Shaped Box (Orchestral)",
"thumbnail": "https://i.ytimg.com/vi_webp/Z925Fr4dkVA/maxresdefault.webp",
"description": "Provided to YouTube by WaterTower Music\n\nHeart-Shaped Box (Orchestral) · Ramin Djawadi\n\nWestworld: Season 2 (Music From the HBO Series)\n\n℗ 2018 Warner Bros. Entertainment Inc.\n\nWriter: Kurt Cobain\n\nAuto-generated by YouTube.",
"uploader": "Ramin Djawadi - Topic",
"uploader_id": "UCvV2r2DeuALi2RprU-J53EA",
"uploader_url": "http://www.youtube.com/channel/UCvV2r2DeuALi2RprU-J53EA",
"channel_id": "UCvV2r2DeuALi2RprU-J53EA",
"channel_url": "https://www.youtube.com/channel/UCvV2r2DeuALi2RprU-J53EA",
"duration": 205,
"view_count": 1749371,
"average_rating": null,
"age_limit": 0,
"webpage_url": "https://www.youtube.com/watch?v=Z925Fr4dkVA",
"categories": [
"Music"
],
"tags": [
"Ramin Djawadi",
"Westworld: Season 2 (Music From the HBO Series)",
"Heart-Shaped Box (Orchestral)"
],
"album": "Westworld: Season 2 (Music From the HBO Series)",
"artist": "Ramin Djawadi",
"track": "Heart-Shaped Box (Orchestral)",
"release_date": null,
"release_year": 2018,
}
Eğer -o %(title)s_%(artist)s_%(release_year)s.%(ext)s
yazmış olsaydık, dosya adı Heart-Shaped Box (Orchestral)_Ramin Djawadi_2018.m4a
olacaktı (m4a seçildiğini varsayalım).
Template klasör de oluşturabilir. Örneğin -o "%(playlist)s/%(playlist-index)s - %(title)s.%(ext)s"
çalma listesine özel bir dizin oluşturur. Hâli hazırda bulunan bir klasör hedef gösterilirse -P
seçeneği görmezden gelinecektir, aksi durumda -P
ile belirtilmiş olan dizinde yeni klasör oluşturulur.
Varsayılan template
%(title)s [%(id)s].%(ext)s
şeklindedir.
--embed-metadata
ile bu bilgileri dosyaya gömebiliyoruz, fakat sadece gerekli bilgileri eklemek ya da değiştirmek istediğimizde metadata ön işlemesi gerekecek.
Konfigürasyon
Desteklenen herhangi bir komut satırı seçeneğini bir yapılandırma dosyasına yerleştirerek yt-dlp’yi yapılandırabilirsiniz. Yapılandırma aşağıdaki konumlardan yüklenir:
- Ana Konfigürasyon:
--config-location
komutuyla verilmiş dosya
Kullanıcı Konfigürasyonu:
${XDG_CONFIG_HOME}/yt-dlp/config
(Linux/macOS)${XDG_CONFIG_HOME}/yt-dlp.conf
- %XDG_CONFIG_HOME% varsayılan olarak ~/.config dizinidir.
${APPDATA}/yt-dlp/config
(Windows)${APPDATA}/yt-dlp/config.txt
- %APPDATA% genelde C:/Users/user/AppData/Roaming olur. %HOME% ise ~ olarak belirtilebilir.
~/yt-dlp.conf
~/yt-dlp.conf.txt