RepoTrending
Về bảng xếp hạng
GitHubTrợ lý lập trìnhPython

yt-dlp/yt-dlp

Trình tải xuống âm thanh/video dòng lệnh giàu tính năng

187k sao16k fork

README

YT-DLP

Release version Python Version PyPI Discord License: Unlicense Commits

yt-dlp là trình tải xuống âm thanh/video dòng lệnh giàu tính năng với sự hỗ trợ cho hàng ngàn trang web. Dự án là một nhánh của youtube-dl dựa trên hiện không hoạt động youtube-dlc.

LẮP ĐẶT

Windows Unix MacOS PyPI Source Tarball Other variants All versions

Bạn có thể cài đặt yt-dlp bằng cách sử dụng các nhị phân, pip hoặc một cái sử dụng trình quản lý gói của bên thứ ba. Xem wiki để được hướng dẫn chi tiết

PHÁT HÀNH TẬP TIN

Được đề xuất

tập tin Mô tả
yt-dlp Nền tảng độc lập nhập khẩu zip nhị phân. Cần Python (được khuyến nghị cho Linux/BSD)
yt-dlp.exe Windows (Win8+) nhị phân x64 độc lập (được khuyến nghị cho cửa sổ)
yt-dlp_macos Thực thi độc lập Universal MacOS (10.15+) (được khuyến nghị cho MacOS)

Lựa chọn thay thế

tập tin Mô tả
yt-dlp_linux Linux (glibc 2.17+) nhị phân x86_64 độc lập
yt-dlp_linux.zip Linux chưa được đóng gói (glibc 2.17+) có thể thực thi x86_64 (không tự động cập nhật)
yt-dlp_linux_aarch64 Linux (glibc 2.17+) nhị phân aarch64 độc lập
yt-dlp_linux_aarch64.zip Linux chưa được đóng gói (glibc 2.17+) có thể thực thi aarch64 (không tự động cập nhật)
yt-dlp_linux_armv7l.zip Linux chưa được đóng gói (glibc 2.31+) có thể thực thi armv7l (không tự động cập nhật)
yt-dlp_musllinux Linux (musl 1.2+) nhị phân x86_64 độc lập
yt-dlp_musllinux.zip Linux chưa được đóng gói (musl 1.2+) có thể thực thi x86_64 (không tự động cập nhật)
yt-dlp_musllinux_aarch64 Linux (musl 1.2+) nhị phân aarch64 độc lập
yt-dlp_musllinux_aarch64.zip Linux chưa được đóng gói (musl 1.2+) có thể thực thi aarch64 (không tự động cập nhật)
yt-dlp_x86.exe Hệ nhị phân x86 (32-bit) độc lập của Windows (Win8+)
yt-dlp_win_x86.zip Windows (Win8+) x86 (32-bit) chưa được đóng gói (không tự động cập nhật)
yt-dlp_arm64.exe Hệ nhị phân ARM64 độc lập của Windows (Win10+)
yt-dlp_win_arm64.zip Windows (Win10+) chưa được đóng gói có thể thực thi ARM64 (không tự động cập nhật)
yt-dlp_win.zip Windows (Win8+) chưa được đóng gói có thể thực thi x64 (không tự động cập nhật)
yt-dlp_macos.zip Có thể thực thi MacOS (10.15+) chưa được đóng gói (không tự động cập nhật)

linh tinh

tập tin Mô tả
yt-dlp.tar.gz tarball nguồn
SHA2-512SUMS Tổng SHA512 kiểu GNU
SHA2-512SUMS.sig Tệp chữ ký GPG cho số tiền SHA512
SHA2-256SUMS Tổng SHA256 kiểu GNU
SHA2-256SUMS.sig Tệp chữ ký GPG cho số tiền SHA256

Khóa công khai có thể được sử dụng để xác minh chữ ký GPG là có sẵn ở đây Cách sử dụng ví dụ:

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

Cấp phép

Mặc dù yt-dlp được cấp phép theo Không có giấy phép, nhiều tệp phát hành chứa mã từ các dự án khác có giấy phép khác.

Đáng chú ý nhất là các tệp thực thi đi kèm PyInstaller bao gồm mã được cấp phép GPLv3+ và do đó tác phẩm kết hợp được cấp phép theo GPLv3+.

Tệp thực thi Unix zipimport (yt-dlp) và giải phóng tarball (yt-dlp.tar.gz) chứa ISC mã được cấp phép từ meriyahMIT mã được cấp phép từ astring.

Xem THIRD_PARTY_LICENSES.txt để biết thêm chi tiết.

Kho lưu trữ git, bản phân phối nguồn PyPI và bản phân phối (bánh xe) được xây dựng PyPI chỉ chứa mã được cấp phép theo Không có giấy phép.

Lưu ý: Các trang hướng dẫn, các tập tin hoàn thiện shell (tự động hoàn thành), v.v. đều có sẵn bên trong tarball nguồn

CẬP NHẬT

Bạn có thể sử dụng yt-dlp -U để cập nhật nếu bạn đang sử dụng phát hành nhị phân

Nếu bạn được cài đặt với pip, chỉ cần chạy lại lệnh tương tự đã được sử dụng để cài đặt chương trình

Đối với các trình quản lý gói bên thứ ba khác, hãy xem wiki hoặc tham khảo tài liệu của họ

Hiện tại có ba kênh phát hành cho các tệp nhị phân: stable, nightlymaster.

  • stable là kênh mặc định cung cấp các bản phát hành được xuất bản theo lịch trình (hầu hết) hàng tháng. Trong khi nó được đặt tên stable do nhiều thay đổi của nó đã được người dùng thử nghiệm nightly hoặc master kênh phát hành, mới nhất stable bản phát hành thường "cũ" và dễ bị hỏng bên ngoài (tức là các trang web thay đổi mọi thứ ở phần cuối và phá vỡ yt-dlp).
  • các nightly kênh cung cấp các bản phát hành xuất bản ngay trước nửa đêm UTC vào bất kỳ ngày nào có thay đổi đối với cơ sở mã. Kênh này đóng vai trò như một bức ảnh chụp nhanh về quá trình phát triển của dự án và nó là kênh kênh được đề xuất cho người dùng thường xuyên của yt-dlp. các nightly bản phát hành có sẵn từ yt-dlp/yt-dlp-nightly-build hoặc dưới dạng bản phát hành phát triển của yt-dlp Gói PyPI (có thể được cài đặt bằng pip's --pre cờ).
  • các master kênh cung cấp các bản phát hành "canary" xuất bản sau mỗi lần đẩy lên nhánh chính. Kênh này sẽ luôn cung cấp các bản sửa lỗi và tính năng mới nhất nhưng có thể dễ bị lỗi hoặc bị lỗi. các master bản phát hành có sẵn từ yt-dlp/yt-dlp-master-build.

Khi sử dụng --update/-U, tệp nhị phân phát hành sẽ chỉ cập nhật lên kênh hiện tại của nó. --update-to CHANNEL có thể được sử dụng để chuyển sang kênh khác khi có phiên bản mới hơn. --update-to [CHANNEL@]TAG cũng có thể được sử dụng để nâng cấp hoặc hạ cấp các thẻ cụ thể từ một kênh.

Bạn cũng có thể sử dụng --update-to <repository> (<owner>/<repository>) để cập nhật lên kênh trên một kho lưu trữ hoàn toàn khác. Tuy nhiên, hãy cẩn thận với kho lưu trữ mà bạn đang cập nhật, không có xác minh nào được thực hiện đối với các tệp nhị phân từ các kho lưu trữ khác nhau.

Cách sử dụng ví dụ:

  • yt-dlp --update-to master chuyển sang master kênh và cập nhật lên bản phát hành mới nhất
  • yt-dlp --update-to [email protected] nâng cấp/hạ cấp để phát hành lên stable thẻ kênh 2023.07.06
  • yt-dlp --update-to 2023.10.07 nâng cấp/hạ cấp xuống thẻ 2023.10.07 nếu nó tồn tại trên kênh hiện tại
  • yt-dlp --update-to example/[email protected] nâng cấp/hạ cấp xuống bản phát hành từ example/yt-dlp kho lưu trữ, thẻ 2023.09.24

Quan trọng: Bất kỳ người dùng nào gặp sự cố với stable bản phát hành nên cài đặt hoặc cập nhật lên nightly phát hành trước khi gửi báo cáo lỗi:

# To update to nightly from stable executable/binary:
yt-dlp --update-to nightly

# To install nightly with pip:
python -m pip install -U --pre "yt-dlp[default]"

Khi chạy phiên bản yt-dlp cũ hơn 90 ngày, bạn sẽ thấy thông báo cảnh báo đề xuất cập nhật lên phiên bản mới nhất. Bạn có thể chặn cảnh báo này bằng cách thêm --no-update vào lệnh hoặc tập tin cấu hình của bạn.

PHỤ THUỘC

Python phiên bản 3.10+ (CPython) và 3.11+ (PyPy) được hỗ trợ. Các phiên bản và cách triển khai khác có thể hoạt động chính xác hoặc không.

Mặc dù tất cả các phần phụ thuộc khác đều là tùy chọn, ffmpeg, ffprobe, yt-dlp-ejs và rất khuyến khích sử dụng thời gian chạy/công cụ JavaScript được hỗ trợ

Rất khuyến khích

Mạng

mạo danh

Phần sau đây cung cấp hỗ trợ cho việc mạo danh các yêu cầu trình duyệt. Điều này có thể được yêu cầu đối với một số trang web sử dụng dấu vân tay TLS.

  • xoăn_cffi (được khuyến nghị) - ràng buộc Python cho giả mạo. Cung cấp các mục tiêu mạo danh cho Chrome, Edge và Safari. Được cấp phép theo MIT
    • Có thể được cài đặt với curl-cffi thêm, ví dụ: pip install "yt-dlp[default,curl-cffi]"
    • Hiện được bao gồm trong hầu hết các bản dựng ngoại trừ yt-dlp (nhị phân nhập zip Unix) và yt-dlp_x86 (Windows 32-bit)

Siêu dữ liệu

linh tinh

  • pycryptodomex* - Để giải mã các luồng AES-128 HLS và nhiều dữ liệu khác. Được cấp phép theo Điều khoản BSD-2
  • ph Phantomjs - Được sử dụng trong một số trình trích xuất cần chạy JavaScript. Không còn được sử dụng cho YouTube. Sẽ không được dùng nữa trong tương lai gần. Được cấp phép theo Điều khoản BSD-3
  • kho bí mật* - Đối với --cookies-from-browser để truy cập thần lùn khóa trong khi giải mã cookie của cromtrình duyệt dựa trên Linux. Được cấp phép theo Điều khoản BSD-3
  • Bất kỳ trình tải xuống bên ngoài nào mà bạn muốn sử dụng --downloader

Không được dùng nữa

  • rtmpdump - Để tải xuống rtmp suối. ffmpeg có thể được sử dụng thay thế bằng --downloader ffmpeg. Được cấp phép theo GPLv2+

Để sử dụng hoặc phân phối lại các phần phụ thuộc, bạn phải đồng ý với các điều khoản cấp phép tương ứng của chúng.

Các tệp nhị phân phát hành độc lập được xây dựng bằng trình thông dịch Python và các gói được đánh dấu bằng * bao gồm.

Nếu bạn không có các yếu tố phụ thuộc cần thiết cho tác vụ bạn đang thực hiện, yt-dlp sẽ cảnh báo bạn. Tất cả các phụ thuộc hiện có sẵn đều hiển thị ở đầu --verbose đầu ra

BIÊN BẢN

Bản dựng PyInstaller độc lập

Để xây dựng tệp thực thi độc lập, bạn phải có Python và pyinstaller (cộng với bất kỳ yt-dlp nào phụ thuộc tùy chọn nếu cần). Tệp thực thi sẽ được xây dựng cho cùng kiến ​​trúc CPU như Python được sử dụng.

Bạn có thể chạy các lệnh sau:

python devscripts/install_deps.py --include-group pyinstaller
python devscripts/make_lazy_extractors.py
python -m bundle.pyinstaller

Trên một số hệ thống, bạn có thể cần sử dụng py hoặc python3 thay vì python.

python -m bundle.pyinstaller chấp nhận bất kỳ đối số nào có thể được chuyển đến pyinstaller, chẳng hạn như --onefile/-F hoặc --onedir/-D, xa hơn nữa tài liệu ở đây.

Lưu ý: Phiên bản Pyinstaller dưới 4.4 không hỗ trợ Python được cài đặt từ cửa hàng Windows mà không sử dụng môi trường ảo.

Quan trọng: Đang chạy pyinstaller trực tiếp thay vì sử dụng python -m bundle.pyinstallerkhông được hỗ trợ chính thức. Điều này có thể hoạt động chính xác hoặc không.

Nhị phân độc lập với nền tảng (UNIX)

Bạn sẽ cần các công cụ xây dựng python (3.10+), zip, make (GNU), pandoc* và pytest*.

Sau khi cài đặt những thứ này, chỉ cần chạy make.

Bạn cũng có thể chạy make yt-dlp thay vào đó chỉ biên dịch tệp nhị phân mà không cập nhật bất kỳ tệp bổ sung nào. (Các công cụ xây dựng được đánh dấu bằng * không cần thiết cho việc này)

Tập lệnh liên quan

  • devscripts/install_deps.py - Cài đặt phụ thuộc cho yt-dlp.
  • devscripts/update-version.py - Cập nhật số phiên bản dựa trên ngày hiện tại.
  • devscripts/set-variant.py - Đặt biến thể xây dựng của tệp thực thi.
  • devscripts/make_changelog.py - Tạo nhật ký thay đổi đánh dấu bằng cách sử dụng các thông báo và cập nhật cam kết ngắn CONTRIBUTORS tập tin.
  • devscripts/make_lazy_extractors.py - Tạo trình giải nén lười biếng. Chạy cái này trước khi xây dựng các tệp nhị phân (bất kỳ biến thể nào) sẽ cải thiện hiệu suất khởi động của chúng. Đặt biến môi trường YTDLP_NO_LAZY_EXTRACTORS đến một cái gì đó không trống để vô hiệu hóa mạnh mẽ quá trình tải trình giải nén lười biếng.

Lưu ý: Xem của họ --help để biết thêm thông tin.

Ngã ba dự án

Nếu bạn phân nhánh dự án trên GitHub, bạn có thể chạy phân nhánh của mình xây dựng quy trình làm việc để tự động xây dựng (các) phiên bản đã chọn làm tạo phẩm. Ngoài ra, bạn có thể chạy quy trình phát hành hoặc kích hoạt quy trình làm việc hàng đêm để tạo các bản phát hành đầy đủ (trước).

SỬ DỤNG VÀ LỰA CHỌN

yt-dlp [OPTIONS] [--] URL [URL...]

Mẹo: Sử dụng CTRL+F (hoặc Command+F) để tìm kiếm theo từ khóa

Tùy chọn chung:

-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)
--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 DIR               Path to an additional directory to search
                                for plugins. This option can be used
                                multiple times to add multiple directories.
                                Use "default" to search the default plugin
                                directories (default)
--no-plugin-dirs                Clear plugin directories to search,
                                including defaults and those provided by
                                previous --plugin-dirs
--js-runtimes RUNTIME[:PATH]    Additional JavaScript runtime to enable,
                                with an optional location for the runtime
                                (either the path to the binary or its
                                containing directory). This option can be
                                used multiple times to enable multiple
                                runtimes. Supported runtimes are (in order
                                of priority, from highest to lowest): deno,
                                node, quickjs, bun. Only "deno" is enabled
                                by default. The highest priority runtime
                                that is both enabled and available will be
                                used. In order to use a lower priority
                                runtime when "deno" is available, --no-js-
                                runtimes needs to be passed before enabling
                                other runtimes
--no-js-runtimes                Clear JavaScript runtimes to enable,
                                including defaults and those provided by
                                previous --js-runtimes
--remote-components COMPONENT   Remote components to allow yt-dlp to fetch
                                when required. This option is currently not
                                needed if you are using an official
                                executable or have the requisite version of
                                the yt-dlp-ejs package installed. You can
                                use this option multiple times to allow
                                multiple components. Supported values:
                                ejs:npm (external JavaScript components from
                                npm), ejs:github (external JavaScript
                                components from yt-dlp-ejs GitHub). By
                                default, no remote components are allowed
--no-remote-components          Disallow fetching of all remote components,
                                including any previously allowed by
                                --remote-components or defaults.
--flat-playlist                 Do not extract a playlist's URL result
                                entries; some entry metadata may be missing
                                and downloading may be bypassed
--no-flat-playlist              Fully extract the videos of a playlist
                                (default)
--live-from-start               Download livestreams from the start.
                                Currently experimental and only supported
                                for YouTube, Twitch, TVer, and mellow-fan
--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
-t, --preset-alias PRESET       Applies a predefined set of options. e.g.
                                --preset-alias mp3. The following presets
                                are available: mp3, aac, mp4, mkv, sleep.
                                See the "Preset Aliases" section at the end
                                for more info. This option can be used
                                multiple times

Tùy chọn mạng:

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

Giới hạn địa lý:

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

Lựa chọn Video:

-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 \& dogs\b'" 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 supplied with
                                the --download-archive option
--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

Tùy chọn tải xuống:

-N, --concurrent-fragments N    Number of fragments of a dash/hlsnative
                                video that should be downloaded concurrently
                                (default is 1)
-r, --limit-rate RATE           Maximum download rate in bytes per second,
                                e.g. 50K or 4.2M
--throttled-rate RATE           Minimum download rate in bytes per second
                                below which throttling is assumed and the
                                video data is re-extracted, e.g. 100K
-R, --retries RETRIES           Number of retries (default is 10), or
                                "infinite"
--file-access-retries RETRIES   Number of times to retry on file access
                                error (default is 3), or "infinite"
--fragment-retries RETRIES      Number of retries for a fragment (default is
                                10), or "infinite" (DASH, hlsnative and ISM)
--retry-sleep [TYPE:]EXPR       Time to sleep between retries in seconds
                                (optionally) prefixed by the type of retry
                                (http (default), fragment, file_access,
                                extractor) to apply the sleep to. EXPR can
                                be a number, linear=START[:END[:STEP=1]] or
                                exp=START[:END[:BASE=2]]. This option can be
                                used multiple times to set the sleep for the
                                different retry types, e.g. --retry-sleep
                                linear=1::2 --retry-sleep fragment:exp=1:20
--skip-unavailable-fragments    Skip unavailable fragments for DASH,
                                hlsnative and ISM downloads (default)
                                (Alias: --no-abort-on-unavailable-fragments)
--abort-on-unavailable-fragments
                                Abort download if a fragment is unavailable
                                (Alias: --no-skip-unavailable-fragments)
--keep-fragments                Keep downloaded fragments on disk after
                                downloading is finished
--no-keep-fragments             Delete downloaded fragments after
                                downloading is finished (default)
--buffer-size SIZE              Size of download buffer, e.g. 1024 or 16K
                                (default is 1024)
--resize-buffer                 The buffer size is automatically resized
                                from an initial value of --buffer-size
                                (default)
--no-resize-buffer              Do not automatically adjust the buffer size
--http-chunk-size SIZE          Size of a chunk for chunk-based HTTP
                                downloading, e.g. 10485760 or 10M (default
                                is disabled). May be useful for bypassing
                                bandwidth throttling imposed by a webserver
                                (experimental)
--playlist-random               Download playlist videos in random order
--lazy-playlist                 Process entries in the playlist as they are
                                received. This disables n_entries,
                                --playlist-random and --playlist-reverse
--no-lazy-playlist              Process videos in the playlist only after
                                the entire playlist is parsed (default)
--hls-use-mpegts                Use the mpegts container for HLS videos;
                                allowing some players to play the video
                                while downloading, and reducing the chance
                                of file corruption if download is
                                interrupted. This is enabled by default for
                                live streams
