yt-dlp adalah pengunduh audio/video baris perintah yang kaya fitur dengan dukungan untuk ribuan situs. Proyek ini merupakan cabang dari youtube-dl berdasarkan youtube-dlc yang sekarang tidak aktif.
INSTALASI
Instruksi terperinci
Rilis File
Memperbarui
Ketergantungan
Menyusun
PENGGUNAAN DAN OPSI
Opsi Umum
Opsi Jaringan
Pembatasan geografis
Pemilihan Video
Opsi Unduhan
Opsi Sistem File
Opsi Gambar Kecil
Opsi Pintasan Internet
Opsi Verbositas dan Simulasi
Solusi
Opsi Format Video
Opsi Subjudul
Opsi Otentikasi
Opsi Pasca Pemrosesan
Opsi Blok Sponsor
Opsi Ekstraktor
KONFIGURASI
Pengkodean file konfigurasi
Otentikasi dengan netrc
Catatan tentang variabel lingkungan
TEMPLATE KELUARAN
Contoh templat keluaran
PEMILIHAN FORMAT
Format Penyaringan
Format Penyortiran
Contoh Pemilihan Format
MEMODIFIKASI METADATA
Memodifikasi contoh metadata
ARGUMEN EKSTRAKTOR
PLUGIN
Menginstal Plugin
Mengembangkan Plugin
MENYEDIAKAN YT-DLP
Menanamkan contoh
PERUBAHAN DARI YOUTUBE-DL
Fitur baru
Perbedaan perilaku default
Opsi yang tidak digunakan lagi
BERKONTRIBUSI
Membuka Masalah
Petunjuk Pengembang
WIKI
Pertanyaan Umum
Anda dapat menginstal yt-dlp menggunakan binari, pip, atau menggunakan manajer paket pihak ketiga. Lihat wiki untuk instruksi rinci
Mengajukan | Keterangan |
---|---|
yt-dlp | Biner zipimport yang tidak bergantung pada platform. Membutuhkan Python (direkomendasikan untuk Linux/BSD ) |
yt-dlp.exe | Biner x64 mandiri Windows (Win8+) (direkomendasikan untuk Windows ) |
yt-dlp_macos | Universal MacOS (10.15+) dapat dieksekusi mandiri (direkomendasikan untuk MacOS ) |
Mengajukan | Keterangan |
---|---|
yt-dlp_x86.exe | Windows (Win8+) biner x86 (32-bit) mandiri |
yt-dlp_linux | Biner x64 mandiri Linux |
yt-dlp_linux_armv7l | Linux mandiri armv7l (32-bit) biner |
yt-dlp_linux_aarch64 | Linux mandiri aarch64 (64-bit) biner |
yt-dlp_win.zip | Windows yang tidak dikemas dapat dieksekusi (tidak ada pembaruan otomatis) |
yt-dlp_macos.zip | MacOS (10.15+) yang belum dikemas dapat dieksekusi (tidak ada pembaruan otomatis) |
yt-dlp_macos_legacy | MacOS (10.9+) x64 mandiri yang dapat dieksekusi |
Mengajukan | Keterangan |
---|---|
yt-dlp.tar.gz | Tarbal sumber |
SHA2-512SUMS | Jumlah SHA512 gaya GNU |
SHA2-512SUMS.sig | File tanda tangan GPG untuk jumlah SHA512 |
SHA2-256Jumlah | Jumlah SHA256 gaya GNU |
SHA2-256SUMS.sig | File tanda tangan GPG untuk jumlah SHA256 |
Kunci publik yang dapat digunakan untuk memverifikasi tanda tangan GPG tersedia di sini Contoh penggunaan:
curl -L https://github.com/yt-dlp/yt-dlp/raw/master/public.key | gpg --import gpg --verify SHA2-256SUMS.sig SHA2-256SUMS gpg --verify SHA2-512SUMS.sig SHA2-512SUMS
Catatan : Halaman manual, file penyelesaian shell (pelengkapan otomatis), dll. tersedia di dalam tarball sumber
Anda dapat menggunakan yt-dlp -U
untuk memperbarui jika Anda menggunakan binari rilis
Jika Anda menginstal dengan pip, cukup jalankan kembali perintah yang sama yang digunakan untuk menginstal program
Untuk pengelola paket pihak ketiga lainnya, lihat wiki atau lihat dokumentasi mereka
Saat ini ada tiga saluran rilis untuk binari: stable
, nightly
dan master
.
stable
adalah saluran default, dan banyak perubahannya telah diuji oleh pengguna saluran nightly
dan master
.
Saluran nightly
memiliki rilis yang dijadwalkan untuk dibuat setiap hari sekitar tengah malam UTC, untuk melihat cuplikan patch dan perubahan baru proyek. Ini adalah saluran yang direkomendasikan untuk pengguna reguler yt-dlp. Rilis nightly
tersedia dari yt-dlp/yt-dlp-nightly-builds atau sebagai rilis pengembangan paket yt-dlp
PyPI (yang dapat diinstal dengan tanda --pre
pip).
Saluran master
menampilkan rilis yang dibuat setelah setiap dorongan ke cabang master, dan rilis ini akan memiliki perbaikan dan penambahan terbaru, namun mungkin juga lebih rentan terhadap regresi. Mereka tersedia dari yt-dlp/yt-dlp-master-builds.
Saat menggunakan --update
/ -U
, biner rilis hanya akan memperbarui ke salurannya saat ini. --update-to CHANNEL
dapat digunakan untuk beralih ke saluran lain ketika versi yang lebih baru tersedia. --update-to [CHANNEL@]TAG
juga dapat digunakan untuk meningkatkan atau menurunkan versi ke tag tertentu dari suatu saluran.
Anda juga dapat menggunakan --update-to
(
) untuk memperbarui saluran pada repositori yang sama sekali berbeda. Berhati-hatilah dengan repositori mana yang Anda perbarui, tidak ada verifikasi yang dilakukan untuk biner dari repositori berbeda.
Contoh penggunaan:
yt-dlp --update-to master
beralih ke saluran master
dan memperbarui ke rilis terbarunya
yt-dlp --update-to [email protected]
tingkatkan/turunkan versi untuk merilis ke tag saluran stable
2023.07.06
yt-dlp --update-to 2023.10.07
tingkatkan/turunkan ke tag 2023.10.07
jika ada di saluran saat ini
yt-dlp --update-to example/[email protected]
tingkatkan/turunkan versi ke rilis dari repositori example/yt-dlp
, tag 2023.09.24
Penting : Setiap pengguna yang mengalami masalah dengan rilis stable
harus menginstal atau memperbarui ke rilis nightly
sebelum mengirimkan laporan bug:
# To update to nightly from stable executable/binary: yt-dlp --update-to nightly # To install nightly with pip: python3 -m pip install -U --pre "yt-dlp[default]"
Python versi 3.9+ (CPython) dan 3.10+ (PyPy) didukung. Versi dan implementasi lain mungkin berfungsi dengan benar atau tidak.
Meskipun semua dependensi lainnya bersifat opsional, ffmpeg
dan ffprobe
sangat disarankan
ffmpeg dan ffprobe - Diperlukan untuk menggabungkan file video dan audio yang terpisah, serta untuk berbagai tugas pasca-pemrosesan. Lisensi tergantung pada build
Ada bug di ffmpeg yang menyebabkan berbagai masalah saat digunakan bersama yt-dlp. Karena ffmpeg merupakan dependensi yang penting, kami menyediakan build khusus dengan patch untuk beberapa masalah ini di yt-dlp/FFmpeg-Builds. Lihat readme untuk rincian tentang masalah spesifik yang diselesaikan oleh build ini
Penting : Yang Anda perlukan adalah ffmpeg biner , BUKAN paket Python dengan nama yang sama
certifi * - Menyediakan bundel sertifikat root Mozilla. Berlisensi di bawah MPLv2
brotli * atau brotlicffi - Dukungan pengkodean konten Brotli. Keduanya berlisensi di bawah MIT 1 2
websockets * - Untuk mengunduh melalui websocket. Berlisensi di bawah Klausul BSD-3
permintaan * - perpustakaan HTTP. Untuk proxy HTTPS dan dukungan koneksi persisten. Berlisensi di bawah Apache-2.0
Berikut ini memberikan dukungan untuk meniru permintaan browser. Ini mungkin diperlukan untuk beberapa situs yang menggunakan sidik jari TLS.
curl_cffi (disarankan) - Pengikatan Python untuk peniruan curl. Memberikan target peniruan identitas untuk Chrome, Edge, dan Safari. Berlisensi di bawah MIT
Dapat diinstal dengan grup curl-cffi
, misal pip install "yt-dlp[default,curl-cffi]"
Saat ini disertakan dalam versi yt-dlp.exe
, yt-dlp_linux
, dan yt-dlp_macos
mutagen * - Untuk --embed-thumbnail
dalam format tertentu. Berlisensi di bawah GPLv2+
AtomicParsley - Untuk --embed-thumbnail
dalam file mp4
/ m4a
ketika mutagen
/ ffmpeg
tidak bisa. Berlisensi di bawah GPLv2+
xattr , pyxattr atau setfattr - Untuk menulis metadata xattr ( --xattr
) di Mac dan BSD . Berlisensi masing-masing di bawah MIT, LGPL2.1 dan GPLv2+
pycryptodomex * - Untuk mendekripsi aliran AES-128 HLS dan berbagai data lainnya. Berlisensi berdasarkan Klausul BSD-2
phantomjs - Digunakan dalam ekstraktor tempat javascript perlu dijalankan. Berlisensi di bawah Klausul BSD-3
penyimpanan rahasia * - Untuk --cookies-from-browser
mengakses keyring Gnome saat mendekripsi cookie browser berbasis Chromium di Linux . Berlisensi di bawah Klausul BSD-3
Pengunduh eksternal apa pun yang ingin Anda gunakan dengan --downloader
avconv dan avprobe - Sekarang alternatif ffmpeg sudah tidak digunakan lagi . Lisensi tergantung pada build
sponskrub - Untuk menggunakan opsi sponskrub yang sekarang sudah tidak digunakan lagi . Berlisensi di bawah GPLv3+
rtmpdump - Untuk mengunduh aliran rtmp
. ffmpeg dapat digunakan dengan --downloader ffmpeg
. Berlisensi di bawah GPLv2+
mplayer atau mpv - Untuk mengunduh aliran rstp
/ mms
. ffmpeg dapat digunakan dengan --downloader ffmpeg
. Berlisensi di bawah GPLv2+
Untuk menggunakan atau mendistribusikan ulang dependensi, Anda harus menyetujui persyaratan lisensinya masing-masing.
Biner rilis mandiri dibuat dengan interpreter Python dan paket bertanda * disertakan.
Jika Anda tidak memiliki dependensi yang diperlukan untuk tugas yang Anda coba, yt-dlp akan memperingatkan Anda. Semua dependensi yang tersedia saat ini terlihat di bagian atas keluaran --verbose
Untuk membuat executable mandiri, Anda harus memiliki Python dan pyinstaller
(ditambah dependensi opsional yt-dlp jika diperlukan). Eksekusi akan dibuat untuk arsitektur CPU yang sama dengan Python yang digunakan.
Anda dapat menjalankan perintah berikut:
python3 devscripts/install_deps.py --include pyinstaller python3 devscripts/make_lazy_extractors.py python3 -m bundle.pyinstaller
Pada beberapa sistem, Anda mungkin perlu menggunakan py
atau python
alih-alih python3
.
python -m bundle.pyinstaller
menerima argumen apa pun yang dapat diteruskan ke pyinstaller
, seperti --onefile/-F
atau --onedir/-D
, yang didokumentasikan lebih lanjut di sini.
Catatan : Versi Pyinstaller di bawah 4.4 tidak mendukung Python yang diinstal dari Windows store tanpa menggunakan lingkungan virtual.
Penting : Menjalankan pyinstaller
secara langsung alih-alih menggunakan python -m bundle.pyinstaller
tidak didukung secara resmi. Ini mungkin berfungsi dengan benar atau tidak.
Anda memerlukan alat pembuatan python
(3.9+), zip
, make
(GNU), pandoc
* dan pytest
*.
Setelah menginstalnya, jalankan saja make
.
Anda juga dapat menjalankan make yt-dlp
untuk mengkompilasi biner saja tanpa memperbarui file tambahan apa pun. (Alat build yang ditandai dengan * tidak diperlukan untuk ini)
devscripts/install_deps.py
- Instal dependensi untuk yt-dlp.
devscripts/update-version.py
- Perbarui nomor versi berdasarkan tanggal saat ini.
devscripts/set-variant.py
- Mengatur varian build dari file yang dapat dieksekusi.
devscripts/make_changelog.py
- Buat log perubahan penurunan harga menggunakan pesan komit singkat dan perbarui file CONTRIBUTORS
.
devscripts/make_lazy_extractors.py
- Membuat ekstraktor malas. Menjalankan ini sebelum membuat biner (varian apa pun) akan meningkatkan kinerja startupnya. Setel variabel lingkungan YTDLP_NO_LAZY_EXTRACTORS
ke sesuatu yang tidak kosong untuk menonaktifkan paksa pemuatan ekstraktor lambat.
Catatan: Lihat --help
mereka untuk info lebih lanjut.
Jika Anda melakukan fork proyek di GitHub, Anda dapat menjalankan alur kerja build fork Anda untuk secara otomatis membuat versi yang dipilih sebagai artefak. Alternatifnya, Anda dapat menjalankan alur kerja rilis atau mengaktifkan alur kerja malam untuk membuat rilis penuh (pra-).
yt-dlp [OPTIONS] [--] URL [URL...]
Ctrl+F
adalah temanmu :D
-h, --help Print this help text and exit --version Print program version and exit -U, --update Update this program to the latest version --no-update Do not check for updates (default) --update-to [CHANNEL]@[TAG] Upgrade/downgrade to a specific version. CHANNEL can be a repository as well. CHANNEL and TAG default to "stable" and "latest" respectively if omitted; See "UPDATE" for details. Supported channels: stable, nightly, master -i, --ignore-errors Ignore download and postprocessing errors. The download will be considered successful even if the postprocessing fails --no-abort-on-error Continue with next video on download errors; e.g. to skip unavailable videos in a playlist (default) --abort-on-error Abort downloading of further videos if an error occurs (Alias: --no-ignore-errors) --dump-user-agent Display the current user-agent and exit --list-extractors List all supported extractors and exit --extractor-descriptions Output descriptions of all supported extractors and exit --use-extractors NAMES Extractor names to use separated by commas. You can also use regexes, "all", "default" and "end" (end URL matching); e.g. --ies "holodex.*,end,youtube". Prefix the name with a "-" to exclude it, e.g. --ies default,-generic. Use --list-extractors for a list of extractor names. (Alias: --ies) --default-search PREFIX Use this prefix for unqualified URLs. E.g. "gvsearch2:python" downloads two videos from google videos for the search term "python". Use the value "auto" to let yt-dlp guess ("auto_warning" to emit a warning when guessing). "error" just throws an error. The default value "fixup_error" repairs broken URLs, but emits an error if this is not possible instead of searching --ignore-config Don't load any more configuration files except those given to --config-locations. For backward compatibility, if this option is found inside the system configuration file, the user configuration is not loaded. (Alias: --no-config) --no-config-locations Do not load any custom configuration files (default). When given inside a configuration file, ignore all previous --config-locations defined in the current file --config-locations PATH Location of the main configuration file; either the path to the config or its containing directory ("-" for stdin). Can be used multiple times and inside other configuration files --plugin-dirs PATH Path to an additional directory to search for plugins. This option can be used multiple times to add multiple directories. Note that this currently only works for extractor plugins; postprocessor plugins can only be loaded from the default plugin directories --flat-playlist Do not extract the videos of a playlist, only list them --no-flat-playlist Fully extract the videos of a playlist (default) --live-from-start Download livestreams from the start. Currently only supported for YouTube (Experimental) --no-live-from-start Download livestreams from the current time (default) --wait-for-video MIN[-MAX] Wait for scheduled streams to become available. Pass the minimum number of seconds (or range) to wait between retries --no-wait-for-video Do not wait for scheduled streams (default) --mark-watched Mark videos watched (even with --simulate) --no-mark-watched Do not mark videos watched (default) --color [STREAM:]POLICY Whether to emit color codes in output, optionally prefixed by the STREAM (stdout or stderr) to apply the setting to. Can be one of "always", "auto" (default), "never", or "no_color" (use non color terminal sequences). Use "auto-tty" or "no_color-tty" to decide based on terminal support only. Can be used multiple times --compat-options OPTS Options that can help keep compatibility with youtube-dl or youtube-dlc configurations by reverting some of the changes made in yt-dlp. See "Differences in default behavior" for details --alias ALIASES OPTIONS Create aliases for an option string. Unless an alias starts with a dash "-", it is prefixed with "--". Arguments are parsed according to the Python string formatting mini-language. E.g. --alias get-audio,-X "-S=aext:{0},abr -x --audio-format {0}" creates options "--get-audio" and "-X" that takes an argument (ARG0) and expands to "-S=aext:ARG0,abr -x --audio-format ARG0". All defined aliases are listed in the --help output. Alias options can trigger more aliases; so be careful to avoid defining recursive options. As a safety measure, each alias may be triggered a maximum of 100 times. This option can be used multiple times
--proxy URL Use the specified HTTP/HTTPS/SOCKS proxy. To enable SOCKS proxy, specify a proper scheme, e.g. socks5://user:[email protected]:1080/. Pass in an empty string (--proxy "") for direct connection --socket-timeout SECONDS Time to wait before giving up, in seconds --source-address IP Client-side IP address to bind to --impersonate CLIENT[:OS] Client to impersonate for requests. E.g. chrome, chrome-110, chrome:windows-10. Pass --impersonate="" to impersonate any client. Note that forcing impersonation for all requests may have a detrimental impact on download speed and stability --list-impersonate-targets List available clients to impersonate. -4, --force-ipv4 Make all connections via IPv4 -6, --force-ipv6 Make all connections via IPv6 --enable-file-urls Enable file:// URLs. This is disabled by default for security reasons.
--geo-verification-proxy URL Use this proxy to verify the IP address for some geo-restricted sites. The default proxy specified by --proxy (or none, if the option is not present) is used for the actual downloading --xff VALUE How to fake X-Forwarded-For HTTP header to try bypassing geographic restriction. One of "default" (only when known to be useful), "never", an IP block in CIDR notation, or a two-letter ISO 3166-2 country code
-I, --playlist-items ITEM_SPEC Comma separated playlist_index of the items to download. You can specify a range using "[START]:[STOP][:STEP]". For backward compatibility, START-STOP is also supported. Use negative indices to count from the right and negative STEP to download in reverse order. E.g. "-I 1:3,7,-5::2" used on a playlist of size 15 will download the items at index 1,2,3,7,11,13,15 --min-filesize SIZE Abort download if filesize is smaller than SIZE, e.g. 50k or 44.6M --max-filesize SIZE Abort download if filesize is larger than SIZE, e.g. 50k or 44.6M --date DATE Download only videos uploaded on this date. The date can be "YYYYMMDD" or in the format [now|today|yesterday][-N[day|week|month|year]]. E.g. "--date today-2weeks" downloads only videos uploaded on the same day two weeks ago --datebefore DATE Download only videos uploaded on or before this date. The date formats accepted are the same as --date --dateafter DATE Download only videos uploaded on or after this date. The date formats accepted are the same as --date --match-filters FILTER Generic video filter. Any "OUTPUT TEMPLATE" field can be compared with a number or a string using the operators defined in "Filtering Formats". You can also simply specify a field to match if the field is present, use "!field" to check if the field is not present, and "&" to check multiple conditions. Use a "" to escape "&" or quotes if needed. If used multiple times, the filter matches if at least one of the conditions is met. E.g. --match-filters !is_live --match-filters "like_count>?100 & description~='(?i)bcats & dogsb'" matches only videos that are not live OR those that have a like count more than 100 (or the like field is not available) and also has a description that contains the phrase "cats & dogs" (caseless). Use "--match-filters -" to interactively ask whether to download each video --no-match-filters Do not use any --match-filters (default) --break-match-filters FILTER Same as "--match-filters" but stops the download process when a video is rejected --no-break-match-filters Do not use any --break-match-filters (default) --no-playlist Download only the video, if the URL refers to a video and a playlist --yes-playlist Download the playlist, if the URL refers to a video and a playlist --age-limit YEARS Download only videos suitable for the given age --download-archive FILE Download only videos not listed in the archive file. Record the IDs of all downloaded videos in it --no-download-archive Do not use archive file (default) --max-downloads NUMBER Abort after downloading NUMBER files --break-on-existing Stop the download process when encountering a file that is in the archive --no-break-on-existing Do not stop the download process when encountering a file that is in the archive (default) --break-per-input Alters --max-downloads, --break-on-existing, --break-match-filters, and autonumber to reset per input URL --no-break-per-input --break-on-existing and similar options terminates the entire download queue --skip-playlist-after-errors N Number of allowed failures until the rest of the playlist is skipped
-N, --concurrent-fragments N Number of fragments of a dash/hlsnative video that should be downloaded concurrently (default is 1) -r,&n