Gönderi

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

  1. https://github.com/yt-dlp/yt-dlp/releases bağlantısına gidin.
  2. Assets bölümünden yt-dlp.exe dosyasını indirin.
  3. 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.

  1. Windows aramada “Sistem ortam değişkenlerini düzenleyin” yazdıktan sonra açılan pencerede Ortam Değişkenleri… kutucuğuna tıklayın.
  2. için kullanıcı değişkenleri” bölümünde Path üzerine tıklayın ve düzenleye basın.
  3. Ekle butonuna tıklayarak exe dosyasının olduğu dizini yazın.

Windows PATH Screenshot

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:

  1. Ana Konfigürasyon:
    • --config-location komutuyla verilmiş dosya
  2. 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

Kaynakça

Bu gönderi CC BY 4.0 lisansı altındadır.