--no-hls-use-mpegts             Do not use the mpegts container for HLS
                                videos. This is default when not downloading
                                live streams
--download-sections REGEX       Download only chapters that match the
                                regular expression. A "*" prefix denotes
                                time-range instead of chapter. Negative
                                timestamps are calculated from the end.
                                "*from-url" can be used to download between
                                the "start_time" and "end_time" extracted
                                from the URL. Needs ffmpeg. This option can
                                be used multiple times to download multiple
                                sections, e.g. --download-sections
                                "*10:15-inf" --download-sections "intro"
--downloader [PROTO:]NAME       Name or path of the external downloader to
                                use (optionally) prefixed by the protocols
                                (http, ftp, m3u8, dash, rtmp) to use it for.
                                Currently supports native, aria2c, axel,
                                curl, ffmpeg, httpie, wget. You can use this
                                option multiple times to set different
                                downloaders for different protocols. E.g.
                                --downloader aria2c --downloader
                                "dash,m3u8:native" will use aria2c for
                                http/ftp downloads, and the native
                                downloader for dash/m3u8 downloads (Alias:
                                --external-downloader)
--downloader-args NAME:ARGS     Give these arguments to the external
                                downloader. Specify the downloader name and
                                the arguments separated by a colon ":". For
                                ffmpeg, arguments can be passed to different
                                positions using the same syntax as
                                --postprocessor-args. You can use this
                                option multiple times to give different
                                arguments to different downloaders (Alias:
                                --external-downloader-args)

Tùy chọn hệ thống tập tin:

-a, --batch-file FILE           File containing URLs to download ("-" for
                                stdin), one URL per line. Lines starting
                                with "#", ";" or "]" are considered as
                                comments and ignored
--no-batch-file                 Do not read URLs from batch file (default)
-P, --paths [TYPES:]PATH        The paths where the files should be
                                downloaded. Specify the type of file and the
                                path separated by a colon ":". All the same
                                TYPES as --output are supported.
                                Additionally, you can also provide "home"
                                (default) and "temp" paths. All intermediary
                                files are first downloaded to the temp path
                                and then the final files are moved over to
                                the home path after download is finished.
                                This option is ignored if --output is an
                                absolute path
-o, --output [TYPES:]TEMPLATE   Output filename template; see "OUTPUT
                                TEMPLATE" for details
--output-na-placeholder TEXT    Placeholder for unavailable fields in
                                --output (default: "NA")
--restrict-filenames            Restrict filenames to only ASCII characters,
                                and avoid "&" and spaces in filenames
--no-restrict-filenames         Allow Unicode characters, "&" and spaces in
                                filenames (default)
--windows-filenames             Force filenames to be Windows-compatible
--no-windows-filenames          Sanitize filenames only minimally
--trim-filenames LENGTH         Limit the filename length (excluding
                                extension) to the specified number of
                                characters
-w, --no-overwrites             Do not overwrite any files
--force-overwrites              Overwrite all video and metadata files. This
                                option includes --no-continue
--no-force-overwrites           Do not overwrite the video, but overwrite
                                related files (default)
-c, --continue                  Resume partially downloaded files/fragments
                                (default)
--no-continue                   Do not resume partially downloaded
                                fragments. If the file is not fragmented,
                                restart download of the entire file
--part                          Use .part files instead of writing directly
                                into output file (default)
--no-part                       Do not use .part files - write directly into
                                output file
--mtime                         Use the Last-modified header to set the file
                                modification time
--no-mtime                      Do not use the Last-modified header to set
                                the file modification time (default)
--write-description             Write video description to a .description file
--no-write-description          Do not write video description (default)
--write-info-json               Write video metadata to a .info.json file
                                (this may contain personal information)
--no-write-info-json            Do not write video metadata (default)
--write-playlist-metafiles      Write playlist metadata in addition to the
                                video metadata when using --write-info-json,
                                --write-description etc. (default)
--no-write-playlist-metafiles   Do not write playlist metadata when using
                                --write-info-json, --write-description etc.
--clean-info-json               Remove some internal metadata such as
                                filenames from the infojson (default)
--no-clean-info-json            Write all fields to the infojson
--write-comments                Retrieve video comments to be placed in the
                                infojson. The comments are fetched even
                                without this option if the extraction is
                                known to be quick (Alias: --get-comments)
--no-write-comments             Do not retrieve video comments unless the
                                extraction is known to be quick (Alias:
                                --no-get-comments)
--load-info-json FILE           JSON file containing the video information
                                (created with the "--write-info-json" option)
--cookies FILE                  Netscape formatted file to read cookies from
                                and dump cookie jar in
--no-cookies                    Do not read/dump cookies from/to file
                                (default)
--cookies-from-browser BROWSER[+KEYRING][:PROFILE][::CONTAINER]
                                The name of the browser to load cookies
                                from. Currently supported browsers are:
                                brave, chrome, chromium, edge, firefox,
                                opera, safari, vivaldi, whale. Optionally,
                                the KEYRING used for decrypting Chromium
                                cookies on Linux, the name/path of the
                                PROFILE to load cookies from, and the
                                CONTAINER name (if Firefox) ("none" for no
                                container) can be given with their
                                respective separators. By default, all
                                containers of the most recently accessed
                                profile are used. Currently supported
                                keyrings are: basictext, gnomekeyring,
                                kwallet, kwallet5, kwallet6
--no-cookies-from-browser       Do not load cookies from browser (default)
--cache-dir DIR                 Location in the filesystem where yt-dlp can
                                store some downloaded information (such as
                                client ids and signatures) permanently. By
                                default ${XDG_CACHE_HOME}/yt-dlp
--no-cache-dir                  Disable filesystem caching
--rm-cache-dir                  Delete all filesystem cache files

Tùy chọn hình thu nhỏ:

--write-thumbnail               Write thumbnail image to disk
--no-write-thumbnail            Do not write thumbnail image to disk (default)
--write-all-thumbnails          Write all thumbnail image formats to disk
--list-thumbnails               List available thumbnails of each video.
                                Simulate unless --no-simulate is used

Tùy chọn lối tắt Internet:

--write-link                    Write an internet shortcut file, depending
                                on the current platform (.url, .webloc or
                                .desktop). The URL may be cached by the OS
--write-url-link                Write a .url Windows internet shortcut. The
                                OS caches the URL based on the file path
--write-webloc-link             Write a .webloc macOS internet shortcut
--write-desktop-link            Write a .desktop Linux internet shortcut

Tùy chọn chi tiết và mô phỏng:

-q, --quiet                     Activate quiet mode. If used with --verbose,
                                print the log to stderr
--no-quiet                      Deactivate quiet mode. (Default)
--no-warnings                   Ignore warnings
-s, --simulate                  Do not download the video and do not write
                                anything to disk
--no-simulate                   Download the video even if printing/listing
                                options are used
--ignore-no-formats-error       Ignore "No video formats" error. Useful for
                                extracting metadata even if the videos are
                                not actually available for download
                                (experimental)
--no-ignore-no-formats-error    Throw error when no downloadable video
                                formats are found (default)
--skip-download                 Do not download the video but write all
                                related files (Alias: --no-download)
-O, --print [WHEN:]TEMPLATE     Field name or output template to print to
                                screen, optionally prefixed with when to
                                print it, separated by a ":". Supported
                                values of "WHEN" are the same as that of
                                --use-postprocessor (default: video).
                                Implies --quiet. Implies --simulate unless
                                --no-simulate or later stages of WHEN are
                                used. This option can be used multiple times
--print-to-file [WHEN:]TEMPLATE FILE
                                Append given template to the file. The
                                values of WHEN and TEMPLATE are the same as
                                that of --print. FILE uses the same syntax
                                as the output template. This option can be
                                used multiple times
-j, --dump-json                 Quiet, but print JSON information for each
                                video. Simulate unless --no-simulate is
                                used. See "OUTPUT TEMPLATE" for a
                                description of available keys
-J, --dump-single-json          Quiet, but print JSON information for each
                                URL or infojson passed. Simulate unless
                                --no-simulate is used. If the URL refers to
                                a playlist, the whole playlist information
                                is dumped in a single line
--force-write-archive           Force download archive entries to be written
                                as far as no errors occur, even if -s or
                                another simulation option is used (Alias:
                                --force-download-archive)
--newline                       Output progress bar as new lines
--no-progress                   Do not print progress bar
--progress                      Show progress bar, even if in quiet mode
--console-title                 Display progress in console titlebar
--progress-template [TYPES:]TEMPLATE
                                Template for progress outputs, optionally
                                prefixed with one of "download:" (default),
                                "download-title:" (the console title),
                                "postprocess:",  or "postprocess-title:".
                                The video's fields are accessible under the
                                "info" key and the progress attributes are
                                accessible under "progress" key. E.g.
                                --console-title --progress-template
                                "download-title:%(info.id)s-%(progress.eta)s"
--progress-delta SECONDS        Time between progress output (default: 0)
-v, --verbose                   Print various debugging information
--dump-pages                    Print downloaded pages encoded using base64
                                to debug problems (very verbose)
--write-pages                   Write downloaded intermediary pages to files
                                in the current directory to debug problems
--print-traffic                 Display sent and read HTTP traffic

Cách giải quyết:

--encoding ENCODING             Force the specified encoding (experimental)
--legacy-server-connect         Explicitly allow HTTPS connection to servers
                                that do not support RFC 5746 secure
                                renegotiation
--no-check-certificates         Suppress HTTPS certificate validation
--prefer-insecure               Use an unencrypted connection to retrieve
                                information about the video
--add-headers FIELD:VALUE       Specify a custom HTTP header and its value,
                                separated by a colon ":". You can use this
                                option multiple times
--bidi-workaround               Work around terminals that lack
                                bidirectional text support. Requires bidiv
                                or fribidi executable in PATH
--sleep-requests SECONDS        Number of seconds to sleep between requests
                                during data extraction
--sleep-interval SECONDS        Number of seconds to sleep before each
                                download. This is the minimum time to sleep
                                when used along with --max-sleep-interval
                                (Alias: --min-sleep-interval)
--max-sleep-interval SECONDS    Maximum number of seconds to sleep. Can only
                                be used along with --min-sleep-interval
--sleep-subtitles SECONDS       Number of seconds to sleep before each
                                subtitle download

Tùy chọn định dạng video:

-f, --format FORMAT             Video format code, see "FORMAT SELECTION"
                                for more details
-S, --format-sort SORTORDER     Sort the formats by the fields given, see
                                "Sorting Formats" for more details
--format-sort-reset             Disregard previous user specified sort order
                                and reset to the default
--format-sort-force             Force user specified sort order to have
                                precedence over all fields, see "Sorting
                                Formats" for more details (Alias: --S-force)
--no-format-sort-force          Some fields have precedence over the user
                                specified sort order (default)
--video-multistreams            Allow multiple video streams to be merged
                                into a single file
--no-video-multistreams         Only one video stream is downloaded for each
                                output file (default)
--audio-multistreams            Allow multiple audio streams to be merged
                                into a single file
--no-audio-multistreams         Only one audio stream is downloaded for each
                                output file (default)
--prefer-free-formats           Prefer video formats with free containers
                                over non-free ones of the same quality. Use
                                with "-S ext" to strictly prefer free
                                containers irrespective of quality
--no-prefer-free-formats        Don't give any special preference to free
                                containers (default)
--check-formats                 Make sure formats are selected only from
                                those that are actually downloadable
--check-all-formats             Check all formats for whether they are
                                actually downloadable
--no-check-formats              Do not check that the formats are actually
                                downloadable
-F, --list-formats              List available formats of each video.
                                Simulate unless --no-simulate is used
--merge-output-format FORMAT    Containers that may be used when merging
                                formats, separated by "/", e.g. "mp4/mkv".
                                Ignored if no merge is required. (currently
                                supported: avi, flv, mkv, mov, mp4, webm)

Tùy chọn phụ đề:

--write-subs                    Write subtitle file
--no-write-subs                 Do not write subtitle file (default)
--write-auto-subs               Write automatically generated subtitle file
                                (Alias: --write-automatic-subs)
--no-write-auto-subs            Do not write auto-generated subtitles
                                (default) (Alias: --no-write-automatic-subs)
--list-subs                     List available subtitles of each video.
                                Simulate unless --no-simulate is used
--sub-format FORMAT             Subtitle format; accepts formats preference
                                separated by "/", e.g. "srt" or "ass/srt/best"
--sub-langs LANGS               Languages of the subtitles to download (can
                                be regex) or "all" separated by commas, e.g.
                                --sub-langs "en.*,ja" (where "en.*" is a
                                regex pattern that matches "en" followed by
                                0 or more of any character). You can prefix
                                the language code with a "-" to exclude it
                                from the requested languages, e.g. --sub-
                                langs all,-live_chat. Use --list-subs for a
                                list of available language tags

Tùy chọn xác thực:

-u, --username USERNAME         Login with this account ID
-p, --password PASSWORD         Account password. If this option is left
                                out, yt-dlp will ask interactively
-2, --twofactor TWOFACTOR       Two-factor authentication code
-n, --netrc                     Use .netrc authentication data
--netrc-location PATH           Location of .netrc authentication data;
                                either the path or its containing directory.
                                Defaults to ~/.netrc
--netrc-cmd NETRC_CMD           Command to execute to get the credentials
                                for an extractor.
--video-password PASSWORD       Video-specific password
--ap-mso MSO                    Adobe Pass multiple-system operator (TV
                                provider) identifier, use --ap-list-mso for
                                a list of available MSOs
--ap-username USERNAME          Multiple-system operator account login
--ap-password PASSWORD          Multiple-system operator account password.
                                If this option is left out, yt-dlp will ask
                                interactively
--ap-list-mso                   List all supported multiple-system operators
--client-certificate CERTFILE   Path to client certificate file in PEM
                                format. May include the private key
--client-certificate-key KEYFILE
                                Path to private key file for client
                                certificate
--client-certificate-password PASSWORD
                                Password for client certificate private key,
                                if encrypted. If not provided, and the key
                                is encrypted, yt-dlp will ask interactively

Tùy chọn xử lý sau:

-x, --extract-audio             Convert video files to audio-only files
                                (requires ffmpeg and ffprobe)
--audio-format FORMAT           Format to convert the audio to when -x is
                                used. (currently supported: best (default),
                                aac, alac, flac, m4a, mp3, opus, vorbis,
                                wav). You can specify multiple rules using
                                similar syntax as --remux-video
--audio-quality QUALITY         Specify ffmpeg audio quality to use when
                                converting the audio with -x. Insert a value
                                between 0 (best) and 10 (worst) for VBR or a
                                specific bitrate like 128K (default 5)
--remux-video FORMAT            Remux the video into another container if
                                necessary (currently supported: avi, flv,
                                gif, mkv, mov, mp4, webm, aac, aiff, alac,
                                flac, m4a, mka, mp3, ogg, opus, vorbis,
                                wav). If the target container does not
                                support the video/audio codec, remuxing will
                                fail. You can specify multiple rules; e.g.
                                "aac>m4a/mov>mp4/mkv" will remux aac to m4a,
                                mov to mp4 and anything else to mkv
--recode-video FORMAT           Re-encode the video into another format if
                                necessary. The syntax and supported formats
                                are the same as --remux-video
--postprocessor-args NAME:ARGS  Give these arguments to the postprocessors.
                                Specify the postprocessor/executable name
                                and the arguments separated by a colon ":"
                                to give the argument to the specified
                                postprocessor/executable. Supported PP are:
                                Merger, ModifyChapters, SplitChapters,
                                ExtractAudio, VideoRemuxer, VideoConvertor,
                                Metadata, EmbedSubtitle, EmbedThumbnail,
                                SubtitlesConvertor, ThumbnailsConvertor,
                                FixupStretched, FixupM4a, FixupM3u8,
                                FixupTimestamp and FixupDuration. The
                                supported executables are: AtomicParsley,
                                FFmpeg and FFprobe. You can also specify
                                "PP+EXE:ARGS" to give the arguments to the
                                specified executable only when being used by
                                the specified postprocessor. Additionally,
                                for ffmpeg/ffprobe, "_i"/"_o" can be
                                appended to the prefix optionally followed
                                by a number to pass the argument before the
                                specified input/output file, e.g. --ppa
                                "Merger+ffmpeg_i1:-v quiet". You can use
                                this option multiple times to give different
                                arguments to different postprocessors.
                                (Alias: --ppa)
-k, --keep-video                Keep the intermediate video file on disk
                                after post-processing
--no-keep-video                 Delete the intermediate video file after
                                post-processing (default)
--post-overwrites               Overwrite post-processed files (default)
--no-post-overwrites            Do not overwrite post-processed files
--embed-subs                    Embed subtitles in the video (only for mp4,
                                webm and mkv videos)
--no-embed-subs                 Do not embed subtitles (default)
--embed-thumbnail               Embed thumbnail in the video as cover art
--no-embed-thumbnail            Do not embed thumbnail (default)
--embed-metadata                Embed metadata to the video file. Also
                                embeds chapters/infojson if present unless
                                --no-embed-chapters/--no-embed-info-json are
                                used (Alias: --add-metadata)
--no-embed-metadata             Do not add metadata to file (default)
                                (Alias: --no-add-metadata)
--embed-chapters                Add chapter markers to the video file
                                (Alias: --add-chapters)
--no-embed-chapters             Do not add chapter markers (default) (Alias:
                                --no-add-chapters)
--embed-info-json               Embed the infojson as an attachment to
                                mkv/mka video files
--no-embed-info-json            Do not embed the infojson as an attachment
                                to the video file
--parse-metadata [WHEN:]FROM:TO
                                Parse additional metadata like title/artist
                                from other fields; see "MODIFYING METADATA"
                                for details. Supported values of "WHEN" are
                                the same as that of --use-postprocessor
                                (default: pre_process)
--replace-in-metadata [WHEN:]FIELDS REGEX REPLACE
                                Replace text in a metadata field using the
                                given regex. This option can be used
                                multiple times. Supported values of "WHEN"
                                are the same as that of --use-postprocessor
                                (default: pre_process)
--xattrs                        Write metadata to the video file's xattrs
                                (using Dublin Core and XDG standards)
--concat-playlist POLICY        Concatenate videos in a playlist. One of
                                "never", "always", or "multi_video"
                                (default; only when the videos form a single
                                show). All the video files must have the
                                same codecs and number of streams to be
                                concatenable. The "pl_video:" prefix can be
                                used with "--paths" and "--output" to set
                                the output filename for the concatenated
                                files. See "OUTPUT TEMPLATE" for details
--fixup POLICY                  Automatically correct known faults of the
                                file. One of never (do nothing), warn (only
                                emit a warning), detect_or_warn (the
                                default; fix the file if we can, warn
                                otherwise), force (try fixing even if the
                                file already exists)
--ffmpeg-location PATH          Location of the ffmpeg binary; either the
                                path to the binary or its containing directory
--exec [WHEN:]CMD               Execute a command, optionally prefixed with
                                when to execute it, separated by a ":".
                                Supported values of "WHEN" are the same as
                                that of --use-postprocessor (default:
                                after_move). The same syntax as the output
                                template can be used to pass any field as
                                arguments to the command; however, for
                                security reasons the only allowed
                                conversions are: "i"/"d" (signed integer
                                decimal), "f" (floating-point decimal) and
                                "q" (shell-quoted). If no fields are passed,
                                %(filepath,_filename|)q is appended to the
                                end of the command. This option can be used
                                multiple times
--no-exec                       Remove any previously defined --exec
--convert-subs FORMAT           Convert the subtitles to another format
                                (currently supported: ass, lrc, srt, vtt).
                                Use "--convert-subs none" to disable
                                conversion (default) (Alias: --convert-
                                subtitles)
--convert-thumbnails FORMAT     Convert the thumbnails to another format
                                (currently supported: jpg, png, webp). You
                                can specify multiple rules using similar
                                syntax as "--remux-video". Use "--convert-
                                thumbnails none" to disable conversion
                                (default)
--split-chapters                Split video into multiple files based on
                                internal chapters. The "chapter:" prefix can
                                be used with "--paths" and "--output" to set
                                the output filename for the split files. See
                                "OUTPUT TEMPLATE" for details
--no-split-chapters             Do not split video based on chapters (default)
--remove-chapters REGEX         Remove chapters whose title matches the
                                given regular expression. The syntax is the
                                same as --download-sections. This option can
                                be used multiple times
--no-remove-chapters            Do not remove any chapters from the file
                                (default)
--force-keyframes-at-cuts       Force keyframes at cuts when
                                downloading/splitting/removing sections.
                                This is slow due to needing a re-encode, but
                                the resulting video may have fewer artifacts
                                around the cuts
--no-force-keyframes-at-cuts    Do not force keyframes around the chapters
                                when cutting/splitting (default)
--use-postprocessor NAME[:ARGS]
                                The (case-sensitive) name of plugin
                                postprocessors to be enabled, and
                                (optionally) arguments to be passed to it,
                                separated by a colon ":". ARGS are a
                                semicolon ";" delimited list of NAME=VALUE.
                                The "when" argument determines when the
                                postprocessor is invoked. It can be one of
                                "pre_process" (after video extraction),
                                "after_filter" (after video passes filter),
                                "video" (after --format; before
                                --print/--output), "before_dl" (before each
                                video download), "post_process" (after each
                                video download; default), "after_move"
                                (after moving the video file to its final
                                location), "after_video" (after downloading
                                and processing all formats of a video), or
                                "playlist" (at end of playlist). This option
                                can be used multiple times to add different
                                postprocessors

Tùy chọn khối nhà tài trợ:

Tạo các mục chương hoặc xóa các phân đoạn khác nhau (tài trợ, giới thiệu, v.v.) khỏi video YouTube đã tải xuống bằng cách sử dụng Khối tài trợ API

--sponsorblock-mark CATS        SponsorBlock categories to create chapters
                                for, separated by commas. Available
                                categories are sponsor, intro, outro,
                                selfpromo, preview, filler, interaction,
                                music_offtopic, hook, poi_highlight,
                                chapter, all and default (=all). You can
                                prefix the category with a "-" to exclude
                                it. See [1] for descriptions of the
                                categories. E.g. --sponsorblock-mark
                                all,-preview
                                [1] https://wiki.sponsor.ajay.app/w/Segment_Categories
--sponsorblock-remove CATS      SponsorBlock categories to be removed from
                                the video file, separated by commas. If a
                                category is present in both mark and remove,
                                remove takes precedence. The syntax and
                                available categories are the same as for
                                --sponsorblock-mark except that "default"
                                refers to "all,-filler" and poi_highlight,
                                chapter are not available
--sponsorblock-chapter-title TEMPLATE
                                An output template for the title of the
                                SponsorBlock chapters created by
                                --sponsorblock-mark. The only available
                                fields are start_time, end_time, category,
                                categories, name, category_names. Defaults
                                to "[SponsorBlock]: %(category_names)l"
--no-sponsorblock               Disable both --sponsorblock-mark and
                                --sponsorblock-remove
--sponsorblock-api URL          SponsorBlock API location, defaults to
                                https://sponsor.ajay.app

Tùy chọn trình trích xuất:

--extractor-retries RETRIES     Number of retries for known extractor errors
                                (default is 3), or "infinite"
--allow-dynamic-mpd             Process dynamic DASH manifests (default)
                                (Alias: --no-ignore-dynamic-mpd)
--ignore-dynamic-mpd            Do not process dynamic DASH manifests
                                (Alias: --no-allow-dynamic-mpd)
--hls-split-discontinuity       Split HLS playlists to different formats at
                                discontinuities such as ad breaks
--no-hls-split-discontinuity    Do not split HLS playlists into different
                                formats at discontinuities such as ad breaks
                                (default)
--extractor-args IE_KEY:ARGS    Pass ARGS arguments to the IE_KEY extractor.
                                See "EXTRACTOR ARGUMENTS" for details. You
                                can use this option multiple times to give
                                arguments for different extractors

Bí danh đặt trước:

Bí danh được xác định trước để thuận tiện và dễ sử dụng. Lưu ý rằng các phiên bản tương lai của yt-dlp có thể thêm hoặc điều chỉnh các giá trị đặt trước nhưng tên đặt trước hiện tại sẽ không bị thay đổi hoặc xóa

-t mp3                          -f 'ba[acodec^=mp3]/ba/b' -x --audio-format
                                mp3

-t aac                          -f
                                'ba[acodec^=aac]/ba[acodec^=mp4a.40.]/ba/b'
                                -x --audio-format aac

-t mp4                          --merge-output-format mp4 --remux-video mp4
                                -S vcodec:h264,lang,quality,res,fps,hdr:12,a
                                codec:aac

-t mkv                          --merge-output-format mkv --remux-video mkv

-t sleep                        --sleep-subtitles 5 --sleep-requests 0.75
                                --sleep-interval 10 --max-sleep-interval 20

CẤU HÌNH

Bạn có thể định cấu hình yt-dlp bằng cách đặt bất kỳ tùy chọn dòng lệnh được hỗ trợ nào vào tệp cấu hình. Cấu hình được tải từ các vị trí sau:

  1. Cấu hình chính:

    • Tập tin được đưa cho --config-locations
  2. Cấu hình di động: (Được khuyến nghị cho cài đặt di động)

    • Nếu sử dụng hệ nhị phân, yt-dlp.conf trong cùng thư mục với tệp nhị phân
    • Nếu chạy từ mã nguồn, yt-dlp.conf trong thư mục mẹ của yt_dlp
  3. Cấu hình trang chủ:

    • yt-dlp.conf trong con đường về nhà được trao cho -P
    • Nếu -P không được đưa ra, thư mục hiện tại sẽ được tìm kiếm
  4. Cấu hình người dùng:

    • ${XDG_CONFIG_HOME}/yt-dlp.conf
    • ${XDG_CONFIG_HOME}/yt-dlp/config (được khuyến nghị trên Linux/macOS)
    • ${XDG_CONFIG_HOME}/yt-dlp/config.txt
    • ${APPDATA}/yt-dlp.conf
    • ${APPDATA}/yt-dlp/config (được khuyến nghị trên Windows)
    • ${APPDATA}/yt-dlp/config.txt
    • ~/yt-dlp.conf
    • ~/yt-dlp.conf.txt
    • ~/.yt-dlp/config
    • ~/.yt-dlp/config.txt

    Xem thêm: Lưu ý về các biến môi trường

  5. Cấu hình hệ thống:

    • /etc/yt-dlp.conf
    • /etc/yt-dlp/config
    • /etc/yt-dlp/config.txt

Ví dụ: với tệp cấu hình sau, yt-dlp sẽ luôn trích xuất âm thanh, sao chép thời gian, sử dụng proxy và lưu tất cả video trong YouTube thư mục trong thư mục chính của bạn:

# Lines starting with # are comments

# Always extract audio
-x

# Copy the mtime
--mtime

# Use this proxy
--proxy 127.0.0.1:3128

# Save all videos under YouTube directory in your home directory
-o ~/YouTube/%(title)s.%(ext)s

Lưu ý: Các tùy chọn trong tệp cấu hình chỉ là các tùy chọn giống nhau hay còn gọi là các công tắc được sử dụng trong lệnh gọi dòng lệnh thông thường; do đó ở đó phải không có khoảng trắng sau - hoặc --, ví dụ: -o hoặc --proxy nhưng không - o hoặc -- proxy. Chúng cũng phải được trích dẫn khi cần thiết, như thể nó là một hệ vỏ UNIX.

Bạn có thể sử dụng --ignore-config nếu bạn muốn tắt tất cả các tệp cấu hình cho một lần chạy yt-dlp cụ thể. Nếu --ignore-config được tìm thấy bên trong bất kỳ tệp cấu hình nào, sẽ không có cấu hình nào khác được tải. Ví dụ: việc có tùy chọn trong tệp cấu hình di động sẽ ngăn tải cấu hình gia đình, người dùng và hệ thống. Ngoài ra, (để tương thích ngược) nếu --ignore-config được tìm thấy bên trong tệp cấu hình hệ thống, cấu hình người dùng sẽ không được tải.

Mã hóa tập tin cấu hình

Các tệp cấu hình được giải mã theo UTF BOM nếu có và trong mã hóa từ ngôn ngữ hệ thống nếu không.

Nếu bạn muốn tệp của mình được giải mã khác, hãy thêm # coding: ENCODING vào đầu tập tin (ví dụ: # coding: shift-jis). Không được có ký tự nào trước đó, kể cả dấu cách hoặc BOM.

Xác thực với netrc

Bạn cũng có thể muốn định cấu hình lưu trữ thông tin xác thực tự động cho các trình trích xuất hỗ trợ xác thực (bằng cách cung cấp thông tin đăng nhập và mật khẩu với --username--password) để không chuyển thông tin đăng nhập dưới dạng đối số dòng lệnh trong mỗi lần thực thi yt-dlp và ngăn việc theo dõi mật khẩu văn bản đơn giản trong lịch sử lệnh shell. Bạn có thể đạt được điều này bằng cách sử dụng .netrc tập tin trên cơ sở mỗi máy chiết. Để làm được điều đó, bạn sẽ cần phải tạo một .netrc nộp hồ sơ vào --netrc-location và hạn chế quyền đọc/ghi chỉ của bạn:

touch ${HOME}/.netrc
chmod a-rwx,u+rw ${HOME}/.netrc

Sau đó, bạn có thể thêm thông tin xác thực cho trình trích xuất theo định dạng sau, trong đó máy vắt là tên của trình trích xuất bằng chữ thường:

machine <extractor> login <username> password <password>

Ví dụ:

machine youtube login [email protected] password my_youtube_password
machine twitch login my_twitch_account_name password my_twitch_password

Để kích hoạt xác thực với .netrc tập tin bạn nên vượt qua --netrc vào yt-dlp hoặc đặt nó vào tập tin cấu hình.

Vị trí mặc định của tệp .netrc là ~ (xem bên dưới).

Là một giải pháp thay thế cho việc sử dụng .netrc tệp, có nhược điểm là giữ mật khẩu của bạn trong một tệp văn bản thuần túy, bạn có thể định cấu hình lệnh shell tùy chỉnh để cung cấp thông tin xác thực cho trình trích xuất. Điều này được thực hiện bằng cách cung cấp --netrc-cmd tham số, nó sẽ xuất thông tin đăng nhập ở định dạng netrc và trả về 0 khi thành công, các giá trị khác sẽ được coi là lỗi. {} trong lệnh sẽ được thay thế bằng tên của trình trích xuất để có thể chọn thông tin xác thực cho trình trích xuất phù hợp.

Ví dụ. Để sử dụng một mã hóa .netrc tập tin được lưu trữ dưới dạng .authinfo.gpg

yt-dlp --netrc-cmd 'gpg --decrypt ~/.authinfo.gpg' 'https://www.youtube.com/watch?v=YE7VzlLtp-4'

Lưu ý về các biến môi trường

  • Các biến môi trường thường được chỉ định là ${VARIABLE}/$VARIABLE trên UNIX và %VARIABLE% trên Windows; nhưng luôn được hiển thị là ${VARIABLE} trong tài liệu này
  • yt-dlp cũng cho phép sử dụng các biến kiểu UNIX trên Windows cho các tùy chọn giống như đường dẫn; ví dụ. --output, --config-locations
  • Nếu không đặt, ${XDG_CONFIG_HOME} mặc định là ~/.config${XDG_CACHE_HOME} để ~/.cache
  • Trên Windows, ~ chỉ vào ${HOME} nếu có; hoặc, ${USERPROFILE} hoặc ${HOMEDRIVE}${HOMEPATH} mặt khác
  • Trên Windows, ${USERPROFILE} nói chung là trỏ đến C:\Users\<user name>${APPDATA} để ${USERPROFILE}\AppData\Roaming

MẪU ĐẦU RA

các -o tùy chọn được sử dụng để chỉ ra mẫu cho tên tệp đầu ra trong khi -P tùy chọn được sử dụng để chỉ định đường dẫn mà mỗi loại tệp sẽ được lưu vào.

tl;dr: điều hướng tôi đến các ví dụ.

Cách sử dụng đơn giản nhất của -o không được đặt bất kỳ đối số mẫu nào khi tải xuống một tệp, như trong yt-dlp -o funny_video.flv "https://some/video" (phần mở rộng tập tin mã hóa cứng như thế này là không được đề xuất và có thể phá vỡ một số quá trình xử lý hậu kỳ).

Tuy nhiên, nó cũng có thể chứa các chuỗi đặc biệt sẽ được thay thế khi tải xuống từng video. Các chuỗi đặc biệt có thể được định dạng theo Hoạt động định dạng chuỗi Python, ví dụ: %(NAME)s hoặc %(NAME)05d. Để làm rõ, đó là ký hiệu phần trăm, theo sau là tên trong ngoặc đơn, theo sau là các thao tác định dạng.

Bản thân tên trường (phần bên trong dấu ngoặc đơn) cũng có thể có một số định dạng đặc biệt:

  1. Truyền tải đối tượng: Từ điển và danh sách có sẵn trong siêu dữ liệu có thể được duyệt bằng cách sử dụng dấu chấm . dải phân cách; ví dụ. %(tags.0)s, %(subtitles.en.-1.ext)s. Bạn có thể thực hiện cắt lát Python bằng dấu hai chấm :; Ví dụ. %(id.3:7)s, %(id.6:2:-1)s, %(formats.:.format_id)s. niềng răng xoăn {} có thể được sử dụng để xây dựng từ điển chỉ với các khóa cụ thể; ví dụ. %(formats.:.{format_id,height})#j. Tên trường trống %()s đề cập đến toàn bộ thông tin; ví dụ. %(.{id,title})s. Lưu ý rằng tất cả các trường có sẵn bằng phương pháp này không được liệt kê bên dưới. sử dụng -j để xem các trường như vậy

  2. số học: Số học đơn giản có thể được thực hiện trên các trường số bằng cách sử dụng +, -*. Ví dụ. %(playlist_index+10)03d, %(n_entries+1-playlist_index)d

  3. Định dạng ngày/giờ: Các trường ngày/giờ có thể được định dạng theo định dạng strftime bằng cách chỉ định nó được tách khỏi tên trường bằng cách sử dụng một >. Ví dụ. %(duration>%H-%M-%S)s, %(upload_date>%Y-%m-%d)s, %(epoch-3600>%H-%M-%S)s

  4. Lựa chọn thay thế: Các trường thay thế có thể được chỉ định và phân tách bằng dấu ,. Ví dụ. %(release_date>%Y,upload_date>%Y|Unknown)s

  5. thay thế: Một giá trị thay thế có thể được chỉ định bằng cách sử dụng một & dấu phân cách theo str.format ngôn ngữ nhỏ. Nếu trường là không trống, giá trị thay thế này sẽ được sử dụng thay cho nội dung trường thực tế. Việc này được thực hiện sau khi các trường thay thế được xem xét; do đó sự thay thế được sử dụng nếu bất kỳ của các trường thay thế là không trống rỗng. Ví dụ. %(chapters&has chapters|no chapters)s, %(title&TITLE={:>20}|NO TITLE)s

  6. Mặc định: Giá trị mặc định bằng chữ có thể được chỉ định khi trường trống bằng cách sử dụng | dải phân cách. Điều này ghi đè --output-na-placeholder. Ví dụ. %(uploader|Unknown)s

  7. Nhiều chuyển đổi hơn: Ngoài các loại định dạng thông thường diouxXeEfFgGcrs, yt-dlp còn hỗ trợ chuyển đổi sang B = Bngày, j = jcon trai (cờ # để in đẹp, + cho Unicode), h = Thoát HTML, l = được phân tách bằng dấu phẩy list (cờ # cho \n được phân tách bằng dòng mới), q = một chuỗi qđược chọn cho thiết bị đầu cuối (cờ # để chia danh sách thành các đối số khác nhau), D = thêm Dhậu tố thập phân (ví dụ: 10M) (cờ # để sử dụng 1024 làm hệ số) và S = Sanitize dưới dạng tên tệp (cờ # bị hạn chế)

  8. Chuẩn hóa Unicode: Kiểu định dạng U có thể được sử dụng cho NFC Chuẩn hóa Unicode. Cờ dạng thay thế (#) thay đổi chuẩn hóa thành NFD và cờ chuyển đổi + có thể được sử dụng để chuẩn hóa tương đương tương thích NFKC/NFKD. Ví dụ. %(title)+.100U là NFKC

Tóm lại, cú pháp chung cho một trường là:

%(name[.keys][addition][>strf][,alternate][&replacement][|default])[flags][width][.precision][length]type

Ngoài ra, bạn có thể đặt các mẫu đầu ra khác nhau cho các tệp siêu dữ liệu khác nhau tách biệt với mẫu đầu ra chung bằng cách chỉ định loại tệp theo sau là mẫu được phân tách bằng dấu hai chấm :. Các loại tệp khác nhau được hỗ trợ là subtitle, thumbnail, description, annotation (không dùng nữa), infojson, link, pl_thumbnail, pl_description, pl_infojson, chapter, pl_video. Ví dụ. -o "%(title)s.%(ext)s" -o "thumbnail:%(title)s/%(title)s.%(ext)s" sẽ đặt các hình thu nhỏ vào một thư mục có cùng tên với video. Nếu bất kỳ mẫu nào trống, loại tệp đó sẽ không được ghi. Ví dụ. --write-thumbnail -o "thumbnail:" sẽ chỉ viết hình thu nhỏ cho danh sách phát chứ không viết cho video.

Lưu ý: Do quá trình xử lý hậu kỳ (tức là hợp nhất, v.v.), tên tệp đầu ra thực tế có thể khác. sử dụng --print after_move:filepath để có được tên sau khi hoàn tất quá trình xử lý hậu kỳ.

Các trường có sẵn là:

  • id (chuỗi): Mã nhận dạng video
  • title (chuỗi): Tiêu đề video
  • fulltitle (chuỗi): Tiêu đề video bỏ qua dấu thời gian trực tiếp và tiêu đề chung
  • ext (chuỗi): Phần mở rộng tên tệp video
  • alt_title (chuỗi): Tiêu đề phụ của video
  • description (chuỗi): Mô tả của video
  • display_id (chuỗi): Mã định danh thay thế cho video
  • uploader (chuỗi): Tên đầy đủ của người tải video lên
  • uploader_id (chuỗi): Biệt hiệu hoặc id của người tải video lên
  • uploader_url (chuỗi): URL tới hồ sơ của người tải video lên
  • license (chuỗi): Tên giấy phép mà video được cấp phép
  • creators (danh sách): Người tạo video
  • creator (chuỗi): Người tạo video; được phân tách bằng dấu phẩy
  • timestamp (số): Dấu thời gian UNIX tại thời điểm video có sẵn
  • upload_date (chuỗi): Ngày tải lên video theo giờ UTC (YYYYMMDD)
  • release_timestamp (số): Dấu thời gian UNIX tại thời điểm video được phát hành
  • release_date (chuỗi): Ngày (YYYYMMDD) khi video được phát hành theo giờ UTC
  • release_year (số): Năm (YYYY) khi video hoặc album được phát hành
  • modified_timestamp (số): Dấu thời gian UNIX của thời điểm video được sửa đổi lần cuối
  • modified_date (chuỗi): Ngày (YYYYMMDD) khi video được sửa đổi lần cuối trong UTC
  • channel (chuỗi): Tên đầy đủ của kênh tải video lên đó
  • channel_id (chuỗi): Id của kênh
  • channel_url (chuỗi): URL của kênh
  • channel_follower_count (số): Số người theo dõi kênh
  • channel_is_verified (boolean): Liệu kênh có được xác minh trên nền tảng hay không
  • location (chuỗi): Vị trí thực tế nơi video được quay
  • duration (số): Độ dài của video tính bằng giây
  • duration_string (chuỗi): Độ dài của video (HH:mm:ss)
  • view_count (số): Có bao nhiêu người dùng đã xem video trên nền tảng
  • concurrent_view_count (số): Có bao nhiêu người dùng hiện đang xem video trên nền tảng.
  • like_count (số): Số lượt đánh giá tích cực của video
  • dislike_count (số): Số lượng đánh giá tiêu cực của video
  • repost_count (số): Số lượt đăng lại của video
  • average_rating (số): Đánh giá trung bình do người dùng đưa ra, thang đo được sử dụng tùy thuộc vào trang web
  • comment_count (số): Số lượng bình luận trên video (Đối với một số trình trích xuất, bình luận chỉ được tải xuống ở cuối nên không thể sử dụng trường này)
  • save_count (số): Số lần video được lưu hoặc đánh dấu
  • age_limit (số): Giới hạn độ tuổi cho video (năm)
  • live_status (chuỗi): Một trong số "not_live", "is_live", "is_upcoming", "was_live", "post_live" (đã hoạt động nhưng VOD chưa được xử lý)
  • is_live (boolean): Video này là video phát trực tiếp hay video có thời lượng cố định
  • was_live (boolean): Video này ban đầu có phải là luồng trực tiếp hay không
  • playable_in_embed (chuỗi): Liệu video này có được phép phát trong trình phát được nhúng trên các trang web khác hay không
  • availability (chuỗi): Video ở chế độ "riêng tư", "premium_only", "subscriber_only", "needs_auth", "không công khai" hay "công khai"
  • media_type (chuỗi): Loại phương tiện được phân loại theo trang web, ví dụ: "tập", "clip", "đoạn giới thiệu"
  • start_time (số): Thời gian tính bằng giây khi quá trình sao chép sẽ bắt đầu, như được chỉ định trong URL
  • end_time (số): Thời gian tính bằng giây khi quá trình sao chép sẽ kết thúc, như được chỉ định trong URL
  • extractor (chuỗi): Tên của trình trích xuất
  • extractor_key (chuỗi): Tên khóa của trình trích xuất
  • epoch (số): Thời điểm Unix khi quá trình trích xuất thông tin hoàn tất
  • autonumber (số): Số sẽ tăng lên sau mỗi lần tải xuống, bắt đầu từ --autonumber-start, được đệm bằng các số 0 đứng đầu đến 5 chữ số
  • video_autonumber (số): Số sẽ tăng dần theo từng video
  • n_entries (số): Tổng số mục được trích xuất trong danh sách phát
  • playlist_id (chuỗi): Mã định danh của danh sách phát có chứa video
  • playlist_title (chuỗi): Tên danh sách phát có chứa video
  • playlist (chuỗi): playlist_title nếu có hoặc nếu không playlist_id
  • playlist_count (số): Tổng số mục trong danh sách phát. Có thể không biết liệu toàn bộ danh sách phát có được trích xuất hay không
  • playlist_index (số): Chỉ mục của video trong danh sách phát được đệm bằng các số 0 đứng đầu theo chỉ mục cuối cùng
  • playlist_autonumber (số): Vị trí của video trong hàng đợi tải xuống danh sách phát được đệm bằng các số 0 đứng đầu theo tổng thời lượng của danh sách phát
  • playlist_uploader (chuỗi): Tên đầy đủ của người tải lên danh sách phát
  • playlist_uploader_id (chuỗi): Biệt hiệu hoặc id của người tải lên danh sách phát
  • playlist_channel (chuỗi): Hiển thị tên kênh đã tải lên danh sách phát
  • playlist_channel_id (chuỗi): Mã nhận dạng của kênh đã tải lên danh sách phát
  • playlist_webpage_url (chuỗi): URL của trang web danh sách phát
  • webpage_url (chuỗi): URL tới trang web video, nếu được cung cấp cho yt-dlp, sẽ mang lại kết quả tương tự
  • webpage_url_basename (chuỗi): Tên cơ sở của URL trang web
  • webpage_url_domain (chuỗi): Tên miền của URL trang web
  • original_url (chuỗi): URL do người dùng cung cấp (hoặc giống với webpage_url cho các mục danh sách phát)
  • categories (danh sách): Danh sách các danh mục mà video thuộc về
  • tags (danh sách): Danh sách các thẻ được gán cho video
  • cast (danh sách): Danh sách diễn viên

Tất cả các trường trong Định dạng lọc cũng có thể được sử dụng

Có sẵn cho video thuộc một số chương hoặc phần logic:

  • chapter (chuỗi): Tên hoặc tiêu đề của chương chứa video
  • chapter_number (số): Số chương của video
  • chapter_id (chuỗi): Id của chương chứa video

Có sẵn cho video là một tập của loạt phim hoặc chương trình nào đó:

  • series (chuỗi): Tiêu đề của bộ phim hoặc chương trình mà tập video thuộc về
  • series_id (chuỗi): Id của bộ phim hoặc chương trình mà tập video thuộc về
  • season (chuỗi): Tiêu đề của phần mà tập video thuộc về
  • season_number (số): Số phần của tập video
  • season_id (chuỗi): Id của phần mà tập video thuộc về
  • episode (chuỗi): Tiêu đề của tập video
  • episode_number (số): Số tập video trong một phần
  • episode_id (chuỗi): Id của tập video

Có sẵn cho phương tiện là một bản nhạc hoặc một phần của album nhạc:

  • track (chuỗi): Tiêu đề của bài hát
  • track_number (số): Số bản nhạc trong album hoặc đĩa
  • track_id (chuỗi): Id của bản nhạc
  • artists (danh sách): (các) nghệ sĩ của bài hát
  • artist (chuỗi): Nghệ sĩ của bản nhạc; được phân tách bằng dấu phẩy
  • genres (danh sách): Thể loại của bản nhạc
  • genre (chuỗi): Thể loại của bản nhạc; được phân tách bằng dấu phẩy
  • composers (danh sách): (Các) nhà soạn nhạc của tác phẩm
  • composer (chuỗi): (Các) nhà soạn nhạc của tác phẩm; được phân tách bằng dấu phẩy
  • album (chuỗi): Tiêu đề album chứa bài hát
  • album_type (chuỗi): Loại album
  • album_artists (danh sách): Tất cả nghệ sĩ có mặt trong album
  • album_artist (chuỗi): Tất cả nghệ sĩ có mặt trong album; được phân tách bằng dấu phẩy
  • disc_number (số): Số đĩa hoặc phương tiện vật lý khác chứa bản nhạc

Chỉ khả dụng khi sử dụng --download-sections và cho chapter: tiền tố khi sử dụng --split-chapters đối với video có chương nội bộ:

  • section_title (chuỗi): Tiêu đề của chương
  • section_number (số): Số chương trong tệp
  • section_start (số): Thời gian bắt đầu của chương tính bằng giây
  • section_end (số): Thời gian kết thúc chương tính bằng giây

Chỉ khả dụng khi được sử dụng trong --print:

  • urls (chuỗi): URL của tất cả các định dạng được yêu cầu, một URL trên mỗi dòng
  • filename (string): Tên file video. Lưu ý rằng tên tập tin thực tế có thể khác nhau
  • formats_table (bảng): Bảng định dạng video được in bởi --list-formats
  • thumbnails_table (bảng): Bảng định dạng hình thu nhỏ được in bởi --list-thumbnails
  • subtitles_table (bảng): Bảng định dạng phụ đề được in bởi --list-subs
  • automatic_captions_table (bảng): Bảng định dạng phụ đề tự động được in bởi --list-subs

Chỉ khả dụng sau khi video được tải xuống (post_process/after_move):

  • filepath: Đường dẫn thực tế của file video đã tải về

Chỉ có ở --sponsorblock-chapter-title:

  • start_time (số): Thời gian bắt đầu của chương tính bằng giây
  • end_time (số): Thời gian kết thúc chương tính bằng giây
  • categories (danh sách): Các Nhà tài trợChặn danh mục chương này thuộc về
  • category (chuỗi): Danh mục Nhà tài trợ nhỏ nhất mà chương thuộc về
  • category_names (danh sách): Tên thân thiện của các danh mục
  • name (chuỗi): Tên thân thiện của danh mục nhỏ nhất
  • type (chuỗi): Cái Loại hành động chặn nhà tài trợ của chương

Mỗi chuỗi nói trên khi được tham chiếu trong mẫu đầu ra sẽ được thay thế bằng giá trị thực tế tương ứng với tên chuỗi. Ví dụ: cho -o %(title)s-%(id)s.%(ext)s và một video mp4 có tiêu đề yt-dlp test video và id YE7VzlLtp-4, điều này sẽ dẫn đến một yt-dlp test video-YE7VzlLtp-4.mp4 tập tin được tạo trong thư mục hiện tại.

Lưu ý: Một số trình tự không được đảm bảo xuất hiện vì chúng phụ thuộc vào siêu dữ liệu thu được từ một trình trích xuất cụ thể. Các chuỗi như vậy sẽ được thay thế bằng giá trị giữ chỗ được cung cấp cùng với --output-na-placeholder (NA theo mặc định).

Mẹo: Nhìn vào -j đầu ra để xác định trường nào có sẵn cho URL cụ thể

Đối với chuỗi số, bạn có thể sử dụng định dạng liên quan đến số; ví dụ. %(view_count)05d sẽ dẫn đến một chuỗi có số lượt xem được đệm bằng số 0 tối đa 5 ký tự, như trong 00042.

Các mẫu đầu ra cũng có thể chứa đường dẫn phân cấp tùy ý, ví dụ: -o "%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s" điều này sẽ dẫn đến việc tải xuống từng video trong một thư mục tương ứng với mẫu đường dẫn này. Mọi thư mục bị thiếu sẽ được tự động tạo cho bạn.

Để sử dụng phần trăm chữ trong mẫu đầu ra, hãy sử dụng %%. Để xuất ra thiết bị xuất chuẩn, hãy sử dụng -o -.

Mẫu mặc định hiện tại là %(title)s [%(id)s].%(ext)s.

Trong một số trường hợp, bạn không muốn các ký tự đặc biệt như 中, dấu cách hoặc &, chẳng hạn như khi truyền tên tệp đã tải xuống sang hệ thống Windows hoặc tên tệp qua kênh không an toàn 8 bit. Trong những trường hợp này, hãy thêm --restrict-filenames flag để có được tiêu đề ngắn hơn.

Ví dụ về mẫu đầu ra

$ yt-dlp --print filename -o "test video.%(ext)s" ptd1NN40vMw
test video.webm    # Literal name with correct extension

$ yt-dlp --print filename -o "%(title)s.%(ext)s" ptd1NN40vMw
To'y!🤯😂🤦🏻‍♂️.webm    # All kinds of weird characters

$ yt-dlp --print filename -o "%(title)s.%(ext)s" ptd1NN40vMw --restrict-filenames
To_y.webm    # Restricted file name

# Download YouTube playlist videos in separate directory indexed by video order in a playlist
$ yt-dlp -o "%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s" "https://www.youtube.com/playlist?list=PLwiyx1dc3P2JR9N8gQaQN_BCvlSlap7re"

# Download YouTube playlist videos in separate directories according to their uploaded year
$ yt-dlp -o "%(upload_date>%Y)s/%(title)s.%(ext)s" "https://www.youtube.com/playlist?list=PLwiyx1dc3P2JR9N8gQaQN_BCvlSlap7re"

# Prefix playlist index with " - " separator, but only if it is available
$ yt-dlp -o "%(playlist_index&{} - |)s%(title)s.%(ext)s" YE7VzlLtp-4 "https://www.youtube.com/user/TheLinuxFoundation/playlists"

# Download all playlists of YouTube channel/user keeping each playlist in separate directory:
$ yt-dlp -o "%(uploader)s/%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s" "https://www.youtube.com/user/TheLinuxFoundation/playlists"

# Download Udemy course keeping each chapter in separate directory under MyVideos directory in your home
$ yt-dlp -u user -p password -P "~/MyVideos" -o "%(playlist)s/%(chapter_number)s - %(chapter)s/%(title)s.%(ext)s" "https://www.udemy.com/java-tutorial"

# Download entire series season keeping each series and each season in separate directory under C:/MyVideos
$ yt-dlp -P "C:/MyVideos" -o "%(series)s/%(season_number)s - %(season)s/%(episode_number)s - %(episode)s.%(ext)s" "https://videomore.ru/kino_v_detalayah/5_sezon/367617"

# Download video as "C:\MyVideos\uploader\title.ext", subtitles as "C:\MyVideos\subs\uploader\title.ext"
# and put all temporary files in "C:\MyVideos\tmp"
$ yt-dlp -P "C:/MyVideos" -P "temp:tmp" -P "subtitle:subs" -o "%(uploader)s/%(title)s.%(ext)s" YE7VzlLtp-4 --write-subs

# Download video as "C:\MyVideos\uploader\title.ext" and subtitles as "C:\MyVideos\uploader\subs\title.ext"
$ yt-dlp -P "C:/MyVideos" -o "%(uploader)s/%(title)s.%(ext)s" -o "subtitle:%(uploader)s/subs/%(title)s.%(ext)s" YE7VzlLtp-4 --write-subs

# Stream the video being downloaded to stdout
$ yt-dlp -o - YE7VzlLtp-4

LỰA CHỌN ĐỊNH DẠNG

Theo mặc định, yt-dlp cố gắng tải xuống chất lượng tốt nhất hiện có nếu bạn đừng vượt qua bất kỳ lựa chọn nào. Điều này thường tương đương với việc sử dụng -f bestvideo*+bestaudio/best. Tuy nhiên, nếu nhiều luồng âm thanh được bật (--audio-multistreams), định dạng mặc định thay đổi thành -f bestvideo+bestaudio/best. Tương tự, nếu ffmpeg không có sẵn hoặc nếu bạn sử dụng yt-dlp để truyền phát tới stdout (-o -), mặc định trở thành -f best/bestvideo+bestaudio.

Cảnh báo không dùng nữa: Các phiên bản mới nhất của yt-dlp có thể truyền đồng thời nhiều định dạng tới thiết bị xuất chuẩn bằng cách sử dụng ffmpeg. Vì vậy, trong các phiên bản sau này, mặc định cho điều này sẽ được đặt thành -f bv*+ba/b tương tự như tải xuống thông thường. Nếu bạn muốn bảo tồn -f b/bv+ba cài đặt này, bạn nên chỉ định rõ ràng nó trong các tùy chọn cấu hình.

Cú pháp chung để chọn định dạng là -f FORMAT (hoặc --format FORMAT) ở đâu FORMAT là một biểu thức chọn, tức là một biểu thức mô tả định dạng hoặc các định dạng bạn muốn tải xuống.

tl;dr: điều hướng tôi đến các ví dụ.

Trường hợp đơn giản nhất là yêu cầu một định dạng cụ thể; ví dụ. với -f 22 bạn có thể tải xuống định dạng có mã định dạng bằng 22. Bạn có thể lấy danh sách mã định dạng có sẵn cho video cụ thể bằng cách sử dụng --list-formats hoặc -F. Lưu ý rằng các mã định dạng này dành riêng cho trình trích xuất.

Bạn cũng có thể sử dụng phần mở rộng tập tin (hiện tại 3gp, aac, flv, m4a, mp3, mp4, ogg, wav, webm được hỗ trợ) để tải xuống định dạng chất lượng tốt nhất của một phần mở rộng tệp cụ thể được phân phát dưới dạng một tệp duy nhất, ví dụ: -f webm sẽ tải xuống định dạng chất lượng tốt nhất với webm phần mở rộng được phục vụ dưới dạng một tập tin duy nhất.

Bạn có thể sử dụng -f - để tương tác cung cấp bộ chọn định dạng cho mỗi video

Bạn cũng có thể sử dụng các tên đặc biệt để chọn các định dạng trường hợp đặc biệt:

  • all: Chọn tất cả các định dạng riêng biệt
  • mergeall: Chọn và hợp nhất tất cả các định dạng (Phải sử dụng với --audio-multistreams, --video-multistreams hoặc cả hai)
  • b*, best*: Chọn định dạng có chất lượng tốt nhất chứa một trong hai video hoặc âm thanh hoặc cả hai (tức là; vcodec!=none or acodec!=none)
  • b, best: Chọn định dạng có chất lượng tốt nhất chứa cả hai video và âm thanh. Tương đương với best*[vcodec!=none][acodec!=none]
  • bv, bestvideo: Chọn chất lượng tốt nhất chỉ có video định dạng. Tương đương với best*[acodec=none]
  • bv*, bestvideo*: Chọn định dạng có chất lượng tốt nhất chứa video. Nó cũng có thể chứa âm thanh. Tương đương với best*[vcodec!=none]
  • ba, bestaudio: Chọn chất lượng tốt nhất chỉ có âm thanh định dạng. Tương đương với best*[vcodec=none]
  • ba*, bestaudio*: Chọn định dạng có chất lượng tốt nhất chứa âm thanh. Nó cũng có thể chứa video. Tương đương với best*[acodec!=none] (Không sử dụng!)
  • w*, worst*: Chọn định dạng có chất lượng kém nhất chứa video hoặc âm thanh
  • w, worst: Chọn định dạng có chất lượng kém nhất chứa cả video và âm thanh. Tương đương với worst*[vcodec!=none][acodec!=none]
  • wv, worstvideo: Chọn định dạng chỉ dành cho video có chất lượng kém nhất. Tương đương với worst*[acodec=none]
  • wv*, worstvideo*: Chọn định dạng có chất lượng kém nhất chứa video. Nó cũng có thể chứa âm thanh. Tương đương với worst*[vcodec!=none]
  • wa, worstaudio: Chọn định dạng chỉ có âm thanh có chất lượng kém nhất. Tương đương với worst*[vcodec=none]
  • wa*, worstaudio*: Chọn định dạng có chất lượng kém nhất chứa âm thanh. Nó cũng có thể chứa video. Tương đương với worst*[acodec!=none]

Ví dụ: để tải xuống định dạng chỉ dành cho video có chất lượng kém nhất, bạn có thể sử dụng -f worstvideo. Tuy nhiên, khuyến cáo không nên sử dụng worst và các tùy chọn liên quan. Khi bộ chọn định dạng của bạn được worst, định dạng tệ nhất về mọi mặt sẽ được chọn. Trong hầu hết các trường hợp, điều bạn thực sự muốn là video có kích thước tệp nhỏ nhất. Vì vậy, nói chung là tốt hơn để sử dụng -S +size hoặc chặt chẽ hơn, -S +size,+br,+res,+fps thay vì -f worst. Xem Sắp xếp định dạng để biết thêm chi tiết.

Bạn có thể chọn định dạng tốt nhất thứ n của loại bằng cách sử dụng best<type>.<n>. Ví dụ, best.2 sẽ chọn định dạng kết hợp tốt thứ 2. Tương tự, bv*.3 sẽ chọn định dạng tốt thứ 3 có chứa luồng video.

Nếu bạn muốn tải xuống nhiều video và chúng không có sẵn định dạng giống nhau, bạn có thể chỉ định thứ tự ưu tiên bằng cách sử dụng dấu gạch chéo. Lưu ý rằng các định dạng ở phía bên trái được ưu tiên; ví dụ. -f 22/17/18 sẽ tải xuống định dạng 22 nếu có, nếu không nó sẽ tải xuống định dạng 17 nếu có, nếu không nó sẽ tải xuống định dạng 18 nếu có, nếu không nó sẽ phàn nàn rằng không có định dạng phù hợp để tải xuống.

Nếu bạn muốn tải xuống nhiều định dạng của cùng một video, hãy sử dụng dấu phẩy làm dấu phân cách, ví dụ: -f 22,17,18 tất nhiên sẽ tải xuống cả ba định dạng này nếu chúng có sẵn. Hoặc một ví dụ phức tạp hơn kết hợp với tính năng ưu tiên: -f 136/137/mp4/bestvideo,140/m4a/bestaudio.

Bạn có thể hợp nhất video và âm thanh của nhiều định dạng thành một tệp duy nhất bằng cách sử dụng -f <format1>+<format2>+... (yêu cầu cài đặt ffmpeg); ví dụ. -f bestvideo+bestaudio sẽ tải xuống định dạng chỉ có video tốt nhất, định dạng chỉ có âm thanh tốt nhất và trộn chúng cùng với ffmpeg.

Cảnh báo không dùng nữa: Kể từ khi bên dưới hành vi được mô tả là phức tạp và phản trực giác, điều này sẽ bị xóa và tính năng đa luồng sẽ được bật theo mặc định trong tương lai. Thay vào đó, một toán tử mới sẽ được thêm vào để giới hạn các định dạng cho một âm thanh/video

Trừ khi --video-multistreams được sử dụng, tất cả các định dạng có luồng video ngoại trừ định dạng đầu tiên sẽ bị bỏ qua. Tương tự, trừ khi --audio-multistreams được sử dụng, tất cả các định dạng có luồng âm thanh ngoại trừ định dạng đầu tiên sẽ bị bỏ qua. Ví dụ. -f bestvideo+best+bestaudio --video-multistreams --audio-multistreams sẽ tải xuống và hợp nhất cả 3 định dạng nhất định. File kết quả sẽ có 2 luồng video và 2 luồng âm thanh. Nhưng -f bestvideo+best+bestaudio --no-video-multistreams sẽ chỉ tải xuống và hợp nhất bestvideobestaudio. best bị bỏ qua vì định dạng khác chứa luồng video (bestvideo) đã được chọn. Do đó, thứ tự của các định dạng rất quan trọng. -f best+bestaudio --no-audio-multistreams sẽ chỉ tải xuống best trong khi -f bestaudio+best --no-audio-multistreams sẽ bỏ qua best và chỉ tải xuống bestaudio.

Định dạng lọc

Bạn cũng có thể lọc các định dạng video bằng cách đặt điều kiện trong ngoặc, như trong -f "best[height=720]" (hoặc -f "[filesize>10M]" vì các bộ lọc không có bộ chọn được hiểu là best).

Các trường meta số sau đây có thể được sử dụng để so sánh <, <=, >, >=, = (bằng), != (không bằng):

  • filesize: Số byte, nếu biết trước
  • filesize_approx: Ước tính số byte
  • width: Chiều rộng của video, nếu biết
  • height: Chiều cao của video, nếu biết
  • aspect_ratio: Tỷ lệ khung hình của video, nếu biết
  • tbr: Tốc độ bit trung bình của âm thanh và video trong kbps
  • abr: Tốc độ bit âm thanh trung bình trong kbps
  • vbr: Tốc độ bit video trung bình trong kbps
  • asr: Tốc độ lấy mẫu âm thanh tính bằng Hertz
  • fps: Tốc độ khung hình
  • audio_channels: Số lượng kênh âm thanh
  • stretched_ratio: width:height số pixel của video, nếu không phải là hình vuông

Đồng thời lọc công việc để so sánh = (bằng), ^= (bắt đầu bằng), $= (kết thúc bằng), *= (chứa), ~= (khớp với biểu thức chính quy) và các trường meta chuỗi sau:

  • url: URL video
  • ext: Phần mở rộng tập tin
  • acodec: Tên codec âm thanh đang sử dụng
  • vcodec: Tên của codec video đang sử dụng
  • container: Tên định dạng vùng chứa
  • protocol: Giao thức sẽ được sử dụng để tải xuống thực tế, chữ thường (http, https, rtmp, rtmpe, f4m, ism, http_dash_segments, m3u8hoặc m3u8_native)
  • language: Mã ngôn ngữ
  • dynamic_range: Phạm vi động của video
  • format_id: Mô tả ngắn gọn về định dạng
  • format: Mô tả định dạng mà con người có thể đọc được
  • format_note: Thông tin bổ sung về định dạng
  • resolution: Mô tả văn bản về chiều rộng và chiều cao

Bất kỳ so sánh chuỗi nào cũng có thể được bắt đầu bằng phủ định ! để tạo ra một so sánh ngược lại, ví dụ: !*= (không chứa). So sánh của so sánh chuỗi cần phải được trích dẫn bằng dấu ngoặc kép hoặc dấu ngoặc đơn nếu nó chứa dấu cách hoặc ký tự đặc biệt không phải là ._-.

Lưu ý: Không có trường meta nào nói trên được đảm bảo xuất hiện vì điều này chỉ phụ thuộc vào siêu dữ liệu mà trình trích xuất cụ thể thu được, tức là siêu dữ liệu do trang web cung cấp. Bất kỳ trường nào khác được trình trích xuất cung cấp cũng có thể được sử dụng để lọc.

Các định dạng không biết giá trị sẽ bị loại trừ trừ khi bạn đặt dấu chấm hỏi (?) sau toán tử. Bạn có thể kết hợp các bộ lọc định dạng, vì vậy -f "bv[height<=?720][tbr>500]" chọn video tối đa 720p (hoặc video không xác định được chiều cao) với tốc độ bit lớn hơn 500 kbps. Bạn cũng có thể sử dụng các bộ lọc với all để tải xuống tất cả các định dạng đáp ứng bộ lọc, ví dụ: -f "all[vcodec=none]" chọn tất cả các định dạng chỉ có âm thanh.

Bộ chọn định dạng cũng có thể được nhóm bằng dấu ngoặc đơn; ví dụ. -f "(mp4,webm)[height<480]" sẽ tải xuống các định dạng mp4 và webm được hợp nhất trước tốt nhất với chiều cao thấp hơn 480.

Sắp xếp định dạng

Bạn có thể thay đổi tiêu chí để được coi là best bằng cách sử dụng -S (--format-sort). Định dạng chung cho việc này là --format-sort field1,field2....

Các trường có sẵn là:

  • hasvid: Ưu tiên cho các định dạng có luồng video
  • hasaud: Ưu tiên cho các định dạng có luồng âm thanh
  • ie_pref: Tùy chọn định dạng
  • lang: Tùy chọn ngôn ngữ được xác định bởi trình trích xuất (ví dụ: ngôn ngữ gốc được ưu tiên hơn mô tả âm thanh)
  • quality: Chất lượng của định dạng
  • source: Ưu tiên của nguồn
  • proto: Giao thức được sử dụng để tải xuống (https/ftps > http/ftp > m3u8_native/m3u8 > http_dash_segments> websocket_frag > f4f/f4m)
  • vcodec: Bộ giải mã video (av01 > vp9.2 > vp9 > h265 > h264 > vp8 > h263 > theora > khác)
  • acodec: Bộ giải mã âm thanh (flac/alac > wav/aiff > opus > vorbis > aac > mp4a > mp3 > ac4 > eac3 > ac3 > dts > khác)
  • codec: Tương đương với vcodec,acodec
  • vext: Phần mở rộng video (mp4 > mov > webm > flv > khác). Nếu --prefer-free-formats được sử dụng, webm được ưu tiên.
  • aext: Phần mở rộng âm thanh (m4a > aac > mp3 > ogg > opus > webm > khác). Nếu --prefer-free-formats được sử dụng, thứ tự thay đổi thành ogg > opus > webm > mp3 > m4a > aac
  • ext: Tương đương với vext,aext
  • filesize: Kích thước tệp chính xác, nếu biết trước
  • fs_approx: Kích thước tập tin gần đúng
  • size: Kích thước tệp chính xác nếu có, nếu không thì kích thước tệp gần đúng
  • height: Chiều cao của video
  • width: Chiều rộng của video
  • res: Độ phân giải video, được tính là kích thước nhỏ nhất.
  • fps: Tốc độ khung hình của video
  • hdr: Phạm vi động của video (DV > HDR12 > HDR10+ > HDR10 > HLG > SDR)
  • channels: Số lượng kênh âm thanh
  • tbr: Tổng tốc độ bit trung bình trong kbps
  • vbr: Tốc độ bit video trung bình trong kbps
  • abr: Tốc độ bit âm thanh trung bình trong kbps
  • br: Tốc độ bit trung bình trong kbps, tbr/vbr/abr
  • asr: Tốc độ mẫu âm thanh tính bằng Hz

Cảnh báo không dùng nữa: Nhiều trường trong số này có bí danh (hiện không có giấy tờ), có thể bị xóa trong phiên bản tương lai. Bạn chỉ nên sử dụng tên trường được ghi lại.

Tất cả các trường, trừ khi có quy định khác, đều được sắp xếp theo thứ tự giảm dần. Để đảo ngược điều này, hãy thêm tiền tố vào trường +. Ví dụ. +res thích định dạng có độ phân giải nhỏ nhất. Ngoài ra, bạn có thể thêm một giá trị ưu tiên cho các trường, cách nhau bằng dấu :. Ví dụ. res:720 thích video lớn hơn nhưng không lớn hơn 720p và video nhỏ nhất nếu không có video nào nhỏ hơn 720p. cho codecext, bạn có thể cung cấp hai giá trị ưu tiên, giá trị đầu tiên cho video và giá trị thứ hai cho âm thanh. Ví dụ. +codec:avc:m4a (tương đương với +vcodec:avc,+acodec:m4a) đặt tùy chọn codec video thành h264 > h265 > vp9 > vp9.2 > av01 > vp8 > h263 > theora và ưu tiên codec âm thanh mp4a > aac > vorbis > opus > mp3 > ac3 > dts. Bạn cũng có thể sắp xếp ưu tiên các giá trị gần nhất với giá trị được cung cấp bằng cách sử dụng ~ như dấu phân cách. Ví dụ. filesize~1G thích định dạng có kích thước tệp gần nhất với 1 GiB.

những cánh đồng hasvidie_pref luôn được ưu tiên cao nhất trong việc sắp xếp, bất kể thứ tự do người dùng xác định. Hành vi này có thể được thay đổi bằng cách sử dụng --format-sort-force. Ngoài ra, thứ tự mặc định được sử dụng là: lang,quality,res,fps,hdr:12,vcodec,channels,acodec,size,br,asr,proto,ext,hasaud,source,id. Trình trích xuất có thể ghi đè thứ tự mặc định này, nhưng chúng không thể ghi đè thứ tự do người dùng cung cấp.

Lưu ý rằng mặc định cho hdr là hdr:12; tức là Dolby Vision không được ưa thích. Lựa chọn này được đưa ra vì các định dạng DV vẫn chưa tương thích hoàn toàn với hầu hết các thiết bị. Điều này có thể được thay đổi trong tương lai.

Nếu bộ chọn định dạng của bạn là worst, mục cuối cùng được chọn sau khi sắp xếp. Điều này có nghĩa là nó sẽ chọn định dạng tệ nhất về mọi mặt. Trong hầu hết các trường hợp, điều bạn thực sự muốn là video có kích thước tệp nhỏ nhất. Vì vậy, nói chung là tốt hơn để sử dụng -f best -S +size,+br,+res,+fps.

Nếu bạn sử dụng -S/--format-sort tùy chọn nhiều lần, mỗi đối số sắp xếp tiếp theo sẽ được thêm vào trước đối số trước đó và chỉ mục nhập có mức độ ưu tiên cao nhất của bất kỳ trường trùng lặp nào sẽ được giữ nguyên. Ví dụ. -S proto -S res tương đương với -S res,proto-S res:720,fps -S vcodec,res:1080 tương đương với -S vcodec,res:1080,fps. Bạn có thể sử dụng --format-sort-reset bỏ qua mọi điều đã được thông qua trước đó -S/--format-sort đối số và đặt lại về thứ tự mặc định.

Mẹo: Bạn có thể sử dụng -v -F để xem các định dạng đã được sắp xếp như thế nào (tệ nhất đến tốt nhất).

Ví dụ về lựa chọn định dạng

# Download and merge the best video-only format and the best audio-only format,
# or download the best combined format if video-only format is not available
$ yt-dlp -f "bv+ba/b"

# Download best format that contains video,
# and if it doesn't already have an audio stream, merge it with best audio-only format
$ yt-dlp -f "bv*+ba/b"

# Same as above
$ yt-dlp

# Download the best video-only format and the best audio-only format without merging them
# For this case, an output template should be used since
# by default, bestvideo and bestaudio will have the same file name.
$ yt-dlp -f "bv,ba" -o "%(title)s.f%(format_id)s.%(ext)s"

# Download and merge the best format that has a video stream,
# and all audio-only formats into one file
$ yt-dlp -f "bv*+mergeall[vcodec=none]" --audio-multistreams

# Download and merge the best format that has a video stream,
# and the best 2 audio-only formats into one file
$ yt-dlp -f "bv*+ba+ba.2" --audio-multistreams


# The following examples show the old method (without -S) of format selection
# and how to use -S to achieve a similar but (generally) better result

# Download the worst video available (old method)
$ yt-dlp -f "wv*+wa/w"

# Download the best video available but with the smallest resolution
$ yt-dlp -S "+res"

# Download the smallest video available
$ yt-dlp -S "+size,+br"



# Download the best mp4 video available, or the best video if no mp4 available
$ yt-dlp -f "bv*[ext=mp4]+ba[ext=m4a]/b[ext=mp4] / bv*+ba/b"

# Download the best video with the best extension
# (For video, mp4 > mov > webm > flv. For audio, m4a > aac > mp3 ...)
$ yt-dlp -S "ext"



# Download the best video available but no better than 480p,
# or the worst video if there is no video under 480p
$ yt-dlp -f "bv*[height<=480]+ba/b[height<=480] / wv*+ba/w"

# Download the best video available with the largest height but no better than 480p,
# or the best video with the smallest resolution if there is no video under 480p
$ yt-dlp -S "height:480"

# Download the best video available with the largest resolution but no better than 480p,
# or the best video with the smallest resolution if there is no video under 480p
# Resolution is determined by using the smallest dimension.
# So this works correctly for vertical videos as well
$ yt-dlp -S "res:480"



# Download the best video (that also has audio) but no bigger than 50 MB,
# or the worst video (that also has audio) if there is no video under 50 MB
$ yt-dlp -f "b[filesize<50M] / w"

# Download the largest video (that also has audio) but no bigger than 50 MB,
# or the smallest video (that also has audio) if there is no video under 50 MB
$ yt-dlp -f "b" -S "filesize:50M"

# Download the best video (that also has audio) that is closest in size to 50 MB
$ yt-dlp -f "b" -S "filesize~50M"



# Download best video available via direct link over HTTP/HTTPS protocol,
# or the best video available via any protocol if there is no such video
$ yt-dlp -f "(bv*+ba/b)[protocol^=http][protocol!*=dash] / (bv*+ba/b)"

# Download best video available via the best protocol
# (https/ftps > http/ftp > m3u8_native > m3u8 > http_dash_segments ...)
$ yt-dlp -S "proto"



# Download the best video with either h264 or h265 codec,
# or the best video if there is no such video
$ yt-dlp -f "(bv*[vcodec~='^((he|a)vc|h26[45])']+ba) / (bv*+ba/b)"

# Download the best video with best codec no better than h264,
# or the best video with worst codec if there is no such video
$ yt-dlp -S "codec:h264"

# Download the best video with worst codec no worse than h264,
# or the best video with best codec if there is no such video
$ yt-dlp -S "+codec:h264"



# More complex examples

# Download the best video no better than 720p preferring framerate greater than 30,
# or the worst video (still preferring framerate greater than 30) if there is no such video
$ yt-dlp -f "((bv*[fps>30]/bv*)[height<=720]/(wv*[fps>30]/wv*)) + ba / (b[fps>30]/b)[height<=720]/(w[fps>30]/w)"

# Download the video with the largest resolution no better than 720p,
# or the video with the smallest resolution available if there is no such video,
# preferring larger framerate for formats with the same resolution
$ yt-dlp -S "res:720,fps"



# Download the video with smallest resolution no worse than 480p,
# or the video with the largest resolution available if there is no such video,
# preferring better codec and then larger total bitrate for the same resolution
$ yt-dlp -S "+res:480,codec,br"

SỬA ĐỔI SIÊU DỮ LIỆU

Siêu dữ liệu mà trình trích xuất thu được có thể được sửa đổi bằng cách sử dụng --parse-metadata--replace-in-metadata

--replace-in-metadata FIELDS REGEX REPLACE được sử dụng để thay thế văn bản trong bất kỳ trường siêu dữ liệu nào bằng cách sử dụng biểu thức chính quy Python. Tham khảo ngược có thể được sử dụng trong chuỗi thay thế để sử dụng nâng cao.

Cú pháp chung của --parse-metadata FROM:TO là đặt tên của một trường hoặc một mẫu đầu ra để trích xuất dữ liệu từ đó và định dạng để diễn giải dữ liệu đó, được phân tách bằng dấu hai chấm :. Hoặc là một biểu thức chính quy Python với các nhóm chụp được đặt tên, một tên trường duy nhất hoặc cú pháp tương tự với mẫu đầu ra (chỉ %(field)s định dạng được hỗ trợ) có thể được sử dụng cho TO. Tùy chọn này có thể được sử dụng nhiều lần để phân tích và sửa đổi các trường khác nhau.

Lưu ý rằng các tùy chọn này giữ nguyên thứ tự tương đối của chúng, cho phép thực hiện thay thế trong các trường được phân tích cú pháp và ngược lại. Ngoài ra, bất kỳ trường nào được tạo ra đều có thể được sử dụng trong mẫu đầu ra và cũng sẽ ảnh hưởng đến siêu dữ liệu của tệp phương tiện được thêm vào khi sử dụng --embed-metadata.

Tùy chọn này cũng có một vài cách sử dụng đặc biệt:

  • Bạn có thể tải xuống URL bổ sung dựa trên siêu dữ liệu của video hiện đang tải xuống. Để thực hiện việc này, hãy đặt trường additional_urls tới URL mà bạn muốn tải xuống. Ví dụ. --parse-metadata "description:(?P<additional_urls>https?://www\.vimeo\.com/\d+)" sẽ tải xuống video vimeo đầu tiên được tìm thấy trong phần mô tả

  • Bạn có thể sử dụng điều này để thay đổi siêu dữ liệu được nhúng trong tệp phương tiện. Để thực hiện việc này, hãy đặt giá trị của trường tương ứng bằng meta_ tiền tố. Ví dụ: bất kỳ giá trị nào bạn đặt thành meta_description trường sẽ được thêm vào description trong tệp - bạn có thể sử dụng trường này để đặt "mô tả" và "tóm tắt" khác. Để sửa đổi siêu dữ liệu của từng luồng riêng lẻ, hãy sử dụng meta<n>_ tiền tố (ví dụ: meta1_language). Bất kỳ giá trị nào được đặt thành meta_ trường sẽ ghi đè lên tất cả các giá trị mặc định.

Lưu ý: Việc sửa đổi siêu dữ liệu xảy ra trước khi lựa chọn định dạng, trích xuất sau và các hoạt động xử lý hậu kỳ khác. Một số trường có thể được thêm hoặc thay đổi trong các bước này, ghi đè các thay đổi của bạn.

Để tham khảo, đây là các trường yt-dlp thêm theo mặc định vào siêu dữ liệu tệp:

Trường siêu dữ liệu Từ
title track hoặc title
date upload_date
description, synopsis description
purl, comment webpage_url
track track_number
artist artist, artists, creator, creators, uploader hoặc uploader_id
composer composer hoặc composers
genre genre, genres, categories hoặc tags
album album hoặc series
album_artist album_artist hoặc album_artists
disc disc_number
show series
season_number season_number
episode_id episode hoặc episode_id
episode_sort episode_number
language của mỗi luồng định dạng của language

Lưu ý: Định dạng tệp có thể không hỗ trợ một số trường này

Sửa đổi ví dụ về siêu dữ liệu

# Interpret the title as "Artist - Title"
$ yt-dlp --parse-metadata "title:%(artist)s - %(title)s"

# Regex example
$ yt-dlp --parse-metadata "description:Artist - (?P<artist>.+)"

# Copy the episode field to the title field (with FROM and TO as single fields)
$ yt-dlp --parse-metadata "episode:title"

# Set title as "Series name S01E05"
$ yt-dlp --parse-metadata "%(series)s S%(season_number)02dE%(episode_number)02d:%(title)s"

# Prioritize uploader as the "artist" field in video metadata
$ yt-dlp --parse-metadata "%(uploader|)s:%(meta_artist)s" --embed-metadata

# Set "comment" field in video metadata using description instead of webpage_url,
# handling multiple lines correctly
$ yt-dlp --parse-metadata "description:(?s)(?P<meta_comment>.+)" --embed-metadata

# Do not set any "synopsis" in the video metadata
$ yt-dlp --parse-metadata ":(?P<meta_synopsis>)"

# Remove "formats" field from the infojson by setting it to an empty string
$ yt-dlp --parse-metadata "video::(?P<formats>)" --write-info-json

# Replace all spaces and "_" in title and uploader with a `-`
$ yt-dlp --replace-in-metadata "title,uploader" "[ _]" "-"

LUẬN LUẬT TUYỆT VỜI

Một số trình trích xuất chấp nhận các đối số bổ sung có thể được chuyển bằng cách sử dụng --extractor-args KEY:ARGS. ARGS là một ; (dấu chấm phẩy) chuỗi được phân tách ARG=VAL1,VAL2. Ví dụ. --extractor-args "youtube:player-client=tv,mweb;formats=incomplete" --extractor-args "twitter:api=syndication"

Lưu ý: Trong CLI, ARG có thể sử dụng - thay vì _; ví dụ. youtube:player-client" trở thành youtube:player_client"

Các trình trích xuất sau đây sử dụng tính năng này:

youtube

  • lang: Ưu tiên siêu dữ liệu được dịch (title, description v.v.) của mã ngôn ngữ này (phân biệt chữ hoa chữ thường). Theo mặc định, siêu dữ liệu ngôn ngữ chính của video được ưu tiên và dự phòng thành en đã dịch. Xem youtube/_base.py để biết danh sách mã ngôn ngữ nội dung được hỗ trợ
  • skip: Một hoặc nhiều hls, dash hoặc translated_subs để bỏ qua việc trích xuất các bảng kê khai m3u8, bảng kê khai dấu gạch ngang và phụ đề được dịch tự động tương ứng
  • player_client: Khách hàng để trích xuất dữ liệu video từ đó. Các khách hàng hiện có là web, web_safari, web_embedded, web_music, web_creator, mweb, ios, visionos, android, android_vr, tv, tv_downgradedtv_simply. Theo mặc định, visionos,web được sử dụng. Nếu không có thời gian chạy/công cụ JavaScript thì web được bỏ qua. Nếu cookie đăng nhập được chuyển tới yt-dlp thì web_embedded,tv_downgraded,web được sử dụng cho các tài khoản miễn phí và web_creator,tv_downgraded,web được sử dụng cho các tài khoản trả phí. các web_music khách hàng được thêm vào cho music.youtube.com URL khi cookie đăng nhập được sử dụng. các web_embedded ứng dụng khách được thêm vào cho các video bị giới hạn độ tuổi người xem nhưng đôi khi chỉ hoạt động thành công xung quanh giới hạn độ tuổi người xem (ví dụ: nếu video có thể nhúng được). các tv_downgradedweb_embedded khách hàng có thể được thêm vào như một phương án dự phòng nếu android_vr hoặc visionos không thể truy cập video. các web_creator khách hàng được thêm vào cho các video bị giới hạn độ tuổi nếu yêu cầu xác minh độ tuổi tài khoản. Một số khách hàng như web_creatorweb_music, yêu cầu một po_token để có thể tải xuống các định dạng của chúng. Một số khách hàng như web_creator, sẽ chỉ hoạt động với xác thực. Không phải tất cả khách hàng đều hỗ trợ xác thực qua cookie. Bạn có thể sử dụng default cho các máy khách mặc định hoặc bạn có thể sử dụng all cho tất cả khách hàng (không khuyến khích). Bạn có thể đặt tiền tố cho khách hàng bằng - để loại trừ nó, ví dụ: youtube:player_client=default,-web
  • player_skip: Bỏ qua một số yêu cầu mạng thường cần thiết để trích xuất mạnh mẽ. Một hoặc nhiều configs (bỏ qua cấu hình máy khách), webpage (bỏ qua trang web ban đầu), js (bỏ qua trình phát js), initial_data (bỏ qua dữ liệu ban đầu/yêu cầu ep tiếp theo). Mặc dù các tùy chọn này có thể giúp giảm số lượng yêu cầu cần thiết hoặc tránh một số giới hạn về tốc độ nhưng chúng có thể gây ra các vấn đề như thiếu định dạng hoặc siêu dữ liệu. Xem #860#12826 để biết thêm chi tiết
  • webpage_skip: Bỏ qua việc trích xuất dữ liệu trang web được nhúng. Một hoặc cả hai player_response, initial_data. Các tùy chọn này nhằm mục đích thử nghiệm và không bỏ qua bất kỳ yêu cầu mạng nào. Theo mặc định, cả hai đều không bị bỏ qua; tuy nhiên, nếu một player_js_version giá trị khác với actual được sử dụng thì webpage_skip=player_response được ngụ ý
  • webpage_client: Ứng dụng khách để sử dụng cho yêu cầu trang web video. Một trong web (mặc định) hoặc web_safari
  • player_params: Thông số trình phát YouTube để sử dụng cho các yêu cầu của trình phát. Sẽ ghi đè bất kỳ giá trị mặc định nào do yt-dlp đặt.
  • player_js_variant: Biến thể trình phát JavaScript được sử dụng để giải mã n/sig. Các biến thể được biết đến là: main, tcc, tce, es5, es6, es6_tcc, es6_tce, tv, tv_es6, phone, house. Mặc định là mainvà những cái khác là dành cho mục đích gỡ lỗi. Bạn có thể sử dụng actual đi theo những gì được quy định bởi trang web
  • player_js_version: Phiên bản trình phát JavaScript được sử dụng để giải mã n/sig, ở định dạng signature_timestamp@hash (ví dụ: 20348@0004de42). Mặc định là sử dụng những gì được trang web quy định và có thể được chọn bằng actual. Sử dụng bất kỳ giá trị nào khác sẽ ngụ ý webpage_skip=player_response
  • comment_sort: top hoặc new (mặc định) - chọn chế độ sắp xếp bình luận (bên YouTube)
  • max_comments: Giới hạn số lượng bình luận được thu thập. Danh sách các số nguyên đại diện được phân tách bằng dấu phẩy max-comments,max-parents,max-replies,max-replies-per-thread,max-depth. Mặc định là all,all,all,all,all
    • A max-depth giá trị của 1 sẽ loại bỏ tất cả các câu trả lời, bất kể max-replies hoặc max-replies-per-thread giá trị đã cho
    • Ví dụ: all,all,1000,10,2 sẽ nhận được tổng cộng tối đa 1000 câu trả lời, với tối đa 10 câu trả lời cho mỗi chuỗi và chỉ có 2 cấp độ chuyên sâu (tức là các nhận xét cấp cao nhất cộng với các câu trả lời ngay lập tức của họ). 1000,all,100 sẽ nhận được tối đa 1000 bình luận, với tổng số tối đa 100 câu trả lời
  • formats: Thay đổi các loại định dạng cần trả về. dashy (chuyển đổi HTTP thành DASH), duplicate (nội dung giống hệt nhau nhưng URL hoặc giao thức khác nhau; bao gồm dashy), incomplete (không thể tải xuống hoàn toàn - dấu gạch ngang trực tiếp và sau trực tiếp, m3u8 sau trực tiếp và https thích ứng trực tiếp mà không có --live-from-start), missing_pot (bao gồm các định dạng yêu cầu Mã thông báo PO nhưng bị thiếu)
  • innertube_host: Máy chủ Innertube API để sử dụng cho tất cả các yêu cầu API; ví dụ: studio.youtube.com, youtubei.googleapis.com. Lưu ý rằng cookie được xuất từ một tên miền phụ sẽ không hoạt động trên các tên miền phụ khác
  • innertube_key: Phím Innertube API để sử dụng cho tất cả các yêu cầu API. Theo mặc định, không có phím API nào được sử dụng
  • raise_incomplete_data: Incomplete Data Received gây ra lỗi thay vì báo cáo cảnh báo
  • data_sync_id: Ghi đè ID đồng bộ hóa dữ liệu của tài khoản được sử dụng trong các yêu cầu Innertube API. Điều này có thể cần thiết nếu bạn đang sử dụng tài khoản với youtube:player_skip=webpage,configs hoặc youtubetab:skip=webpage
  • visitor_data: Ghi đè Dữ liệu khách truy cập được sử dụng trong các yêu cầu Innertube API. Điều này nên được sử dụng với player_skip=webpage,configs và không có cookie. Lưu ý: điều này có thể có tác dụng phụ nếu sử dụng không đúng cách. Nếu muốn có một phiên từ trình duyệt, thay vào đó bạn nên chuyển cookie (có chứa ID khách truy cập)
  • po_token: (Các) Mã thông báo Bằng chứng Xuất xứ (PO) để sử dụng. Danh sách Mã thông báo PO được phân tách bằng dấu phẩy ở định dạng CLIENT.CONTEXT+PO_TOKEN, ví dụ: youtube:po_token=web.gvs+XXX,web.player=XXX,web_safari.gvs+YYY. Bối cảnh có thể là bất kỳ gvs (URL máy chủ video của Google), player (Yêu cầu trình phát Innertube) hoặc subs (Phụ đề)
  • pot_trace: Bật tính năng ghi nhật ký gỡ lỗi để tìm nạp Mã thông báo PO. Hoặc true hoặc false (mặc định)
  • fetch_pot: Chính sách sử dụng để tìm nạp PO Token từ nhà cung cấp. Một trong always (luôn thử tìm nạp Mã thông báo PO bất kể khách hàng có yêu cầu mã thông báo PO cho ngữ cảnh nhất định hay không), never (không bao giờ lấy Mã thông báo PO) hoặc auto (mặc định; chỉ tìm nạp Mã thông báo PO nếu khách hàng yêu cầu một mã cho ngữ cảnh nhất định)
  • jsc_trace: Bật tính năng ghi nhật ký gỡ lỗi để tìm nạp Thử thách JS. Hoặc true hoặc false (mặc định)
  • use_ad_playback_context: Bỏ qua quảng cáo đầu video để loại bỏ thời gian chờ bắt buộc trước khi tải xuống. KHÔNG sử dụng tùy chọn này khi chuyển cookie tài khoản trả phí sang yt-dlp vì nó sẽ làm mất các định dạng trả phí. Chỉ có tác dụng với mwebweb_music khách hàng người chơi. Hoặc true hoặc false (mặc định)

youtube-ejs

  • jitless: Chạy các công cụ JavaScript được hỗ trợ ở chế độ không có JIT. Thời gian chạy được hỗ trợ là deno, nodebun. Cung cấp bảo mật tốt hơn với chi phí hiệu suất/tốc độ. Hãy lưu ý rằng nodebun vẫn được coi là không an toàn. Hoặc true hoặc false (mặc định)

youtubepot-webpo

  • bind_to_visitor_id: Có nên sử dụng ID khách truy cập thay vì Dữ liệu khách truy cập để lưu mã thông báo WebPO vào bộ nhớ đệm hay không. Hoặc true (mặc định) hoặc false

youtubetab (danh sách phát, kênh, nguồn cấp dữ liệu YouTube, v.v.)

  • skip: Một hoặc nhiều webpage (bỏ qua tải xuống trang web ban đầu), authcheck (cho phép tải xuống danh sách phát yêu cầu xác thực khi không tải xuống trang web ban đầu. Điều này có thể gây ra hành vi không mong muốn, hãy xem #1122 để biết thêm chi tiết)
  • approximate_date: Trích xuất gần đúng upload_datetimestamp trong danh sách phát phẳng. Điều này có thể khiến các bộ lọc dựa trên ngày hơi bị tắt

chung chung

  • fragment_query: Chuyển bất kỳ truy vấn nào trong URL tệp kê khai mpd/m3u8 tới các đoạn của chúng nếu không có giá trị nào được cung cấp hoặc áp dụng chuỗi truy vấn được cung cấp dưới dạng fragment_query=VALUE. Lưu ý rằng nếu luồng có khóa HLS AES-128 thì các tham số truy vấn cũng sẽ được chuyển đến URI khóa, trừ khi key_query extractor-arg được chuyển hoặc trừ khi URI khóa bên ngoài được cung cấp thông qua hls_key trình trích xuất-arg. Không áp dụng cho ffmpeg
  • variant_query: Chuyển truy vấn URL m3u8 chính sang các URL danh sách phát biến thể của nó nếu không có giá trị nào được cung cấp hoặc áp dụng chuỗi truy vấn được cung cấp dưới dạng variant_query=VALUE
  • key_query: Chuyển truy vấn URL m3u8 chính tới URI khóa giải mã HLS AES-128 của nó nếu không có giá trị nào được cung cấp hoặc nếu không thì áp dụng chuỗi truy vấn được cung cấp dưới dạng key_query=VALUE. Lưu ý rằng điều này sẽ không có hiệu lực nếu URI chính được cung cấp thông qua hls_key trình trích xuất-arg. Không áp dụng cho ffmpeg
  • hls_key: URI khóa HLS AES-128 hoặc khóa (dưới dạng hex) và tùy chọn IV (dưới dạng hex), ở dạng (URI|KEY)[,IV]; ví dụ. generic:hls_key=ABCDEF1234567980,0xFEDCBA0987654321. Việc chuyển bất kỳ giá trị nào trong số này sẽ buộc sử dụng trình tải xuống HLS gốc và ghi đè các giá trị tương ứng có trong danh sách phát m3u8
  • is_live: Bỏ qua phát hiện HLS trực tiếp và cài đặt thủ công live_status - một giá trị của false sẽ thiết lập not_live, mọi giá trị khác (hoặc không có giá trị) sẽ được đặt is_live
  • impersonate: (Các) mục tiêu để thử và mạo danh yêu cầu trang web ban đầu; ví dụ. generic:impersonate=safari,chrome-110. sử dụng generic:impersonate để mạo danh bất kỳ mục tiêu có sẵn nào và sử dụng generic:impersonate=false để tắt tính năng mạo danh (mặc định)

vikichannel

  • video_types: Các loại video để tải xuống - một hoặc nhiều episodes, movies, clips, trailers

youtubewebarchive

  • check_all: Cố gắng kiểm tra nhiều hơn với chi phí là nhiều yêu cầu hơn. Một hoặc nhiều thumbnails, captures

trò chơi giật gân

  • comment_sort: hot (mặc định), you (cần có cookie), top, new - chọn chế độ sắp xếp bình luận (bên phía GameJolt)

ngôi sao nóng bỏng

  • res: độ phân giải cần bỏ qua - một hoặc nhiều sd, hd, fhd
  • vcodec: vcodec cần bỏ qua - một hoặc nhiều h264, h265, dvh265
  • dr: phạm vi động cần bỏ qua - một hoặc nhiều sdr, hdr10, dv

instagram

  • app_id: Giá trị của X-IG-App-ID tiêu đề được sử dụng cho các yêu cầu API. Có thể là số ID thực tế, ioshoặc web (mặc định)

niconicochannelplus

  • max_comments: Số lượng bình luận tối đa cần trích xuất - mặc định là 120

tiktok

  • api_hostname: Tên máy chủ để sử dụng cho cuộc gọi API trên thiết bị di động, ví dụ: api22-normal-c-alisg.tiktokv.com
  • app_name: Tên ứng dụng mặc định để sử dụng với cuộc gọi API trên thiết bị di động, ví dụ: trill
  • app_version: Phiên bản ứng dụng mặc định để sử dụng với cuộc gọi API trên thiết bị di động - phải được đặt cùng với manifest_app_version, ví dụ: 34.1.2
  • manifest_app_version: Phiên bản ứng dụng số mặc định để sử dụng với cuộc gọi API trên thiết bị di động, ví dụ: 2023401020
  • aid: ID ứng dụng mặc định để sử dụng với cuộc gọi API trên thiết bị di động, ví dụ: 1180
  • app_info: Cho phép trích xuất API trên thiết bị di động bằng một hoặc nhiều chuỗi thông tin ứng dụng ở định dạng <iid>/[app_name]/[app_version]/[manifest_app_version]/[aid], ở đâu iid là ID cài đặt ứng dụng duy nhất. iid là giá trị bắt buộc duy nhất; tất cả các giá trị khác và / dấu phân cách có thể được bỏ qua, ví dụ: tiktok:app_info=1234567890123456789 hoặc tiktok:app_info=123,456/trill///1180,789//34.0.1/340001
  • device_id: Cho phép trích xuất API di động bằng ID thiết bị chính hãng để sử dụng với các cuộc gọi di động API. Mặc định là chuỗi 19 chữ số ngẫu nhiên

kênh rokfin

  • tab: Tab nào cần tải xuống - một trong new, top, videos, podcasts, streams, stacks

Twitter

  • api: Chọn một trong graphql (mặc định), legacy hoặc syndication dưới dạng API để trích xuất tweet. Không có hiệu lực nếu đăng nhập

stacommu, wrestleuniverse

  • device_id: Giá trị UUID do trang web chỉ định và dùng để thực thi giới hạn thiết bị đối với nội dung phát trực tiếp trả phí. Có thể được tìm thấy trong bộ nhớ cục bộ của trình duyệt

co giật

  • client_id: Giá trị ID khách hàng sẽ được gửi cùng với các yêu cầu GraphQL, ví dụ: twitch:client_id=kimne78kx3ncx6brgo4mv6wki5h1ko

nhkradirulive (NHK らじる★らじる LIVE)

  • area: Biến thể khu vực nào cần trích xuất. Các khu vực hợp lệ là: sapporo, sendai, tokyo, nagoya, osaka, hiroshima, matsuyama, fukuoka. Mặc định là tokyo

nflplusreplay

  • type: Loại phát lại trò chơi để trích xuất. Các loại hợp lệ là: full_game, full_game_spanish, condensed_gameall_22. Bạn có thể sử dụng all để trích xuất tất cả các loại phát lại có sẵn, đây là mặc định

jiocinema

  • refresh_token: Cái refreshToken UUID từ bộ nhớ cục bộ của trình duyệt có thể được chuyển qua để kéo dài thời gian sử dụng phiên đăng nhập của bạn khi đăng nhập bằng token làm tên người dùng và accessToken từ bộ nhớ cục bộ của trình duyệt dưới dạng mật khẩu

jiosaavn

  • bitrate: Tốc độ bit âm thanh theo yêu cầu. Một hoặc nhiều 16, 32, 64, 128, 320. Mặc định là 128,320

afreecatvlive

  • cdn: Một hoặc nhiều ID CDN để sử dụng với lệnh gọi API cho URL luồng, ví dụ: gcp_cdn, gs_cdn_pc_app, gs_cdn_mobile_web, gs_cdn_pc_web

đám mây âm thanh

  • formats: Các định dạng yêu cầu từ API. Các giá trị được yêu cầu phải ở định dạng {protocol}_{codec}, ví dụ: hls_opus,http_aac. các * ký tự có chức năng như một ký tự đại diện, ví dụ: *_mp3và có thể được chuyển qua chính nó để yêu cầu tất cả các định dạng. Các giao thức được biết đến bao gồm http, hlshls-aes; codec đã biết bao gồm aac, opusmp3. Bản gốc download các định dạng luôn được trích xuất. Mặc định là http_aac,hls_aac,http_opus,hls_opus,http_mp3,hls_mp3

orfon (orf:on)

  • prefer_segments_playlist: Ưu tiên danh sách phát gồm các phân đoạn chương trình thay vì một video hoàn chỉnh khi có sẵn. Nếu muốn phân đoạn riêng lẻ, hãy sử dụng --concat-playlist never --extractor-args "orfon:prefer_segments_playlist"

bilibili

  • prefer_multi_flv: Thích trích xuất các định dạng flv hơn mp4 đối với các video cũ hơn vẫn cung cấp các định dạng cũ

dòng sonyliv

  • sort_order: Thứ tự sắp xếp tập để trích xuất loạt phim - một trong asc (tăng dần, cũ nhất trước) hoặc desc (giảm dần, mới nhất xếp trước). Mặc định là asc

vệt

  • api_key: Phím API cho X-Streaks-Api-Key tiêu đề

tver

  • backend: Phần phụ trợ API để sử dụng cho việc trích xuất - một trong streaks (mặc định) hoặc brightcove (không dùng nữa)

vimeo

  • client: Ứng dụng khách để trích xuất dữ liệu video từ đó. Các khách hàng hiện có là androidweb. Chỉ có một khách hàng có thể được sử dụng. các web client được sử dụng theo mặc định và nó chỉ hoạt động với cookie tài khoản hoặc thông tin đăng nhập. các android ứng dụng khách chỉ hoạt động với mã thông báo OAuth đã lưu vào bộ nhớ đệm trước đó
  • original_format_policy: Chính sách về thời điểm thử giải nén các định dạng gốc. Một trong always, neverhoặc auto. Mặc định auto chính sách cố gắng tránh vượt quá giới hạn tốc độ API của ứng dụng khách web bằng cách chỉ đưa ra yêu cầu bổ sung khi Vimeo công khai khả năng tải xuống của video

Zan

  • split_angles: Chia luồng nhiều góc thành các định dạng góc riêng biệt. Buộc mã hóa lại luồng video trong khi tải xuống và yêu cầu ffmpeg. Hoặc true hoặc false (mặc định)

Lưu ý: Các tùy chọn này có thể được thay đổi/xóa trong tương lai mà không cần quan tâm đến khả năng tương thích ngược

PLUGIN

Lưu ý rằng tất cả các plugin được nhập ngay cả khi không được gọi và điều đó không có kiểm tra được thực hiện trên mã plugin. Bạn phải tự chịu rủi ro khi sử dụng plugin và chỉ khi bạn tin tưởng vào mã!

Các plugin có thể là <type>s extractor hoặc postprocessor.

  • Các plugin trình trích xuất không cần phải được bật từ CLI và được tự động gọi khi URL đầu vào phù hợp với nó.
  • Các plugin giải nén được ưu tiên hơn các trình giải nén tích hợp.
  • Các plugin của bộ xử lý hậu kỳ có thể được gọi bằng cách sử dụng --use-postprocessor NAME.

Các plugin được tải từ các gói không gian tên yt_dlp_plugins.extractoryt_dlp_plugins.postprocessor.

Nói cách khác, cấu trúc tệp trên đĩa trông giống như sau:

    yt_dlp_plugins/
        extractor/
            myplugin.py
        postprocessor/
            myplugin.py

yt-dlp tìm kiếm những thứ này yt_dlp_plugins thư mục không gian tên ở nhiều vị trí (xem bên dưới) và tải các plugin từ tất cả của họ. Đặt biến môi trường YTDLP_NO_PLUGINS đến một cái gì đó không trống để vô hiệu hóa hoàn toàn việc tải plugin.

Xem wiki cho một số plugin đã biết

Cài đặt plugin

Plugin có thể được cài đặt bằng nhiều phương pháp và vị trí khác nhau.

  1. Thư mục cấu hình: Các gói plugin (chứa một yt_dlp_plugins thư mục không gian tên) có thể được thả vào tiêu chuẩn sau vị trí cấu hình:

    • Plugin người dùng
      • ${XDG_CONFIG_HOME}/yt-dlp/plugins/<package name>/yt_dlp_plugins/ (được khuyến nghị trên Linux/macOS)
      • ${XDG_CONFIG_HOME}/yt-dlp-plugins/<package name>/yt_dlp_plugins/
      • ${APPDATA}/yt-dlp/plugins/<package name>/yt_dlp_plugins/ (được khuyến nghị trên Windows)
      • ${APPDATA}/yt-dlp-plugins/<package name>/yt_dlp_plugins/
      • ~/.yt-dlp/plugins/<package name>/yt_dlp_plugins/
      • ~/yt-dlp-plugins/<package name>/yt_dlp_plugins/
    • Plugin hệ thống
      • /etc/yt-dlp/plugins/<package name>/yt_dlp_plugins/
      • /etc/yt-dlp-plugins/<package name>/yt_dlp_plugins/
  2. Vị trí có thể thực thi: Các gói plugin có thể được cài đặt tương tự trong một yt-dlp-plugins thư mục dưới vị trí thực thi (được khuyến nghị cho cài đặt di động):

    • Nhị phân: ở đâu <root-dir>/yt-dlp.exe, <root-dir>/yt-dlp-plugins/<package name>/yt_dlp_plugins/
    • Nguồn: ở đâu <root-dir>/yt_dlp/__main__.py, <root-dir>/yt-dlp-plugins/<package name>/yt_dlp_plugins/
  3. pip và các vị trí khác trong PYTHONPATH

    • Các gói plugin có thể được cài đặt và quản lý bằng cách sử dụng pip. Xem plugin yt-dlp-mẫu cho một ví dụ.
      • Lưu ý: các tệp plugin giữa các gói plugin được cài đặt bằng pip phải có tên tệp duy nhất.
    • Bất kỳ đường dẫn nào trong PYTHONPATH được tìm kiếm trong yt_dlp_plugins thư mục không gian tên.
      • Lưu ý: Điều này không áp dụng cho các bản dựng Pyinstaller.

.zip, .egg.whl tài liệu lưu trữ có chứa một yt_dlp_plugins thư mục không gian tên trong thư mục gốc của chúng cũng được hỗ trợ dưới dạng gói plugin.

  • ví dụ. ${XDG_CONFIG_HOME}/yt-dlp/plugins/mypluginpkg.zip ở đâu mypluginpkg.zip chứa yt_dlp_plugins/<type>/myplugin.py

Chạy yt-dlp với --verbose để kiểm tra xem plugin đã được tải chưa.

Phát triển plugin

Xem plugin yt-dlp-mẫu repo cho gói plugin mẫu và Phát triển plugin phần hướng dẫn phát triển plugin trên wiki.

Tất cả các lớp công khai có tên kết thúc bằng IE/PP được nhập từ mỗi tệp cho trình trích xuất và bộ xử lý hậu kỳ tương ứng. Điều này tôn trọng tiền tố gạch dưới (ví dụ: _MyBasePluginIE là riêng tư) và __all__. Tương tự, các mô-đun có thể được loại trừ bằng cách đặt trước tên mô-đun một dấu gạch dưới (ví dụ: _myplugin.py).

Để thay thế một trình trích xuất hiện có bằng một lớp con của một trình trích xuất, hãy đặt plugin_name đối số từ khóa lớp (ví dụ: class MyPluginIE(ABuiltInIE, plugin_name='myplugin') sẽ thay thế ABuiltInIE với MyPluginIE). Vì trình trích xuất thay thế trình trích xuất lớp cha nên bạn nên loại trừ trình trích xuất lớp con khỏi được nhập riêng bằng cách đặt nó ở chế độ riêng tư bằng một trong các phương pháp được mô tả ở trên.

Nếu bạn là tác giả plugin, hãy thêm plugin yt-dlp làm chủ đề cho kho lưu trữ của bạn để có thể khám phá.

Xem Hướng dẫn dành cho nhà phát triển về cách viết và kiểm tra một trình giải nén.

NHẮP YT-DLP

yt-dlp nỗ lực hết sức để trở thành một chương trình dòng lệnh tốt và do đó có thể gọi được từ bất kỳ ngôn ngữ lập trình nào.

Chương trình của bạn nên tránh phân tích cú pháp thiết bị xuất chuẩn thông thường vì chúng có thể thay đổi trong các phiên bản sau. Thay vào đó, họ nên sử dụng các tùy chọn như -J, --print, --progress-template, --exec vv để tạo đầu ra của bảng điều khiển mà bạn có thể tái tạo và phân tích cú pháp một cách đáng tin cậy.

Từ chương trình Python, bạn có thể nhúng yt-dlp theo cách mạnh mẽ hơn, như sau:

from yt_dlp import YoutubeDL

URLS = ['https://www.youtube.com/watch?v=YE7VzlLtp-4']
with YoutubeDL() as ydl:
    ydl.download(URLS)

Rất có thể, bạn sẽ muốn sử dụng nhiều tùy chọn khác nhau. Để biết danh sách các tùy chọn có sẵn, hãy xem yt_dlp/YoutubeDL.py hoặc help(yt_dlp.YoutubeDL) trong vỏ Python. Nếu bạn đã quen thuộc với CLI, bạn có thể sử dụng devscripts/cli_to_api.py để dịch bất kỳ chuyển đổi CLI nào sang YoutubeDL thông số.

Mẹo: Nếu bạn đang chuyển mã của mình từ youtube-dl sang yt-dlp, một điểm quan trọng cần lưu ý là chúng tôi không đảm bảo giá trị trả về của YoutubeDL.extract_info có thể tuần tự hóa JSON hoặc thậm chí là một từ điển. Nó sẽ giống như từ điển, nhưng nếu bạn muốn đảm bảo nó là một từ điển có thể tuần tự hóa, hãy chuyển nó qua YoutubeDL.sanitize_info như thể hiện trong ví dụ dưới đây

Nhúng ví dụ

Trích xuất thông tin

import json
import yt_dlp

URL = 'https://www.youtube.com/watch?v=YE7VzlLtp-4'

# ℹ️ See help(yt_dlp.YoutubeDL) for a list of available options and public functions
ydl_opts = {}
with yt_dlp.YoutubeDL(ydl_opts) as ydl:
    info = ydl.extract_info(URL, download=False)

    # ℹ️ ydl.sanitize_info makes the info json-serializable
    print(json.dumps(ydl.sanitize_info(info)))

Tải xuống bằng thông tin-JSON

import yt_dlp

INFO_FILE = 'path/to/video.info.json'

with yt_dlp.YoutubeDL() as ydl:
    error_code = ydl.download_with_info_file(INFO_FILE)

print('Some videos failed to download' if error_code
      else 'All videos successfully downloaded')

Trích xuất âm thanh

import yt_dlp

URLS = ['https://www.youtube.com/watch?v=YE7VzlLtp-4']

ydl_opts = {
    'format': 'm4a/bestaudio/best',
    # ℹ️ See help(yt_dlp.postprocessor) for a list of available Postprocessors and their arguments
    'postprocessors': [{  # Extract audio using ffmpeg
        'key': 'FFmpegExtractAudio',
        'preferredcodec': 'm4a',
    }]
}

with yt_dlp.YoutubeDL(ydl_opts) as ydl:
    error_code = ydl.download(URLS)

Lọc video

import yt_dlp

URLS = ['https://www.youtube.com/watch?v=YE7VzlLtp-4']

def longer_than_a_minute(info, *, incomplete):
    """Download only videos longer than a minute (or with unknown duration)"""
    duration = info.get('duration')
    if duration and duration < 60:
        return 'The video is too short'

ydl_opts = {
    'match_filter': longer_than_a_minute,
}

with yt_dlp.YoutubeDL(ydl_opts) as ydl:
    error_code = ydl.download(URLS)

Thêm logger và móc tiến trình

import yt_dlp

URLS = ['https://www.youtube.com/watch?v=YE7VzlLtp-4']

class MyLogger:
    def debug(self, msg):
        # For compatibility with youtube-dl, both debug and info are passed into debug
        # You can distinguish them by the prefix '[debug] '
        if msg.startswith('[debug] '):
            pass
        else:
            self.info(msg)

    def info(self, msg):
        pass

    def warning(self, msg):
        pass

    def error(self, msg):
        print(msg)


# ℹ️ See "progress_hooks" in help(yt_dlp.YoutubeDL)
def my_hook(d):
    if d['status'] == 'finished':
        print('Done downloading, now post-processing ...')


ydl_opts = {
    'logger': MyLogger(),
    'progress_hooks': [my_hook],
}

with yt_dlp.YoutubeDL(ydl_opts) as ydl:
    ydl.download(URLS)

Thêm một PostProcessor tùy chỉnh

import yt_dlp

URLS = ['https://www.youtube.com/watch?v=YE7VzlLtp-4']

# ℹ️ See help(yt_dlp.postprocessor.PostProcessor)
class MyCustomPP(yt_dlp.postprocessor.PostProcessor):
    def run(self, info):
        self.to_screen('Doing stuff')
        return [], info


with yt_dlp.YoutubeDL() as ydl:
    # ℹ️ "when" can take any value in yt_dlp.utils.POSTPROCESS_WHEN
    ydl.add_post_processor(MyCustomPP(), when='pre_process')
    ydl.download(URLS)

Sử dụng bộ chọn định dạng tùy chỉnh

import yt_dlp

URLS = ['https://www.youtube.com/watch?v=YE7VzlLtp-4']

def format_selector(ctx):
    """ Select the best video and the best audio that won't result in an mkv.
    NOTE: This is just an example and does not handle all cases """

    # formats are already sorted worst to best
    formats = ctx.get('formats')[::-1]

    # acodec='none' means there is no audio
    best_video = next(f for f in formats
                      if f['vcodec'] != 'none' and f['acodec'] == 'none')

    # find compatible audio extension
    audio_ext = {'mp4': 'm4a', 'webm': 'webm'}[best_video['ext']]
    # vcodec='none' means there is no video
    best_audio = next(f for f in formats if (
        f['acodec'] != 'none' and f['vcodec'] == 'none' and f['ext'] == audio_ext))

    # These are the minimum required fields for a merged format
    yield {
        'format_id': f'{best_video["format_id"]}+{best_audio["format_id"]}',
        'ext': best_video['ext'],
        'requested_formats': [best_video, best_audio],
        # Must be + separated list of protocols
        'protocol': f'{best_video["protocol"]}+{best_audio["protocol"]}'
    }


ydl_opts = {
    'format': format_selector,
}

with yt_dlp.YoutubeDL(ydl_opts) as ydl:
    ydl.download(URLS)

NHỮNG THAY ĐỔI TỪ YOUTUBE-DL

Tính năng mới

  • Rẽ nhánh từ yt-dlc@f9401f2 và sáp nhập với youtube-dl@a08f2b7 (ngoại lệ)

  • Tích hợp khối nhà tài trợ: Bạn có thể đánh dấu/xóa phần nhà tài trợ trong video YouTube bằng cách sử dụng Khối tài trợ API

  • Sắp xếp định dạng: Các tùy chọn sắp xếp định dạng mặc định đã được thay đổi để độ phân giải cao hơn và codec tốt hơn giờ đây sẽ được ưu tiên thay vì chỉ sử dụng tốc độ bit lớn hơn. Hơn nữa, bây giờ bạn có thể chỉ định thứ tự sắp xếp bằng cách sử dụng -S. Điều này cho phép lựa chọn định dạng dễ dàng hơn nhiều so với những gì có thể bằng cách sử dụng --format (ví dụ)

  • Hợp nhất với animelover1984/youtube-dl: Bạn nhận được hầu hết các tính năng và cải tiến từ animelover1984/youtube-dl bao gồm cả --write-comments, BiliBiliSearch, BilibiliChannel, Nhúng hình thu nhỏ vào mp4/ogg/opus, thông tin danh sách phát, v.v. Xem #31 để biết chi tiết.

  • Cải tiến của YouTube:

    • Hỗ trợ Clip, Truyện (ytstories:<channel UCID>), Tìm kiếm (bao gồm các bộ lọc)*, Tìm kiếm âm nhạc trên YouTube, tìm kiếm theo kênh cụ thể, Tiền tố tìm kiếm (ytsearch:)*, Hỗn hợp và Nguồn cấp dữ liệu (:ytfav, :ytwatchlater, :ytsubs, :ythistory, :ytrec, :ytnotif)
    • Sửa chữa cho điều chỉnh dựa trên n-sig *
    • Tải xuống các buổi phát trực tiếp ngay từ đầu bằng cách sử dụng --live-from-start (thực nghiệm)
    • URL kênh tải xuống tất cả video tải lên của kênh, bao gồm cả video ngắn và video trực tiếp
  • Cookie từ trình duyệt: Cookie có thể được trích xuất tự động từ tất cả các trình duyệt web chính bằng cách sử dụng --cookies-from-browser BROWSER[+KEYRING][:PROFILE][::CONTAINER]

  • Phạm vi thời gian tải xuống: Video có thể được tải xuống một phần dựa trên dấu thời gian hoặc chương bằng cách sử dụng --download-sections

  • Chia video theo chương: Video có thể được chia thành nhiều tệp dựa trên các chương bằng cách sử dụng --split-chapters

  • Tải xuống đoạn đa luồng: Tải xuống song song nhiều đoạn video m3u8/mpd. sử dụng --concurrent-fragments (-N) tùy chọn để đặt số lượng chủ đề được sử dụng

  • Máy vắt mới và cố định: Nhiều trình trích xuất mới đã được thêm vào và rất nhiều trình trích xuất hiện có đã được sửa. Xem nhật ký thay đổi hoặc danh sách các trang web được hỗ trợ

  • MSO mới: Philo, Spectrum, SlingTV, Cablevision, RCN, v.v.

  • Trích xuất phụ đề từ bảng kê khai: Phụ đề có thể được trích xuất từ các tệp kê khai phương tiện truyền phát trực tuyến. Xem cam kết/be6202f để biết chi tiết

  • Nhiều đường dẫn và mẫu đầu ra: Bạn có thể đưa ra những cách khác nhau mẫu đầu ra và đường dẫn tải xuống cho các loại tệp khác nhau. Bạn cũng có thể đặt đường dẫn tạm thời nơi các tệp trung gian được tải xuống bằng cách sử dụng --paths (-P)

  • Cấu hình di động: Các tập tin cấu hình được tải tự động từ thư mục gốc và thư mục gốc. Xem CẤU HÌNH để biết chi tiết

  • Cải tiến mẫu đầu ra: Các mẫu đầu ra hiện có thể có định dạng ngày giờ, độ lệch số, truyền tải đối tượng, v.v. Xem mẫu đầu ra để biết chi tiết. Thậm chí những hoạt động nâng cao hơn cũng có thể được thực hiện với sự trợ giúp của --parse-metadata--replace-in-metadata

  • Các lựa chọn mới khác: Nhiều tùy chọn mới đã được thêm vào như --alias, --print, --concat-playlist, --wait-for-video, --retry-sleep, --sleep-requests, --convert-thumbnails, --force-download-archive, --force-overwrites, --break-match-filters v.v.

  • Cải tiến: Regex và các toán tử khác trong --format/--match-filters, nhiều --postprocessor-args--downloader-args, kiểm tra kho lưu trữ nhanh hơn, hơn thế nữa tùy chọn lựa chọn định dạng, hợp nhất nhiều video/âm thanh, nhiều --config-locations, --exec ở các giai đoạn khác nhau, v.v.

  • Plugin: Trình trích xuất và PostProcessors có thể được tải từ một tệp bên ngoài. Xem plugin để biết chi tiết

  • Tự cập nhật: Các bản phát hành có thể được cập nhật bằng cách sử dụng yt-dlp -Uvà hạ cấp bằng cách sử dụng --update-to nếu được yêu cầu

  • Bản dựng tự động: Bản dựng hàng đêm/chính có thể được sử dụng với --update-to nightly--update-to master

Xem nhật ký thay đổi hoặc cam kết để biết danh sách đầy đủ các thay đổi

Các tính năng được đánh dấu bằng * đã được chuyển trở lại youtube-dl

Sự khác biệt trong hành vi mặc định

Một số tùy chọn mặc định của yt-dlp khác với youtube-dl và youtube-dlc:

  • yt-dlp chỉ hỗ trợ Python 3.10+và sẽ xóa hỗ trợ cho nhiều phiên bản hơn khi chúng trở thành EOL; trong khi youtube-dl vẫn hỗ trợ Python 2.6+ và 3.2+
  • Các tùy chọn --auto-number (-A), --title (-t) và --literal (-l), không còn hoạt động nữa. Xem tùy chọn đã xóa để biết chi tiết
  • avconv không được hỗ trợ thay thế cho ffmpeg
  • yt-dlp lưu trữ các tệp cấu hình ở các vị trí hơi khác với youtube-dl. Xem CẤU HÌNH để có danh sách các vị trí chính xác
  • Mặc định mẫu đầu ra%(title)s [%(id)s].%(ext)s. Không có lý do thực sự cho sự thay đổi này. Điều này đã được thay đổi trước khi yt-dlp được công khai và hiện tại không có kế hoạch thay đổi lại thành %(title)s-%(id)s.%(ext)s. Thay vào đó, bạn có thể sử dụng --compat-options filename
  • Mặc định sắp xếp định dạng khác với youtube-dl và thích độ phân giải cao hơn và codec tốt hơn thay vì tốc độ bit cao hơn. Bạn có thể sử dụng --format-sort tùy chọn để thay đổi điều này thành bất kỳ thứ tự nào bạn thích hoặc sử dụng --compat-options format-sort để sử dụng thứ tự sắp xếp của youtube-dl. Các phiên bản cũ hơn của yt-dlp ưa thích VP9 hơn do khả năng tương thích rộng hơn; bạn có thể sử dụng --compat-options prefer-vp9-sort để trở lại tùy chọn sắp xếp định dạng đó. Hai tùy chọn tương thích này không thể được sử dụng cùng nhau
  • Bộ chọn định dạng mặc định là bv*+ba/b. Điều này có nghĩa là nếu tìm thấy định dạng video + âm thanh kết hợp tốt hơn định dạng chỉ có video tốt nhất thì định dạng trước sẽ được ưu tiên. sử dụng -f bv+ba/b hoặc --compat-options format-spec để hoàn nguyên điều này
  • Không giống như youtube-dlc, yt-dlp không cho phép hợp nhất nhiều luồng âm thanh/video vào một tệp theo mặc định (vì điều này xung đột với việc sử dụng -f bv*+ba). Nếu cần, tính năng này phải được kích hoạt bằng cách sử dụng --audio-multistreams--video-multistreams. Bạn cũng có thể sử dụng --compat-options multistreams để kích hoạt cả hai
  • --no-abort-on-error được bật theo mặc định. sử dụng --abort-on-error hoặc --compat-options abort-on-error thay vào đó hãy hủy bỏ các lỗi
  • Khi ghi các tệp siêu dữ liệu như hình thu nhỏ, mô tả hoặc infojson, thông tin tương tự (nếu có) cũng được ghi cho danh sách phát. sử dụng --no-write-playlist-metafiles hoặc --compat-options no-playlist-metafiles không ghi những tập tin này
  • --add-metadata đính kèm infojson để mkv các tệp ngoài việc ghi siêu dữ liệu khi được sử dụng với --write-info-json. sử dụng --no-embed-info-json hoặc --compat-options no-attach-info-json để hoàn nguyên điều này
  • Một số siêu dữ liệu được nhúng vào các trường khác nhau khi sử dụng --add-metadata so với youtube-dl. Đáng chú ý nhất, comment trường chứa webpage_urlsynopsis chứa description. bạn có thể sử dụng --parse-metadata để sửa đổi điều này theo ý thích của bạn hoặc sử dụng --compat-options embed-metadata để hoàn nguyên điều này
  • playlist_index hoạt động khác khi được sử dụng với các tùy chọn như --playlist-reverse--playlist-items. Xem #302 để biết chi tiết. Bạn có thể sử dụng --compat-options playlist-index nếu bạn muốn giữ hành vi trước đó
  • Đầu ra của -F được liệt kê ở một định dạng mới. sử dụng --compat-options list-formats để hoàn nguyên điều này
  • Cuộc trò chuyện trực tiếp (nếu có) được coi là phụ đề. sử dụng --sub-langs all,-live_chat để tải xuống tất cả phụ đề ngoại trừ trò chuyện trực tiếp. Bạn cũng có thể sử dụng --compat-options no-live-chat để ngăn chặn việc tải xuống bất kỳ cuộc trò chuyện/danmaku trực tiếp nào
  • URL kênh YouTube tải xuống tất cả các video tải lên của kênh. Để chỉ tải xuống các video trong một tab cụ thể, hãy chuyển URL của tab đó. Nếu kênh không hiển thị tab được yêu cầu thì sẽ xuất hiện lỗi. Ngoài ra, /live URL sẽ báo lỗi nếu không có video trực tiếp thay vì âm thầm tải xuống toàn bộ kênh. Bạn có thể sử dụng --compat-options no-youtube-channel-redirect để hoàn nguyên tất cả các chuyển hướng này
  • Các video không khả dụng cũng được liệt kê cho danh sách phát YouTube. sử dụng --compat-options no-youtube-unavailable-videos để loại bỏ cái này
  • Ngày tải lên được trích xuất từ YouTube là theo giờ UTC.
  • Nếu ffmpeg được sử dụng làm trình tải xuống, việc tải xuống và hợp nhất các định dạng sẽ diễn ra trong một bước duy nhất khi có thể. Sử dụng --compat-options no-direct-merge để hoàn nguyên điều này
  • Nhúng hình thu nhỏ vào mp4 được thực hiện bằng chất gây đột biến nếu có thể. sử dụng --compat-options embed-thumbnail-atomicparsley để buộc sử dụng AtomicParsley thay thế
  • Một số siêu dữ liệu nội bộ như tên tệp bị xóa theo mặc định khỏi infojson. sử dụng --no-clean-infojson hoặc --compat-options no-clean-infojson để hoàn nguyên điều này
  • Khi nào --embed-subs--write-subs được sử dụng cùng nhau, phụ đề được ghi vào đĩa và cũng được nhúng vào tệp phương tiện. Bạn có thể sử dụng chỉ --embed-subs để nhúng phần phụ và tự động xóa tệp riêng biệt. Xem #630 (bình luận) để biết thêm thông tin. --compat-options no-keep-subs có thể được sử dụng để hoàn nguyên điều này
  • certifi sẽ được sử dụng cho chứng chỉ gốc SSL, nếu được cài đặt. Nếu bạn muốn sử dụng chứng chỉ hệ thống (ví dụ: tự ký), hãy sử dụng --compat-options no-certifi
  • Việc loại bỏ các ký tự không hợp lệ trong tên tệp của yt-dlp khác/thông minh hơn so với youtube-dl. Bạn có thể sử dụng --compat-options filename-sanitization để trở lại hành vi của youtube-dl
  • (Hiện chưa được triển khai) yt-dlp cố gắng phân tích cú pháp đầu ra của trình tải xuống bên ngoài thành đầu ra tiến trình tiêu chuẩn nếu có thể. Bạn có thể sử dụng --compat-options no-external-downloader-progress để có được đầu ra của trình tải xuống như hiện trạng
  • Áp dụng phiên bản yt-dlp từ 2021.09.01 đến 2022.11.11 (bao gồm) --match-filters vào danh sách phát lồng nhau. Đây là tác dụng phụ ngoài ý muốn của 8f18ac và được cố định trong d7b460. sử dụng --compat-options playlist-match-filter để hoàn nguyên điều này
  • ước tính các phiên bản yt-dlp từ 2021.11.10 đến 2023.06.21 (bao gồm) filesize_approx giá trị cho các định dạng phân mảnh/tệp kê khai. Điều này đã được thêm vào để thuận tiện trong f2fe69, nhưng đã được hoàn nguyên trong 0dff8e do có khả năng cực kỳ thiếu chính xác của các giá trị ước tính. sử dụng --compat-options manifest-filesize-approx để tiếp tục trích xuất các giá trị ước tính
  • yt-dlp sử dụng chương trình phụ trợ máy khách HTTP hiện đại như requests. sử dụng --compat-options prefer-legacy-http-handler thích trình xử lý HTTP kế thừa (urllib) được sử dụng cho các yêu cầu HTTP tiêu chuẩn.
  • Các mô-đun phụ swfinterp, casefold được gỡ bỏ.
  • Vượt qua --simulate (hoặc gọi extract_info với download=False) không còn thay đổi lựa chọn định dạng mặc định. Xem #9843 để biết chi tiết.
  • yt-dlp không còn áp dụng thời gian sửa đổi của máy chủ cho các tệp đã tải xuống theo mặc định. sử dụng --mtime hoặc --compat-options mtime-by-default để hoàn nguyên điều này.

Để thuận tiện, có một số bí danh tùy chọn tương thích có sẵn để sử dụng:

  • --compat-options all: Sử dụng tất cả các tùy chọn tương thích (KHÔNG sử dụng cái này!)
  • --compat-options youtube-dl: Giống như --compat-options all,-multistreams,-playlist-match-filter,-manifest-filesize-approx,-allow-unsafe-ext,-prefer-vp9-sort,-allow-unsafe-exec-expansion
  • --compat-options youtube-dlc: Giống như --compat-options all,-no-live-chat,-no-youtube-channel-redirect,-playlist-match-filter,-manifest-filesize-approx,-allow-unsafe-ext,-prefer-vp9-sort,-allow-unsafe-exec-expansion
  • --compat-options 2021: Giống như --compat-options 2022,no-certifi,filename-sanitization
  • --compat-options 2022: Giống như --compat-options 2023,playlist-match-filter,no-external-downloader-progress,prefer-legacy-http-handler,manifest-filesize-approx
  • --compat-options 2023: Giống như --compat-options 2024,prefer-vp9-sort
  • --compat-options 2024: Giống như --compat-options 2025,mtime-by-default
  • --compat-options 2025: Hiện tại không làm gì cả. Sử dụng điều này để kích hoạt tất cả các tùy chọn tương thích trong tương lai

Việc sử dụng một trong các bí danh tùy chọn tương thích hàng năm sẽ ghim hành vi mặc định của yt-dlp về trạng thái ban đầu kết thúc của năm dương lịch đó.

Các tùy chọn tương thích sau đây khôi phục hành vi dễ bị tổn thương từ trước các bản vá bảo mật:

  • --compat-options allow-unsafe-ext: Cho phép tải xuống các tệp có bất kỳ tiện ích mở rộng nào (kể cả những tiện ích mở rộng không an toàn) (GHSA-79w7-vh3h-8g4j)

    :warning: Chỉ sử dụng nếu tải xuống tệp hợp lệ bị từ chối vì phần mở rộng của nó được phát hiện là không phổ biến

    Tùy chọn này có thể cho phép thực thi mã từ xa! Hãy xem xét mở một vấn đề thay vào đó!

  • --compat-options allow-unsafe-exec-expansion: Cái --exec tùy chọn cho phép sử dụng cú pháp mẫu đầu ra trong các lệnh của nó; tuy nhiên, vì lý do bảo mật, các chuyển đổi có thể được sử dụng bị hạn chế ở i/d (số thập phân có dấu), f (số thập phân dấu phẩy động) và q (trích dẫn shell). Các phiên bản yt-dlp từ 2021.04.11 đến 2026.03.17 (bao gồm) không áp dụng hạn chế này. Tùy chọn này hoàn nguyên hạn chế này

    :warning: Tùy chọn này có thể cho phép thực thi mã từ xa! Cân nhắc sử dụng %()q chuyển đổi trong mẫu lệnh thực thi của bạn cho bất kỳ giá trị chuỗi nào.

Tùy chọn không dùng nữa

Đây là tất cả các tùy chọn không được dùng nữa và giải pháp thay thế hiện tại để đạt được hiệu quả tương tự

Tùy chọn gần như dư thừa

Mặc dù các tùy chọn này gần giống như các tùy chọn mới nhưng có một số khác biệt khiến chúng trở nên dư thừa.

-j, --dump-json                  --print "%()j"
-F, --list-formats               --print formats_table
--list-thumbnails                --print thumbnails_table --print playlist:thumbnails_table
--list-subs                      --print automatic_captions_table --print subtitles_table

Tùy chọn dự phòng

Mặc dù các tùy chọn này là dư thừa nhưng chúng vẫn được mong đợi sẽ được sử dụng do tính dễ sử dụng của chúng.

--get-description                --print description
--get-duration                   --print duration_string
--get-filename                   --print filename
--get-format                     --print format
--get-id                         --print id
--get-thumbnail                  --print thumbnail
-e, --get-title                  --print title
-g, --get-url                    --print urls
--match-title REGEX              --match-filters "title ~= (?i)REGEX"
--reject-title REGEX             --match-filters "title !~= (?i)REGEX"
--min-views COUNT                --match-filters "view_count >=? COUNT"
--max-views COUNT                --match-filters "view_count <=? COUNT"
--break-on-reject                Use --break-match-filters
--user-agent UA                  --add-headers "User-Agent:UA"
--referer URL                    --add-headers "Referer:URL"
--playlist-start NUMBER          -I NUMBER:
--playlist-end NUMBER            -I :NUMBER
--playlist-reverse               -I ::-1
--no-playlist-reverse            Default
--no-colors                      --color no_color

Không được đề xuất

Mặc dù các tùy chọn này vẫn hoạt động nhưng việc sử dụng chúng không được khuyến khích vì có những lựa chọn thay thế khác để đạt được điều tương tự.

--force-generic-extractor        --ies generic,default
--exec-before-download CMD       --exec "before_dl:CMD"
--no-exec-before-download        --no-exec
--all-formats                    -f all
--all-subs                       --sub-langs all --write-subs
--print-json                     -j --no-simulate
--autonumber-size NUMBER         Use string formatting, e.g. %(autonumber)03d
--autonumber-start NUMBER        Use internal field formatting like %(autonumber+NUMBER)s
--id                             -o "%(id)s.%(ext)s"
--metadata-from-title FORMAT     --parse-metadata "%(title)s:FORMAT"
--hls-prefer-native              --downloader "m3u8:native"
--hls-prefer-ffmpeg              --downloader "m3u8:ffmpeg"
--list-formats-old               --compat-options list-formats (Alias: --no-list-formats-as-table)
--list-formats-as-table          --compat-options -list-formats [Default]
--geo-bypass                     --xff "default"
--no-geo-bypass                  --xff "never"
--geo-bypass-country CODE        --xff CODE
--geo-bypass-ip-block IP_BLOCK   --xff IP_BLOCK

Tùy chọn nhà phát triển

Các tùy chọn này không nhằm mục đích sử dụng bởi người dùng cuối

--test                           Download only part of video for testing extractors
--load-pages                     Load pages dumped by --write-pages
--allow-unplayable-formats       List unplayable formats also
--no-allow-unplayable-formats    Default

Bí danh cũ

Đây là những bí danh không còn được ghi lại vì nhiều lý do

--clean-infojson                 --clean-info-json
--force-write-download-archive   --force-write-archive
--no-clean-infojson              --no-clean-info-json
--no-split-tracks                --no-split-chapters
--no-write-srt                   --no-write-subs
--prefer-unsecure                --prefer-insecure
--rate-limit RATE                --limit-rate RATE
--split-tracks                   --split-chapters
--srt-lang LANGS                 --sub-langs LANGS
--trim-file-names LENGTH         --trim-filenames LENGTH
--write-srt                      --write-subs
--yes-overwrites                 --force-overwrites

Tùy chọn tài trợ

Hỗ trợ cho SponSkrub đã bị loại bỏ để ủng hộ --sponsorblock tùy chọn

--sponskrub                      --sponsorblock-mark all
--no-sponskrub                   --no-sponsorblock
--sponskrub-cut                  --sponsorblock-remove all
--no-sponskrub-cut               --sponsorblock-remove -all
--sponskrub-force                Not applicable
--no-sponskrub-force             Not applicable
--sponskrub-location             Not applicable
--sponskrub-args                 Not applicable

Không còn được hỗ trợ

Các tùy chọn này có thể không còn hoạt động như dự kiến

--prefer-avconv                  avconv is not officially supported by yt-dlp (Alias: --no-prefer-ffmpeg)
--prefer-ffmpeg                  Default (Alias: --no-prefer-avconv)
-C, --call-home                  Not implemented
--no-call-home                   Default
--include-ads                    No longer supported
--no-include-ads                 Default
--write-annotations              No supported site has annotations now
--no-write-annotations           Default
--avconv-location                Removed alias for --ffmpeg-location
--cn-verification-proxy URL      Removed alias for --geo-verification-proxy URL
--dump-headers                   Removed alias for --print-traffic
--dump-intermediate-pages        Removed alias for --dump-pages
--youtube-skip-dash-manifest     Removed alias for --extractor-args "youtube:skip=dash" (Alias: --no-youtube-include-dash-manifest)
--youtube-skip-hls-manifest      Removed alias for --extractor-args "youtube:skip=hls" (Alias: --no-youtube-include-hls-manifest)
--youtube-include-dash-manifest  Default (Alias: --no-youtube-skip-dash-manifest)
--youtube-include-hls-manifest   Default (Alias: --no-youtube-skip-hls-manifest)
--youtube-print-sig-code         Removed testing functionality
--dump-user-agent                No longer supported
--xattr-set-filesize             No longer supported
--compat-options seperate-video-versions  No longer needed
--compat-options no-youtube-prefer-utc-upload-date  No longer supported

Đã xóa

Các tùy chọn này không được dùng nữa kể từ năm 2014 và hiện đã bị xóa hoàn toàn

-A, --auto-number                -o "%(autonumber)s-%(id)s.%(ext)s"
-t, -l, --title, --literal       -o "%(title)s-%(id)s.%(ext)s"

ĐÓNG GÓP

Xem ĐÓNG GÓP.md để được hướng dẫn về Mở một vấn đềĐóng góp mã cho dự án

WIKI

Xem Wiki để biết thêm thông tin

Dự án cùng danh mục

nilbuild/developer-roadmap

Lộ trình tương tác, hướng dẫn và nội dung giáo dục khác để giúp các nhà phát triển phát triển trong sự nghiệp của họ.

365k45k3 ngày trước
GitHubTrợ lý lập trìnhTypeScript

harry0703/MoneyPrinterTurbo

Sử dụng các mô hình lớn AI và quy trình làm việc tự động để tạo video ngắn có độ phân giải cao dựa trên chủ đề hoặc từ khóa chỉ bằng một cú nhấp chuột. Tạo video ngắn HD từ một chủ đề hoặc từ khóa bằng quy trình làm việc AI tự động.

116k18k17 giờ trước
GitHubTrợ lý lập trìnhPython

immich-app/immich

Giải pháp quản lý ảnh và video tự lưu trữ hiệu suất cao.

113k6.7k41 phút trước
GitHubTrợ lý lập trìnhTypeScript

Anduin2017/HowToCook

Hướng dẫn lập trình viên cách nấu ăn tại nhà.

102k11k4 ngày trước
GitHubTrợ lý lập trình

angular/angular

Tự tin cung cấp ứng dụng web 🚀

101k27k39 phút trước
GitHubTrợ lý lập trìnhTypeScript

hacksider/Deep-Live-Cam

hoán đổi khuôn mặt theo thời gian thực và video deepfake chỉ bằng một cú nhấp chuột chỉ bằng một hình ảnh

96k14k2 ngày trước
GitHubTrợ lý lập trìnhPython