mcpField
Y
yt-dlp

yt-dlp

公式おすすめ
github.comメディアツール203.0kyt-dlp2 日前に更新
リポジトリ公式サイト

yt-dlp について

yt-dlp はオンラインソースから動画と音声コンテンツをダウンロードするコマンドラインツールです。幅広いプラットフォームと形式に対応しており、メディアをローカルに保存する場合に便利です。

主な機能

  1. 01サポートされているウェブサイトから単一のコマンドで動画をダウンロード
  2. 02音声を抽出して MP3 などの形式に変換
  3. 03複数の URL をバッチ処理

活用シーン

  1. 01オフライン視聴用に動画コンテンツをアーカイブする
  2. 02オンライン動画を音楽やポッドキャスト用の音声ファイルに変換
  3. 03メディアをダウンロードおよび処理する自動化ワークフローを構築

インストール

OS またはパッケージマネージャーを選び、コマンドをターミナルで実行します。

$
brew install yt-dlp

インストール後にyt-dlp --versionを実行して確認します。

コマンド例

よく使うコマンドを使う順に並べています。

01
yt-dlp https://example.com/video
02
yt-dlp -x --audio-format mp3 URL

詳細

翻訳後に原文が更新されています。最新の内容は原文をご確認ください。

YT-DLP

Release version Python Version PyPI Discord License: Unlicense Commits

yt-dlp は、数千のサイトに対応した、機能豊富なコマンドラインの音声・動画ダウンローダーです。このプロジェクトは、現在は活動を停止している youtube-dlc をベースにした youtube-dl のフォークです。

インストール

Windows Unix MacOS PyPI Source Tarball Other variants All versions

yt-dlp は、バイナリ、pip、またはサードパーティーのパッケージマネージャーを使ってインストールできます。詳しい手順はWikiをご覧ください。

リリースファイル

推奨
FileDescription
yt-dlpプラットフォームに依存しないzipimportバイナリです。Python が必要です(Linux/BSD 向けに推奨)
yt-dlp.exeWindows(Win8 以降)用のスタンドアロン x64 バイナリです(Windows 向けに推奨)
yt-dlp_macosMacOS(10.15 以降)用のユニバーサルなスタンドアロン実行ファイルです(MacOS 向けに推奨)
代替ファイル
ファイル説明
yt-dlp_linuxLinux(glibc 2.17 以降)向けスタンドアロン x86_64 バイナリ
yt-dlp_linux.zipパッケージ化されていない Linux(glibc 2.17 以降)向け x86_64 実行ファイル(自動更新なし)
yt-dlp_linux_aarch64Linux(glibc 2.17 以降)向けスタンドアロン aarch64 バイナリ
yt-dlp_linux_aarch64.zipパッケージ化されていない Linux(glibc 2.17 以降)向け aarch64 実行ファイル(自動更新なし)
yt-dlp_linux_armv7l.zipパッケージ化されていない Linux(glibc 2.31 以降)向け armv7l 実行ファイル(自動更新なし)
yt-dlp_musllinuxLinux(musl 1.2 以降)向けスタンドアロン x86_64 バイナリ
yt-dlp_musllinux.zipパッケージ化されていない Linux(musl 1.2 以降)向け x86_64 実行ファイル(自動更新なし)
yt-dlp_musllinux_aarch64Linux(musl 1.2 以降)向けスタンドアロン aarch64 バイナリ
yt-dlp_musllinux_aarch64.zipパッケージ化されていない Linux(musl 1.2 以降)向け aarch64 実行ファイル(自動更新なし)
yt-dlp_x86.exeWindows(Win8 以降)向けスタンドアロン x86(32 ビット)バイナリ
yt-dlp_win_x86.zipパッケージ化されていない Windows(Win8 以降)向け x86(32 ビット)実行ファイル(自動更新なし)
yt-dlp_arm64.exeWindows(Win10 以降)向けスタンドアロン ARM64 バイナリ
yt-dlp_win_arm64.zipパッケージ化されていない Windows(Win10 以降)向け ARM64 実行ファイル(自動更新なし)
yt-dlp_win.zipパッケージ化されていない Windows(Win8 以降)向け x64 実行ファイル(自動更新なし)
yt-dlp_macos.zipパッケージ化されていない MacOS(10.15 以降)向け実行ファイル(自動更新なし)
その他
ファイル説明
yt-dlp.tar.gzソースの tarball
SHA2-512SUMSGNU 形式の SHA512 チェックサム
SHA2-512SUMS.sigSHA512 チェックサムの GPG 署名ファイル
SHA2-256SUMSGNU 形式の SHA256 チェックサム
SHA2-256SUMS.sigSHA256 チェックサムの GPG 署名ファイル

GPG 署名の検証に使用できる公開鍵はこちらから入手できます 使用例:

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
ライセンス

yt-dlp は Unlicense のもとでライセンスされていますが、多くのリリースファイルには異なるライセンスの他のプロジェクトのコードが含まれています。

特に、PyInstaller でバンドルされた実行ファイルには GPLv3+ のライセンスが適用されるコードが含まれているため、結合作品は GPLv3+ のもとでライセンスされています。

zipimport Unix 実行ファイル(yt-dlp)とリリース tarball(yt-dlp.tar.gz)には、meriyah の ISC ライセンスが適用されるコードと、astring の MIT ライセンスが適用されるコードが含まれています。

詳しくは、THIRD_PARTY_LICENSES.txt をご覧ください。

git リポジトリ、PyPI ソース配布物、PyPI ビルド済み配布物(wheel)には、Unlicense のもとでライセンスされたコードのみが含まれています。

注:man ページ、シェル補完(オートコンプリート)ファイルなどは、ソース tarball に含まれています。

更新

リリースバイナリを使用している場合は、yt-dlp -Uで更新できます。

pip でインストールした場合は、プログラムのインストールに使用したコマンドを再実行してください。

その他のサードパーティ製パッケージマネージャーについては、Wikiを確認するか、それぞれのドキュメントを参照してください。

現在、バイナリにはstable、nightly、masterの3つのリリースチャンネルがあります。

  • stableはデフォルトのチャンネルで、(おおむね)毎月のスケジュールで公開されるリリースを提供します。nightlyまたはmasterのリリースチャンネルのユーザーによって変更の多くがテストされているためstableという名前が付いていますが、最新のstableリリースは古い状態になっていることが多く、外部要因による不具合が発生しやすくなっています(たとえば、サイト側の変更によってyt-dlpが動作しなくなる場合があります)。
  • nightlyチャンネルでは、コードベースに変更があった日のUTC午前0時直前にリリースが公開されます。このチャンネルはプロジェクトの開発状況を反映するスナップショットであり、yt-dlpの通常のユーザーに推奨されるチャンネルです。nightlyリリースはyt-dlp/yt-dlp-nightly-buildsから入手できるほか、yt-dlp PyPI パッケージの開発版としても入手できます(pip の--preフラグを使用してインストールできます)。
  • masterチャンネルでは、master ブランチへのプッシュ後に「カナリア」リリースが公開されます。このチャンネルでは常に最新の修正と機能を利用できますが、バグやリグレッションが発生しやすい場合があります。masterリリースはyt-dlp/yt-dlp-master-buildsから入手できます。

--update/-Uを使用する場合、リリースバイナリは現在のチャンネルのリリースにのみ更新されます。 --update-to CHANNELを使用すると、新しいバージョンがある場合に別のチャンネルへ切り替えられます。--update-to [CHANNEL@]TAGを使用すると、チャンネルの特定のタグへのアップグレードまたはダウングレードもできます。

--update-to <repository>(<owner>/<repository>)を使用して、まったく別のリポジトリのチャンネルへ更新することもできます。ただし、更新先のリポジトリには注意してください。別のリポジトリのバイナリについては検証が行われません。

使用例:

  • yt-dlp --update-to masterでmasterチャンネルに切り替え、最新リリースに更新します
  • yt-dlp --update-to [email protected]で、stableチャンネルのタグ2023.07.06のリリースにアップグレードまたはダウングレードします
  • yt-dlp --update-to 2023.10.07で、現在のチャンネルにタグ2023.10.07が存在する場合、そのタグにアップグレードまたはダウングレードします
  • yt-dlp --update-to example/[email protected]で、example/yt-dlpリポジトリのタグ2023.09.24のリリースにアップグレードまたはダウングレードします

重要:stableリリースで問題が発生した場合は、バグを報告する前にnightlyリリースをインストールするか、そちらに更新してください:

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

90日以上前のyt-dlpのバージョンを実行すると、最新バージョンへの更新を促す警告メッセージが表示されます。 コマンドまたは設定ファイルに--no-updateを追加すると、この警告を抑制できます。

依存関係

Python 3.10以降(CPython)および3.11以降(PyPy)に対応しています。その他のバージョンや実装は、正しく動作する場合とそうでない場合があります。

その他の依存関係はすべて任意ですが、ffmpeg、ffprobe、yt-dlp-ejsおよび対応するJavaScriptランタイム/エンジンの使用を強く推奨します。

強く推奨
ネットワーク
  • certifi* - Mozilla のルート証明書バンドルを提供します。MPLv2の下でライセンスされています
  • brotli* または brotlicffi - Brotli コンテンツエンコーディングをサポートします。どちらも MIT の下でライセンスされています 1 2
  • websockets* - WebSocket 経由でのダウンロードに使用します。BSD-3-Clauseの下でライセンスされています
  • requests* - HTTP ライブラリです。HTTPS プロキシと永続接続をサポートします。Apache-2.0の下でライセンスされています
なりすまし

以下は、ブラウザーのリクエストになりすますためのサポートを提供します。TLS フィンガープリンティングを採用している一部のサイトでは、これが必要になる場合があります。

  • curl_cffi(推奨) - curl-impersonate の Python バインディングです。Chrome、Edge、Safari のなりすまし対象を提供します。MITの下でライセンスされています
    • curl-cffi エクストラを指定してインストールできます。例:pip install "yt-dlp[default,curl-cffi]"
    • 現在、yt-dlp(Unix zipimport バイナリ)と yt-dlp_x86(Windows 32 ビット)を除くほとんどのビルドに含まれています
メタデータ
  • mutagen* - 特定の形式で --embed-thumbnail を使用するために必要です。GPLv2+の下でライセンスされています
  • AtomicParsley - mutagen/ffmpeg が使用できない場合に、mp4/m4a ファイルで --embed-thumbnail を使用するために必要です。GPLv2+の下でライセンスされています
  • xattr、pyxattr、または setfattr - Mac および BSD で xattr メタデータ(--xattrs)を書き込むために必要です。それぞれ MIT、LGPL2.1、GPLv2+ の下でライセンスされています
その他
  • pycryptodomex* - AES-128 HLS ストリームやその他さまざまなデータの復号に使用します。BSD-2-Clause ライセンスです。
  • phantomjs - JavaScript の実行が必要な一部の抽出器で使用します。YouTube ではすでに使用していません。近い将来、非推奨になる予定です。BSD-3-Clause ライセンスです。
  • secretstorage* - Linux 上の Chromium ベースのブラウザーの Cookie を復号する際に、--cookies-from-browser で Gnome のキーリングにアクセスするために使用します。BSD-3-Clause ライセンスです。
  • --downloader で使用する任意の外部ダウンローダー
非推奨
  • rtmpdump - rtmp ストリームのダウンロードに使用します。代わりに --downloader ffmpeg を指定して ffmpeg を使用できます。GPLv2+ ライセンスです。

依存関係を使用または再配布するには、それぞれのライセンス条項に同意する必要があります。

スタンドアロン版のリリースバイナリには、Python インタープリターと * が付いたパッケージが含まれています。

実行しようとしているタスクに必要な依存関係が不足している場合、yt-dlp が警告します。現在利用可能な依存関係はすべて、--verbose の出力の先頭に表示されます。

コンパイル

スタンドアロン PyInstaller ビルド

スタンドアロン実行ファイルをビルドするには、Python と pyinstaller(必要に応じて yt-dlp のオプションの依存関係も)が必要です。実行ファイルは、使用した Python と同じ CPU アーキテクチャ向けにビルドされます。

次のコマンドを実行できます。

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

一部のシステムでは、python の代わりに py または python3 を使用する必要があります。

python -m bundle.pyinstaller には、--onefile/-F や --onedir/-D など、pyinstaller に渡せる任意の引数を指定できます。詳しくはこちらをご覧ください。

注:4.4 より前のバージョンの PyInstaller では、仮想環境を使用しない場合、Windows ストアからインストールした Python はサポートされていません。

重要:python -m bundle.pyinstaller を使わずに pyinstaller を直接実行する方法は、公式にはサポートされていません。正しく動作する場合もあれば、しない場合もあります。

プラットフォーム非依存のバイナリ(UNIX)

ビルドツールとして python(3.10 以降)、zip、make(GNU)、pandoc*、pytest* が必要です。

これらをインストールしたら、make を実行するだけです。

追加ファイルを更新せず、バイナリのみをコンパイルする場合は、代わりに make yt-dlp を実行することもできます(* が付いたビルドツールは不要です)。

関連スクリプト
  • devscripts/install_deps.py - yt-dlp の依存関係をインストールします。
  • devscripts/update-version.py - 現在の日付に基づいてバージョン番号を更新します。
  • devscripts/set-variant.py - 実行ファイルのビルドバリアントを設定します。
  • devscripts/make_changelog.py - 短いコミットメッセージを使って Markdown 形式の変更履歴を作成し、CONTRIBUTORS ファイルを更新します。
  • devscripts/make_lazy_extractors.py - 遅延抽出器を作成します。バイナリ(任意のバリアント)をビルドする前に実行すると、起動パフォーマンスが向上します。遅延抽出器の読み込みを強制的に無効にするには、環境変数 YTDLP_NO_LAZY_EXTRACTORS に空でない値を設定します。

注:詳細については、各スクリプトの --help をご覧ください。

プロジェクトのフォーク

GitHub でプロジェクトをフォークした場合、フォークのビルドワークフローを実行すると、選択したバージョンをアーティファクトとして自動的にビルドできます。また、リリースワークフローを実行するか、ナイトリーワークフローを有効にして、完全なリリース(プレリリースを含む)を作成することもできます。

使用方法とオプション

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

ヒント:キーワードで検索するには、CTRL+F(または Command+F)を使用してください。

一般オプション:

-h, --help                      このヘルプテキストを表示して終了します
--version                       プログラムのバージョンを表示して終了します
-U, --update                    このプログラムを最新バージョンに更新します
--no-update                     更新を確認しません(デフォルト)
--update-to [CHANNEL]@[TAG]     特定のバージョンにアップグレード/ダウングレードします。
                                CHANNELにはリポジトリも指定できます。省略した場合、
                                CHANNELとTAGはそれぞれ「stable」と「latest」に
                                なります。詳細は「UPDATE」を参照してください。
                                対応チャンネル:stable、nightly、master
-i, --ignore-errors             ダウンロードおよび後処理のエラーを無視します。
                                後処理に失敗した場合でも、ダウンロードは成功した
                                ものとみなされます
--no-abort-on-error             ダウンロードエラーが発生しても次の動画に進みます。
                                たとえば、プレイリスト内で利用できない動画を
                                スキップする場合に使用します(デフォルト)
--abort-on-error                エラーが発生した場合、それ以降の動画のダウンロードを
                                中止します(別名:--no-ignore-errors)
--list-extractors               対応するすべての抽出器を一覧表示して終了します
--extractor-descriptions        対応するすべての抽出器の説明を出力して終了します
--use-extractors NAMES          使用する抽出器の名前をカンマ区切りで指定します。
                                正規表現、「all」、「default」、「end」(URL照合の
                                終了)も使用できます。例:--ies
                                "holodex.*,end,youtube"。除外するには、名前の前に
                                "-"を付けます。例:--ies
                                default,-generic。抽出器名の一覧は
                                --list-extractorsで確認できます。(別名:--ies)
--default-search PREFIX         修飾されていないURLに使用するプレフィックスを
                                指定します。例:
                                "gvsearch2:python"は、検索語「python」で
                                google videosから動画を2本ダウンロードします。
                                値に「auto」を指定すると、yt-dlpが推測します
                                (推測時に警告を出すには「auto_warning」を指定)。
                                「error」はエラーを発生させます。デフォルト値の
                                「fixup_error」は壊れたURLを修正しますが、修正
                                できない場合は検索せずにエラーを出します
--ignore-config                 --config-locationsで指定されたものを除き、
                                それ以降の設定ファイルを読み込みません。
                                後方互換性のため、このオプションがシステム設定
                                ファイル内にある場合、ユーザー設定は読み込まれません。
                                (別名:--no-config)
--no-config-locations           カスタム設定ファイルを読み込みません(デフォルト)。
                                設定ファイル内で指定した場合、現在のファイルで
                                定義された以前の--config-locationsをすべて無視します
--config-locations PATH         メイン設定ファイルの場所を指定します。
                                設定ファイルのパス、またはそのファイルを含む
                                ディレクトリを指定します(標準入力の場合は「-」)。
                                複数回指定でき、他の設定ファイル内でも使用できます
--plugin-dirs DIR               プラグインを検索する追加ディレクトリのパスです。
                                このオプションを複数回指定して、複数のディレクトリを
                                追加できます。「default」を指定すると、デフォルトの
                                プラグインディレクトリを検索します(デフォルト)
--no-plugin-dirs                デフォルトおよび以前の--plugin-dirsで指定されたものを
                                含め、検索対象のプラグインディレクトリをすべて解除します
--js-runtimes RUNTIME[:PATH]    有効にするJavaScriptランタイムを追加します。
                                ランタイムの場所も任意で指定できます(バイナリの
                                パス、またはそれを含むディレクトリ)。複数のランタイムを
                                有効にするには、このオプションを複数回使用します。
                                対応ランタイム(優先度の高い順):deno、
                                node、quickjs、bun。デフォルトで有効なのは
                                「deno」のみです。有効かつ利用可能なランタイムのうち、
                                最も優先度の高いものが使用されます。「deno」が利用可能な
                                状態で優先度の低いランタイムを使用するには、他の
                                ランタイムを有効にする前に--no-js-
                                runtimesを指定する必要があります
--no-js-runtimes                デフォルトおよび以前の--js-runtimesで指定されたものを
                                含め、有効にするJavaScriptランタイムをすべて解除します
--remote-components COMPONENT   必要に応じてyt-dlpによる取得を許可するリモート
                                コンポーネントです。現在、このオプションは公式の
                                実行ファイルを使用している場合、または必要なバージョンの
                                yt-dlp-ejsパッケージがインストールされている場合は
                                不要です。複数のコンポーネントを許可するには、この
                                オプションを複数回使用できます。対応する値:
                                ejs:npm(npmから取得する外部JavaScriptコンポーネント)、
                                ejs:github(yt-dlp-ejs GitHubから取得する外部JavaScript
                                コンポーネント)。デフォルトでは、リモートコンポーネントは
                                許可されません
--no-remote-components          --remote-componentsまたはデフォルトで以前に許可された
                                ものも含め、すべてのリモートコンポーネントの取得を禁止します。
--flat-playlist                 プレイリストのURL結果エントリーを抽出しません。
                                一部のエントリーメタデータが欠落する場合があり、
                                ダウンロードが省略されることがあります
--no-flat-playlist              プレイリストの動画を完全に抽出します(デフォルト)
--live-from-start               ライブ配信を最初からダウンロードします。
                                現在は実験的な機能で、YouTube、Twitch、TVer、
                                mellow-fanのみ対応しています
--no-live-from-start            ライブ配信を現在の時点からダウンロードします(デフォルト)
--wait-for-video MIN[-MAX]      配信予定のストリームが利用可能になるまで待機します。
                                再試行間の待機時間として、最小秒数(または範囲)を
                                指定します
--no-wait-for-video             配信予定のストリームを待ちません(デフォルト)
--mark-watched                  動画を視聴済みにします(--simulate使用時も含む)
--no-mark-watched               動画を視聴済みにしません(デフォルト)
--color [STREAM:]POLICY         出力にカラーコードを使用するかどうかを指定します。
                                設定対象のSTREAM(stdoutまたはstderr)を任意で
                                前置できます。「always」、「auto」(デフォルト)、
                                「never」、または「no_color」(カラーなしの端末
                                シーケンスを使用)のいずれかを指定できます。
                                端末の対応状況のみを基準に判断するには、「auto-tty」
                                または「no_color-tty」を使用します。複数回使用できます
--compat-options OPTS           yt-dlpで加えられた一部の変更を元に戻し、youtube-dlまたは
                                youtube-dlcの設定との互換性を維持するためのオプションです。
                                詳細は「デフォルトの動作の違い」を参照してください
--alias ALIASES OPTIONS         オプション文字列のエイリアスを作成します。エイリアスが
                                ダッシュ「-」で始まらない場合は、「--」が前置されます。
                                引数はPythonの文字列フォーマットのミニ言語に従って解析
                                されます。例:--alias get-audio,-X "-S
                                aext:{0},abr -x --audio-format {0}"は、引数
                                (ARG0)を取り、「-S
                                aext:ARG0,abr -x --audio-format ARG0」に展開される
                                「--get-audio」と「-X」オプションを作成します。定義済みの
                                エイリアスはすべて--helpの出力に表示されます。エイリアス
                                オプションから別のエイリアスを呼び出すこともできるため、
                                再帰的なオプションの定義に注意してください。安全対策として、
                                各エイリアスの呼び出し回数は最大100回です。このオプションは
                                複数回使用できます
-t, --preset-alias PRESET       定義済みのオプションセットを適用します。例:
                                --preset-alias mp3。利用可能なプリセット:
                                mp3、aac、mp4、mkv、sleep。詳細は末尾の
                                「プリセットエイリアス」セクションを参照してください。
                                このオプションは複数回使用できます

ネットワークオプション:

--proxy URL                     指定した HTTP/HTTPS/SOCKS プロキシを使用します。SOCKS
                                プロキシを有効にするには、socks5://user:[email protected]:1080/
                                のように適切なスキームを指定します。直接接続する場合は、
                                空の文字列(--proxy "")を渡します。
--socket-timeout SECONDS        タイムアウトするまで待機する時間を秒単位で指定します。
--source-address IP             バインドするクライアント側の IP アドレス
--impersonate CLIENT[:OS]       リクエストで偽装するクライアントです。例:
                                chrome、chrome-110、chrome:windows-10。任意のクライアントを
                                偽装するには、--impersonate="" を渡します。
                                すべてのリクエストで偽装を強制すると、
                                ダウンロード速度や安定性に悪影響を及ぼす場合があります。
--list-impersonate-targets      偽装可能なクライアントを一覧表示します。
-4, --force-ipv4                すべての接続で IPv4 を使用します。
-6, --force-ipv6                すべての接続で IPv6 を使用します。
--enable-file-urls              file:// URL を有効にします。セキュリティ上の理由から、
                                デフォルトでは無効になっています。

地域制限:

--geo-verification-proxy URL    一部の地域制限サイトで IP アドレスを確認するために、
                                このプロキシを使用します。実際のダウンロードには、
                                --proxy で指定したデフォルトのプロキシ(このオプションが
                                指定されていない場合はプロキシなし)が使用されます。
--xff VALUE                     地域制限を回避するため、X-Forwarded-For HTTP ヘッダーを
                                偽装する方法を指定します。"default"(有効だと判明している
                                場合のみ使用)、"never"、CIDR 表記の IP ブロック、または
                                2 文字の ISO 3166-2 国コードのいずれかを指定します。

動画の選択:

-I, --playlist-items ITEM_SPEC  ダウンロードする項目の playlist_index を
                                カンマ区切りで指定します。
                                "[START]:[STOP][:STEP]" を使用して範囲を指定できます。
                                下位互換性のため、START-STOP もサポートされています。
                                負のインデックスを使うと右端から数え、
                                負の STEP を使うと逆順にダウンロードします。
                                例:「-I 1:3,7,-5::2」をサイズ 15 のプレイリストで
                                使用すると、インデックス 1、2、3、7、11、13、15 の
                                項目がダウンロードされます
--min-filesize SIZE             ファイルサイズが SIZE より小さい場合は
                                ダウンロードを中止します。例:50k または 44.6M
--max-filesize SIZE             ファイルサイズが SIZE より大きい場合は
                                ダウンロードを中止します。例:50k または 44.6M
--date DATE                     指定した日にアップロードされた動画のみを
                                ダウンロードします。日付は "YYYYMMDD" または
                                [now|today|yesterday][-N[day|week|month|year]] の形式で指定します。
                                例:「--date today-2weeks」は、2 週間前の同じ日に
                                アップロードされた動画のみをダウンロードします
--datebefore DATE               指定した日付以前にアップロードされた動画のみを
                                ダウンロードします。使用できる日付形式は --date と
                                同じです
--dateafter DATE                指定した日付以降にアップロードされた動画のみを
                                ダウンロードします。使用できる日付形式は --date と
                                同じです
--match-filters FILTER          汎用動画フィルターです。「OUTPUT TEMPLATE」の
                                任意のフィールドを、「Filtering Formats」で定義された
                                演算子を使って数値または文字列と比較できます。
                                フィールドが存在する場合に一致させるには、フィールド名を
                                指定するだけです。フィールドが存在しない場合に一致させるには
                                "!field" を使用し、複数の条件を指定するには "&" を
                                使用します。必要に応じて、"&" や引用符をエスケープするには
                                "\" を使用します。複数回指定した場合、条件のいずれか
                                1 つを満たすとフィルターに一致します。例:--match-filters
                                !is_live --match-filters "like_count>?100 &
                                description~='(?i)\bcats \& dogs\b'" は、ライブ配信ではない動画、
                                または高評価数が 100 を超える(もしくは高評価数の
                                フィールドが利用できない)動画のうち、説明に大文字と小文字を
                                区別せずに "cats & dogs" という語句が含まれるもののみを
                                一致させます。「--match-filters -」を使用すると、
                                各動画をダウンロードするかどうかを対話的に尋ねます
--no-match-filters              --match-filters を使用しません(デフォルト)
--break-match-filters FILTER    "--match-filters" と同じですが、動画が
                                条件に一致しなかった時点でダウンロード処理を停止します
--no-break-match-filters        --break-match-filters を使用しません(デフォルト)
--no-playlist                   URL が動画とプレイリストを指している場合、動画のみを
                                ダウンロードします
--yes-playlist                  URL が動画とプレイリストを指している場合、プレイリストを
                                ダウンロードします
--age-limit YEARS               指定した年齢に適した動画のみをダウンロードします
--download-archive FILE         アーカイブファイルに記録されていない動画のみを
                                ダウンロードします。ダウンロードしたすべての動画の ID を
                                アーカイブファイルに記録します
--no-download-archive           アーカイブファイルを使用しません(デフォルト)
--max-downloads NUMBER          NUMBER 個のファイルをダウンロードした後に中止します
--break-on-existing             --download-archive オプションで指定された
                                アーカイブ内にあるファイルに遭遇した時点で
                                ダウンロード処理を停止します
--no-break-on-existing          アーカイブ内にあるファイルに遭遇しても
                                ダウンロード処理を停止しません(デフォルト)
--break-per-input               --max-downloads、--break-on-existing、
                                --break-match-filters、および autonumber を変更し、
                                入力 URL ごとにリセットします
--no-break-per-input            --break-on-existing などのオプションが
                                ダウンロードキュー全体を終了します
--skip-playlist-after-errors N  プレイリストの残りをスキップするまでに許容する失敗回数

ダウンロードオプション:

-N, --concurrent-fragments N    dash/hlsnative動画のフラグメントを同時に
                                ダウンロードする数
                                (デフォルトは1)
-r, --limit-rate RATE           1秒あたりの最大ダウンロード速度(バイト単位)。
                                例:50K、4.2M
--throttled-rate RATE           1秒あたりの最小ダウンロード速度(バイト単位)。
                                この値を下回ると速度制限があると判断され、
                                動画データが再抽出されます。例:100K
-R, --retries RETRIES           再試行回数(デフォルトは10)、または
                                "infinite"
--file-access-retries RETRIES   ファイルアクセスエラー時の再試行回数
                                (デフォルトは3)、または "infinite"
--fragment-retries RETRIES      フラグメントの再試行回数(デフォルトは
                                10)、または "infinite"(DASH、hlsnative、ISM)
--retry-sleep [TYPE:]EXPR       再試行間に待機する時間(秒単位)。
                                (任意で)適用する再試行の種類
                                (http(デフォルト)、fragment、file_access、
                                extractor)を前置できます。EXPRには数値、
                                linear=START[:END[:STEP=1]]、または
                                exp=START[:END[:BASE=2]]を指定できます。この
                                オプションを複数回指定して、再試行の種類ごとに
                                待機時間を設定できます。例:--retry-sleep
                                linear=1::2 --retry-sleep fragment:exp=1:20
--skip-unavailable-fragments    DASH、hlsnative、ISMのダウンロードで
                                利用できないフラグメントをスキップします
                                (デフォルト)
                                (別名:--no-abort-on-unavailable-fragments)
--abort-on-unavailable-fragments
                                フラグメントが利用できない場合、ダウンロードを
                                中止します
                                (別名:--no-skip-unavailable-fragments)
--keep-fragments                ダウンロード完了後も、ダウンロードした
                                フラグメントをディスクに保持します
--no-keep-fragments             ダウンロード完了後、ダウンロードした
                                フラグメントを削除します(デフォルト)
--buffer-size SIZE              ダウンロードバッファーのサイズ。例:1024、16K
                                (デフォルトは1024)
--resize-buffer                 バッファーサイズを--buffer-sizeの初期値から
                                自動的に調整します(デフォルト)
--no-resize-buffer              バッファーサイズを自動調整しません
--http-chunk-size SIZE          チャンク単位のHTTPダウンロードで使用する
                                チャンクのサイズ。例:10485760、10M(デフォルトは
                                無効)。ウェブサーバーによる帯域幅制限の回避に
                                役立つ場合があります(実験的)
--playlist-random               プレイリスト内の動画をランダムな順序でダウンロードします
--lazy-playlist                 受信したプレイリストのエントリーを順次処理します。
                                n_entries、--playlist-random、--playlist-reverseは
                                無効になります
--no-lazy-playlist              プレイリスト全体の解析後にのみ、プレイリスト内の
                                動画を処理します(デフォルト)
--hls-use-mpegts                HLS動画でmpegtsコンテナーを使用します。
                                ダウンロード中に一部のプレーヤーで動画を再生でき、
                                ダウンロードが中断された場合のファイル破損の可能性を
                                低減します。ライブストリームではデフォルトで有効です
--no-hls-use-mpegts             HLS動画でmpegtsコンテナーを使用しません。
                                ライブストリームをダウンロードしない場合はこれが
                                デフォルトです
--download-sections REGEX       正規表現に一致するチャプターのみをダウンロードします。
                                "*"を前置すると、チャプターではなく時間範囲として
                                扱われます。負のタイムスタンプは末尾から計算されます。
                                "*from-url"を使うと、URLから抽出した"start_time"と
                                "end_time"の間をダウンロードできます。ffmpegが必要です。
                                このオプションを複数回指定して、複数のセクションを
                                ダウンロードできます。例:--download-sections
                                "*10:15-inf" --download-sections "intro"
--downloader [PROTO:]NAME       使用する外部ダウンローダーの名前またはパス。
                                (任意で)使用するプロトコル
                                (http、ftp、m3u8、dash、rtmp)を前置できます。
                                現在、native、aria2c、axel、curl、ffmpeg、httpie、
                                wgetをサポートしています。このオプションを複数回
                                指定して、プロトコルごとに異なるダウンローダーを
                                設定できます。例:
                                --downloader aria2c --downloader
                                "dash,m3u8:native"を指定すると、http/ftpの
                                ダウンロードにはaria2cを、dash/m3u8のダウンロードには
                                標準のダウンローダーを使用します(別名:
                                --external-downloader)
--downloader-args NAME:ARGS     外部ダウンローダーに引数を渡します。ダウンローダー名と
                                引数をコロン":"で区切って指定します。ffmpegの場合、
                                --postprocessor-argsと同じ構文を使って、異なる位置に
                                引数を渡すことができます。このオプションを複数回指定して、
                                ダウンローダーごとに異なる引数を渡すことができます
                                (別名:--external-downloader-args)

ファイルシステムのオプション:

-a, --batch-file FILE           ダウンロードする URL を記載したファイル(標準入力の場合は
                                "-")を指定します。1 行につき 1 つの URL を記載します。
                                "#", ";" または "]" で始まる行は
                                コメントとして無視されます
--no-batch-file                 バッチファイルから URL を読み込みません(デフォルト)
-P, --paths [TYPES:]PATH        ファイルのダウンロード先のパスを指定します。
                                ファイルの種類とパスをコロン「:」で区切って指定します。
                                --output と同じ TYPES をすべて指定できます。
                                さらに、「home」(デフォルト)と「temp」の
                                パスも指定できます。中間ファイルはすべて最初に
                                temp パスへダウンロードされ、ダウンロード完了後に
                                最終ファイルが home パスへ移動されます。
                                --output が絶対パスの場合、このオプションは無視されます
-o, --output [TYPES:]TEMPLATE   出力ファイル名のテンプレート。「OUTPUT
                                TEMPLATE」を参照してください
--output-na-placeholder TEXT    --output 内の取得できないフィールドに使う
                                プレースホルダー(デフォルト:"NA")
--restrict-filenames            ファイル名を ASCII 文字のみに制限し、
                                ファイル名に「&」や空白を使用しません
--no-restrict-filenames         ファイル名に Unicode 文字、「&」および空白を使用できます
                                (デフォルト)
--windows-filenames             ファイル名を Windows 互換にします
--no-windows-filenames          ファイル名のサニタイズを最小限にします
--trim-filenames LENGTH         ファイル名の長さ(拡張子を除く)を
                                指定した文字数に制限します
-w, --no-overwrites             ファイルを上書きしません
--force-overwrites              すべての動画ファイルとメタデータファイルを上書きします。
                                このオプションには --no-continue が含まれます
--no-force-overwrites           動画は上書きせず、関連ファイルは上書きします(デフォルト)
-c, --continue                  部分的にダウンロードされたファイルやフラグメントの
                                ダウンロードを再開します(デフォルト)
--no-continue                   部分的にダウンロードされたフラグメントの
                                ダウンロードを再開しません。ファイルが分割されて
                                いない場合は、ファイル全体のダウンロードを最初からやり直します
--part                          出力ファイルに直接書き込まず、.part ファイルを使用します
                                (デフォルト)
--no-part                       .part ファイルを使用せず、出力ファイルに直接
                                書き込みます
--mtime                         Last-modified ヘッダーを使ってファイルの
                                更新日時を設定します
--no-mtime                      Last-modified ヘッダーを使ってファイルの
                                更新日時を設定しません(デフォルト)
--write-description             動画の説明を .description ファイルに書き込みます
--no-write-description          動画の説明を書き込みません(デフォルト)
--write-info-json               動画のメタデータを .info.json ファイルに書き込みます
                                (個人情報が含まれる場合があります)
--no-write-info-json            動画のメタデータを書き込みません(デフォルト)
--write-playlist-metafiles      --write-info-json、--write-description などを
                                使用する場合、動画のメタデータに加えて再生リストの
                                メタデータも書き込みます(デフォルト)
--no-write-playlist-metafiles   --write-info-json、--write-description などを
                                使用する場合、再生リストのメタデータを書き込みません
--clean-info-json               ファイル名などの内部メタデータを infojson から
                                削除します(デフォルト)
--no-clean-info-json            すべてのフィールドを infojson に書き込みます
--write-comments                動画のコメントを取得し、infojson に保存します。
                                抽出が短時間で完了すると分かっている場合は、
                                このオプションがなくてもコメントを取得します
                                (別名:--get-comments)
--no-write-comments             抽出が短時間で完了すると分かっている場合を除き、
                                動画のコメントを取得しません(別名:
                                --no-get-comments)
--load-info-json FILE           動画情報を含む JSON ファイル(「--write-info-json」
                                オプションで作成されたもの)を指定します
--cookies FILE                  Cookie の読み込み元および Cookie jar の
                                保存先となる Netscape 形式のファイルを指定します
--no-cookies                    ファイルから Cookie を読み込まず、ファイルへ
                                保存しません(デフォルト)
--cookies-from-browser BROWSER[+KEYRING][:PROFILE][::CONTAINER]
                                Cookie の読み込み元ブラウザー名を指定します。
                                現在、次のブラウザーに対応しています:
                                brave、chrome、chromium、edge、firefox、
                                opera、safari、vivaldi、whale。オプションで、
                                Linux 上で Chromium の Cookie を復号するための
                                KEYRING、Cookie の読み込み元となる PROFILE の名前またはパス、
                                および CONTAINER 名(Firefox の場合。コンテナーを
                                使用しない場合は「none」)を、それぞれの区切り文字で
                                指定できます。デフォルトでは、最後にアクセスした
                                プロファイルのすべてのコンテナーが使用されます。
                                現在、次のキーリングに対応しています:
                                basictext、gnomekeyring、
                                kwallet、kwallet5、kwallet6
--no-cookies-from-browser       ブラウザーから Cookie を読み込みません(デフォルト)
--cache-dir DIR                 yt-dlp がクライアント ID や署名などの
                                ダウンロード情報を永続的に保存できるファイルシステム上の
                                場所を指定します。デフォルトは
                                ${XDG_CACHE_HOME}/yt-dlp です
--no-cache-dir                  ファイルシステムのキャッシュを無効にします
--rm-cache-dir                  ファイルシステムのキャッシュファイルをすべて削除します

サムネイルのオプション:

--write-thumbnail               サムネイル画像をディスクに書き込みます
--no-write-thumbnail            サムネイル画像をディスクに書き込みません(デフォルト)
--write-all-thumbnails          すべてのサムネイル画像形式をディスクに書き込みます
--list-thumbnails               各動画で利用可能なサムネイルを一覧表示します。
                                --no-simulate が使用されない限り、シミュレーションします

インターネットショートカットのオプション:

--write-link                    現在のプラットフォームに応じたインターネットショートカットファイル
                                (.url、.webloc、または .desktop)を書き込みます。URL は OS に
                                キャッシュされる場合があります
--write-url-link                Windows のインターネットショートカット(.url)を書き込みます。
                                OS はファイルパスに基づいて URL をキャッシュします
--write-webloc-link             macOS のインターネットショートカット(.webloc)を書き込みます
--write-desktop-link            Linux のインターネットショートカット(.desktop)を書き込みます

詳細度とシミュレーションのオプション:

-q, --quiet                     quiet モードを有効にします。--verbose と併用した場合、
                                ログを stderr に出力します
--no-quiet                      quiet モードを無効にします。(デフォルト)
--no-warnings                   警告を無視します
-s, --simulate                  動画をダウンロードせず、ディスクにも何も書き込みません
--no-simulate                   印刷/一覧表示のオプションを使用している場合も、
                                動画をダウンロードします
--ignore-no-formats-error       「動画フォーマットがありません」エラーを無視します。動画を
                                実際にダウンロードできない場合でも、メタデータを抽出するのに
                                便利です
                                (実験的機能)
--no-ignore-no-formats-error    ダウンロード可能な動画フォーマットが見つからない場合に
                                エラーを発生させます(デフォルト)
--skip-download                 動画はダウンロードしませんが、関連するすべてのファイルを
                                書き込みます(別名:--no-download)
-O, --print [WHEN:]TEMPLATE     画面に出力するフィールド名または出力テンプレート。
                                任意で、出力するタイミングを「:」で区切って前に指定できます。
                                「WHEN」に指定できる値は、--use-postprocessor の値と同じです
                                (デフォルト:video)。
                                --quiet を暗黙的に指定します。--no-simulate が指定されている
                                場合、または WHEN の後続の段階が使用されている場合を除き、
                                --simulate を暗黙的に指定します。このオプションは複数回
                                使用できます
--print-to-file [WHEN:]TEMPLATE FILE
                                指定したテンプレートをファイルに追記します。WHEN と
                                TEMPLATE の値は --print と同じです。FILE には出力テンプレートと
                                同じ構文を使用します。このオプションは複数回使用できます
-j, --dump-json                 quiet モードで、各動画の JSON 情報を出力します。
                                --no-simulate が指定されていない場合はシミュレーションを
                                行います。利用可能なキーの説明については「OUTPUT TEMPLATE」
                                を参照してください
-J, --dump-single-json          quiet モードで、渡された各 URL または infojson の JSON 情報を
                                出力します。--no-simulate が指定されていない場合は
                                シミュレーションを行います。URL がプレイリストを参照している
                                場合、プレイリスト全体の情報を1行で出力します
--force-write-archive           -s または他のシミュレーションオプションが使用されている場合も、
                                エラーが発生しない限り、ダウンロードアーカイブのエントリーを
                                強制的に書き込みます(別名:--force-download-archive)
--newline                       進行状況バーを改行して出力します
--no-progress                   進行状況バーを出力しません
--progress                      quiet モードの場合も進行状況バーを表示します
--console-title                 コンソールのタイトルバーに進行状況を表示します
--progress-template [TYPES:]TEMPLATE
                                進行状況の出力用テンプレート。任意で、次のいずれかを前に
                                指定できます:「download:」(デフォルト)、
                                「download-title:」(コンソールのタイトル)、
                                「postprocess:」または「postprocess-title:」。
                                動画のフィールドには「info」キーからアクセスでき、
                                進行状況の属性には「progress」キーからアクセスできます。
                                例:
                                --console-title --progress-template
                                "download-title:%(info.id)s-%(progress.eta)s"
--progress-delta SECONDS        進行状況を出力する間隔(デフォルト:0)
-v, --verbose                   各種デバッグ情報を出力します
--dump-pages                    問題のデバッグ用に、ダウンロードしたページを base64 で
                                エンコードして出力します(非常に詳細な情報です)
--write-pages                   問題のデバッグ用に、ダウンロードした中間ページを
                                カレントディレクトリ内のファイルに書き込みます
--print-traffic                 送受信した HTTP トラフィックを表示します

回避策:

--encoding ENCODING             指定したエンコーディングを強制します(実験的)
--legacy-server-connect         RFC 5746 の安全な再ネゴシエーションに対応していない
                                サーバーへの HTTPS 接続を明示的に許可します
--no-check-certificates         HTTPS 証明書の検証を無効にします
--prefer-insecure               動画に関する情報を取得する際に、暗号化されていない
                                接続を優先します
--add-headers FIELD:VALUE       カスタム HTTP ヘッダーとその値を、コロン「:」で
                                区切って指定します。このオプションは複数回指定できます
--bidi-workaround               双方向テキストに対応していない端末での問題を回避します。
                                PATH に bidiv または fribidi 実行ファイルが必要です
--sleep-requests SECONDS        データ抽出中、リクエスト間に待機する秒数
--sleep-interval SECONDS        各ダウンロードの前に待機する秒数です。--max-sleep-interval
                                と併用する場合の最小待機時間です
                                (エイリアス:--min-sleep-interval)
--max-sleep-interval SECONDS    待機する秒数の最大値です。--min-sleep-interval と
                                併用する場合にのみ使用できます
--sleep-subtitles SECONDS       各字幕ダウンロードの前に待機する秒数

動画形式のオプション:

-f, --format FORMAT             動画形式のコードです。詳しくは「FORMAT SELECTION」を
                                参照してください
-S, --format-sort SORTORDER     指定したフィールドで形式を並べ替えます。詳しくは
                                「Sorting Formats」を参照してください
--format-sort-reset             以前にユーザーが指定した並べ替え順を無視し、
                                デフォルトに戻します
--format-sort-force             ユーザーが指定した並べ替え順をすべてのフィールドより
                                優先します。詳しくは「Sorting Formats」を参照してください
                                (エイリアス:--S-force)
--no-format-sort-force          一部のフィールドがユーザー指定の並べ替え順より優先されます
                                (デフォルト)
--video-multistreams            複数の動画ストリームを1つのファイルに
                                結合できます
--no-video-multistreams         出力ファイルごとにダウンロードする動画ストリームは
                                1つだけです(デフォルト)
--audio-multistreams            複数の音声ストリームを1つのファイルに
                                結合できます
--no-audio-multistreams         出力ファイルごとにダウンロードする音声ストリームは
                                1つだけです(デフォルト)
--prefer-free-formats           同じ品質であれば、プロプライエタリな形式より
                                フリーコンテナの動画形式を優先します。「-S ext」と併用すると、
                                品質にかかわらずフリーコンテナを厳密に優先します
--no-prefer-free-formats        フリーコンテナを特別に優先しません(デフォルト)
--check-formats                 実際にダウンロード可能な形式だけが選択されるように
                                確認します
--check-all-formats             すべての形式が実際にダウンロード可能かどうかを
                                確認します
--no-check-formats              形式が実際にダウンロード可能かどうかを
                                確認しません
-F, --list-formats              各動画で利用可能な形式を一覧表示します。
                                --no-simulate を指定しない限りシミュレーションします
--merge-output-format FORMAT    形式の結合に使用できるコンテナを「/」で区切って指定します
                                (例:「mp4/mkv」)。
                                結合が不要な場合は無視されます。(現在サポートされている形式:
                                avi、flv、mkv、mov、mp4、webm)

字幕オプション:

--write-subs                    字幕ファイルを書き込みます
--no-write-subs                 字幕ファイルを書き込みません(デフォルト)
--write-auto-subs               自動生成された字幕ファイルを書き込みます
                                (別名:--write-automatic-subs)
--no-write-auto-subs            自動生成された字幕を書き込みません
                                (デフォルト)(別名:--no-write-automatic-subs)
--list-subs                     各動画で利用可能な字幕を一覧表示します。
                                --no-simulate を使用しない限り、シミュレーションを実行します
--sub-format FORMAT             字幕形式。形式の優先順位を「/」で区切って指定します。
                                例:「srt」または「ass/srt/best」
--sub-langs LANGS               ダウンロードする字幕の言語(正規表現を指定可能)
                                または「all」をコンマで区切って指定します。例:
                                --sub-langs "en.*,ja"(「en」の後に任意の文字が
                                0 個以上続く文字列に一致する正規表現パターンです)。
                                言語コードの先頭に「-」を付けると、要求する言語から
                                除外できます。例:--sub-
                                langs all,-live_chat。利用可能な言語タグの一覧には
                                --list-subs を使用してください

認証オプション:

-u, --username USERNAME         このアカウント ID でログインします
-p, --password PASSWORD         アカウントのパスワード。このオプションを省略すると、
                                yt-dlp が対話的に入力を求めます
-2, --twofactor TWOFACTOR       二要素認証コード
-n, --netrc                     .netrc の認証データを使用します
--netrc-location PATH           .netrc 認証データの場所。
                                パスまたはその格納ディレクトリを指定します。
                                デフォルトは ~/.netrc です
--netrc-cmd NETRC_CMD           抽出器の認証情報を取得するために実行するコマンド
--video-password PASSWORD       動画固有のパスワード
--ap-mso MSO                    Adobe Pass の複数システム事業者(テレビ
                                プロバイダー)識別子です。利用可能な MSO の一覧には
                                --ap-list-mso を使用してください
--ap-username USERNAME          複数システム事業者アカウントのログイン名
--ap-password PASSWORD          複数システム事業者アカウントのパスワード。
                                このオプションを省略すると、yt-dlp が対話的に
                                入力を求めます
--ap-list-mso                   サポートされている複数システム事業者をすべて一覧表示します
--client-certificate CERTFILE   PEM 形式のクライアント証明書ファイルのパス。
                                秘密鍵を含めることもできます
--client-certificate-key KEYFILE
                                クライアント証明書の秘密鍵ファイルのパス
--client-certificate-password PASSWORD
                                暗号化されている場合のクライアント証明書の秘密鍵の
                                パスワード。指定されておらず、鍵が暗号化されている場合、
                                yt-dlp が対話的に入力を求めます

後処理オプション:

-x, --extract-audio             動画ファイルを音声のみのファイルに変換します
                                (ffmpeg と ffprobe が必要です)
--audio-format FORMAT           -x の使用時に音声を変換する形式です
                                (現在サポートされている形式:best(デフォルト)、
                                aac、alac、flac、m4a、mp3、opus、vorbis、
                                wav)。--remux-video と同様の構文で
                                複数のルールを指定できます
--audio-quality QUALITY         -x で音声を変換する際に使用する
                                ffmpeg の音質を指定します。VBR の場合は
                                0(最高)から 10(最低)の値、または
                                128K のような特定のビットレートを指定します
                                (デフォルトは 5)
--remux-video FORMAT            必要に応じて動画を別のコンテナにリマックスします
                                (現在サポートされている形式:avi、flv、
                                gif、mkv、mov、mp4、webm、aac、aiff、alac、
                                flac、m4a、mka、mp3、ogg、opus、vorbis、
                                wav)。出力先のコンテナが動画/音声コーデックに
                                対応していない場合、リマックスは失敗します。
                                複数のルールを指定できます。例:
                                "aac>m4a/mov>mp4/mkv" は aac を m4a に、
                                mov を mp4 に、それ以外を mkv にリマックスします
--recode-video FORMAT           必要に応じて動画を別の形式に再エンコードします。
                                構文と対応形式は --remux-video と同じです
--postprocessor-args NAME:ARGS  後処理プロセッサに引数を渡します。
                                後処理プロセッサ/実行ファイル名と引数を
                                コロン ":" で区切って指定し、指定した
                                後処理プロセッサ/実行ファイルに引数を渡します。
                                対応する PP は次のとおりです:
                                Merger、ModifyChapters、SplitChapters、
                                ExtractAudio、VideoRemuxer、VideoConvertor、
                                Metadata、EmbedSubtitle、EmbedThumbnail、
                                SubtitlesConvertor、ThumbnailsConvertor、
                                FixupStretched、FixupM4a、FixupM3u8、
                                FixupTimestamp、FixupDuration。対応する
                                実行ファイルは次のとおりです:AtomicParsley、
                                FFmpeg、FFprobe。また、"PP+EXE:ARGS" と指定すると、
                                指定した後処理プロセッサで使用される場合に限り、
                                指定した実行ファイルに引数を渡せます。
                                さらに、ffmpeg/ffprobe では、引数を指定した入力/
                                出力ファイルの前に渡すため、"_i"/"_o" を
                                プレフィックスに追加できます。必要に応じて、
                                その後に数字を付けることもできます。例:
                                --ppa "Merger+ffmpeg_i1:-v quiet"。
                                このオプションは複数回指定して、異なる
                                後処理プロセッサに異なる引数を渡せます。
                                (別名:--ppa)
-k, --keep-video                後処理後も中間動画ファイルをディスク上に保持します
--no-keep-video                 後処理後に中間動画ファイルを削除します
                                (デフォルト)
--post-overwrites               後処理済みファイルを上書きします(デフォルト)
--no-post-overwrites            後処理済みファイルを上書きしません
--embed-subs                    字幕を動画に埋め込みます(mp4、webm、mkv
                                動画のみ)
--no-embed-subs                 字幕を埋め込みません(デフォルト)
--embed-thumbnail               サムネイルをカバーアートとして動画に埋め込みます
--no-embed-thumbnail            サムネイルを埋め込みません(デフォルト)
--embed-metadata                メタデータを動画ファイルに埋め込みます。
                                --no-embed-chapters/--no-embed-info-json を
                                使用しない限り、チャプター/infojson も
                                埋め込まれます(別名:--add-metadata)
--no-embed-metadata             メタデータをファイルに追加しません(デフォルト)
                                (別名:--no-add-metadata)
--embed-chapters                チャプターマーカーを動画ファイルに追加します
                                (別名:--add-chapters)
--no-embed-chapters             チャプターマーカーを追加しません(デフォルト)
                                (別名:
                                --no-add-chapters)
--embed-info-json               infojson を mkv/mka 動画ファイルに
                                添付ファイルとして埋め込みます
--no-embed-info-json            infojson を動画ファイルに添付ファイルとして
                                埋め込みません
--parse-metadata [WHEN:]FROM:TO
                                タイトル/アーティストなどの追加メタデータを
                                他のフィールドから解析します。詳細は
                                "MODIFYING METADATA" を参照してください。
                                "WHEN" に指定できる値は --use-postprocessor と
                                同じです(デフォルト:pre_process)
--replace-in-metadata [WHEN:]FIELDS REGEX REPLACE
                                指定した正規表現を使ってメタデータフィールド内の
                                テキストを置換します。このオプションは
                                複数回使用できます。"WHEN" に指定できる値は
                                --use-postprocessor と同じです
                                (デフォルト:pre_process)
--xattrs                        メタデータを動画ファイルの xattrs に書き込みます
                                (Dublin Core および XDG 標準を使用)
--concat-playlist POLICY        プレイリスト内の動画を連結します。指定できる値は
                                "never"、"always"、"multi_video" のいずれかです
                                (デフォルト。動画が単一の番組を構成する場合のみ)。
                                連結するには、すべての動画ファイルで
                                コーデックとストリーム数が同じである必要があります。
                                "--paths" と "--output" で "pl_video:" プレフィックスを
                                使用すると、連結したファイルの出力ファイル名を
                                設定できます。詳細は "OUTPUT TEMPLATE" を参照してください
--fixup POLICY                  ファイルの既知の不具合を自動的に修正します。
                                指定できる値は never(何もしない)、warn(警告のみ)、
                                detect_or_warn(デフォルト。可能であればファイルを修正し、
                                そうでなければ警告)、force(ファイルがすでに存在しても
                                修正を試みる)です
--ffmpeg-location PATH          ffmpeg バイナリの場所です。バイナリへのパス、
                                またはバイナリを含むディレクトリを指定します
--exec [WHEN:]CMD               コマンドを実行します。実行タイミングを指定する場合は、
                                コロン ":" で区切ってコマンドの前に付けます。
                                "WHEN" に指定できる値は --use-postprocessor と
                                同じです(デフォルト:after_move)。出力テンプレートと
                                同じ構文を使用して、任意のフィールドをコマンドの引数として
                                渡せます。ただし、セキュリティ上の理由から、使用できる
                                変換は "i"/"d"(符号付き整数の 10 進数)、
                                "f"(浮動小数点数の 10 進数)、"q"(シェル用に
                                クォート)のみです。フィールドが渡されない場合は、
                                %(filepath,_filename|)q がコマンドの末尾に追加されます。
                                このオプションは複数回使用できます
--no-exec                       以前に定義した --exec をすべて削除します
--convert-subs FORMAT           字幕を別の形式に変換します
                                (現在サポートされている形式:ass、lrc、srt、vtt)。
                                "--convert-subs none" を指定すると変換を無効にします
                                (デフォルト)(別名:--convert-
                                subtitles)
--convert-thumbnails FORMAT     サムネイルを別の形式に変換します
                                (現在サポートされている形式:jpg、png、webp)。
                                "--remux-video" と同様の構文で複数のルールを
                                指定できます。"--convert-
                                thumbnails none" を指定すると変換を無効にします
                                (デフォルト)
--split-chapters                内部チャプターに基づいて動画を複数のファイルに分割します。
                                "--paths" と "--output" で "chapter:" プレフィックスを
                                使用すると、分割したファイルの出力ファイル名を
                                設定できます。詳細は "OUTPUT TEMPLATE" を参照してください
--no-split-chapters             チャプターに基づいて動画を分割しません(デフォルト)
--remove-chapters REGEX         指定した正規表現にタイトルが一致するチャプターを
                                削除します。構文は --download-sections と同じです。
                                このオプションは複数回使用できます
--no-remove-chapters            ファイルからチャプターを削除しません
                                (デフォルト)
--force-keyframes-at-cuts       セクションのダウンロード/分割/削除時に、
                                カット位置にキーフレームを強制的に設定します。
                                再エンコードが必要なため処理は遅くなりますが、
                                カット付近の動画アーティファクトを減らせる場合があります
--no-force-keyframes-at-cuts    カット/分割時にチャプター付近でキーフレームを
                                強制的に設定しません(デフォルト)
--use-postprocessor NAME[:ARGS]
                                有効にするプラグイン後処理プロセッサの
                                大文字と小文字を区別する名前と、必要に応じて
                                渡す引数を指定します。引数はコロン ":" で区切ります。
                                ARGS はセミコロン ";" で区切った NAME=VALUE のリストです。
                                "when" 引数は後処理プロセッサを実行するタイミングを
                                指定します。指定できる値は "pre_process"(動画の抽出後)、
                                "after_filter"(動画がフィルターを通過した後)、
                                "video"(--format の後、--print/--output の前)、
                                "before_dl"(各動画のダウンロード前)、
                                "post_process"(各動画のダウンロード後。デフォルト)、
                                "after_move"(動画ファイルを最終的な場所に移動した後)、
                                "after_video"(動画のすべての形式のダウンロードと
                                処理が完了した後)、"playlist"(プレイリストの最後)です。
                                このオプションは複数回使用して、
                                異なる後処理プロセッサを追加できます

SponsorBlock のオプション:

ダウンロードした YouTube 動画にチャプターを作成する、またはさまざまなセグメント(スポンサー、 イントロなど)を削除するには、SponsorBlock API を使用します。

--sponsorblock-mark CATS        チャプターを作成する SponsorBlock のカテゴリを、
                                カンマ区切りで指定します。使用可能な
                                カテゴリは sponsor、intro、outro、selfpromo、preview、
                                filler、interaction、music_offtopic、hook、poi_highlight、
                                chapter、all、default(=all)です。カテゴリの前に
                                「-」を付けると、そのカテゴリを除外できます。
                                カテゴリの説明については [1] を参照してください。例:
                                --sponsorblock-mark
                                all,-preview
                                [1] https://wiki.sponsor.ajay.app/w/Segment_Categories
--sponsorblock-remove CATS      動画ファイルから削除する SponsorBlock のカテゴリを、
                                カンマ区切りで指定します。カテゴリが mark と remove の
                                両方に含まれる場合は、remove が優先されます。構文と
                                使用可能なカテゴリは --sponsorblock-mark と同じですが、
                                「default」は「all,-filler」を意味し、poi_highlight と
                                chapter は使用できません。
--sponsorblock-chapter-title TEMPLATE
                                --sponsorblock-mark で作成する SponsorBlock チャプターの
                                タイトルに使用する出力テンプレートです。使用できる
                                フィールドは start_time、end_time、category、
                                categories、name、category_names のみです。既定値は
                                "[SponsorBlock]: %(category_names)l" です。
--no-sponsorblock               --sponsorblock-mark と
                                --sponsorblock-remove の両方を無効にします。
--sponsorblock-api URL          SponsorBlock API の場所。既定値は
                                https://sponsor.ajay.app です。

Extractor のオプション:

--extractor-retries RETRIES     既知の extractor エラーが発生した場合の再試行回数
                                (既定値は 3)、または「infinite」を指定します。
--allow-dynamic-mpd             動的 DASH マニフェストを処理します(既定値)。
                                (別名:--no-ignore-dynamic-mpd)
--ignore-dynamic-mpd            動的 DASH マニフェストを処理しません。
                                (別名:--no-allow-dynamic-mpd)
--hls-split-discontinuity       広告の挿入など、不連続点で HLS プレイリストを
                                別々の形式に分割します。
--no-hls-split-discontinuity    広告の挿入など、不連続点で HLS プレイリストを
                                別々の形式に分割しません
                                (既定値)。
--extractor-args IE_KEY:ARGS    ARGS 引数を IE_KEY extractor に渡します。
                                詳細については「EXTRACTOR ARGUMENTS」を参照してください。
                                このオプションを複数回使用して、異なる extractor に
                                引数を指定できます。

プリセットエイリアス:

利便性と使いやすさのために、あらかじめ定義されたエイリアスです。今後の yt-dlp のバージョンでプリセットが追加または調整される場合がありますが、既存のプリセット名が 変更または削除されることはありません

-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

設定

設定ファイルにサポートされているコマンドラインオプションを記述して、yt-dlp を設定できます。設定は次の場所から読み込まれます。

  1. メイン設定:

    • --config-locations で指定されたファイル
  2. ポータブル設定:(ポータブルインストールの場合に推奨)

    • バイナリを使用する場合は、バイナリと同じディレクトリにある yt-dlp.conf
    • ソースコードから実行する場合は、yt_dlp の親ディレクトリにある yt-dlp.conf
  3. ホーム設定:

    • -P で指定されたホームパスにある yt-dlp.conf
    • -P が指定されていない場合は、現在のディレクトリが検索されます
  4. ユーザー設定:

    • ${XDG_CONFIG_HOME}/yt-dlp.conf
    • ${XDG_CONFIG_HOME}/yt-dlp/config(Linux/macOS で推奨)
    • ${XDG_CONFIG_HOME}/yt-dlp/config.txt
    • ${APPDATA}/yt-dlp.conf
    • ${APPDATA}/yt-dlp/config(Windows で推奨)
    • ${APPDATA}/yt-dlp/config.txt
    • ~/yt-dlp.conf
    • ~/yt-dlp.conf.txt
    • ~/.yt-dlp/config
    • ~/.yt-dlp/config.txt

    こちらも参照してください:環境変数に関する注意事項

  5. システム設定:

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

たとえば、次の設定ファイルを使用すると、yt-dlp は常に音声を抽出し、更新日時をコピーし、プロキシを使用して、すべての動画をホームディレクトリの YouTube ディレクトリに保存します:

# 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

注:設定ファイルのオプションは、通常のコマンドライン呼び出しで使用するスイッチと同じです。そのため、-o や --proxy のように - または -- の後に空白を入れてはいけません。- o や -- proxy のようにしてはいけません。また、必要に応じて UNIX シェルと同じように引用符で囲む必要があります。

特定の yt-dlp の実行で設定ファイルをすべて無効にするには、--ignore-config を使用できます。いずれかの設定ファイル内で --ignore-config が見つかった場合、それ以降の設定は読み込まれません。たとえば、ポータブル設定ファイルにこのオプションを記述すると、ホーム、ユーザー、およびシステムの設定が読み込まれなくなります。また、(後方互換性のため)システム設定ファイル内で --ignore-config が見つかった場合、ユーザー設定は読み込まれません。

設定ファイルのエンコーディング

設定ファイルは、UTF BOM がある場合はそれに従って、ない場合はシステムロケールのエンコーディングでデコードされます。

ファイルを別の方法でデコードするには、ファイルの先頭に # coding: ENCODING を追加します(例:# coding: shift-jis)。その前に、空白や BOM を含め、文字を入れてはいけません。

netrc による認証

認証に対応する抽出器で、--username と --password を指定してログイン情報とパスワードを渡す場合、yt-dlp を実行するたびに認証情報をコマンドライン引数として渡さずに済み、シェルのコマンド履歴に平文のパスワードが残るのを防ぐため、認証情報の自動保存を設定することもできます。抽出器ごとに .netrc ファイルを使用して設定できます。そのためには、--netrc-location に .netrc ファイルを作成し、自分だけが読み書きできるように権限を制限してください:

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

その後、次の形式で抽出器の認証情報を追加できます。ここで extractor は抽出器の名前を小文字で指定します:

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

例:

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

.netrc ファイルによる認証を有効にするには、yt-dlp に --netrc を渡すか、設定ファイルに記述してください。

.netrc ファイルのデフォルトの場所は ~ です(以下を参照)。

.netrc ファイルを使用する代わりに、抽出器の認証情報を提供するカスタムシェルコマンドを設定することもできます。.netrc ファイルにはパスワードが平文で保存されるという欠点があります。カスタムシェルコマンドを設定するには、--netrc-cmd パラメーターを指定します。このコマンドは認証情報を netrc 形式で出力し、成功時には 0 を返す必要があります。それ以外の値はエラーとして扱われます。コマンド内の {} は抽出器の名前に置き換えられるため、適切な抽出器の認証情報を選択できます。

例:.authinfo.gpg として保存された暗号化済みの .netrc ファイルを使用するには

yt-dlp --netrc-cmd 'gpg --decrypt ~/.authinfo.gpg' 'https://www.youtube.com/watch?v=YE7VzlLtp-4'
環境変数についての注意
  • 環境変数は通常、UNIX では ${VARIABLE}/$VARIABLE、Windows では %VARIABLE% と指定しますが、このドキュメントでは常に ${VARIABLE} と表記します
  • yt-dlp では、パスを指定するオプションにも Windows 上で UNIX 形式の変数を使用できます。例:--output、--config-locations
  • 未設定の場合、${XDG_CONFIG_HOME} のデフォルト値は ~/.config、${XDG_CACHE_HOME} のデフォルト値は ~/.cache です
  • Windows では、~ は ${HOME} が設定されている場合はその値を指し、そうでない場合は ${USERPROFILE} または ${HOMEDRIVE}${HOMEPATH} を指します
  • Windows では、${USERPROFILE} は通常 C:\Users\<user name> を指し、${APPDATA} は ${USERPROFILE}\AppData\Roaming を指します

出力テンプレート

-o オプションは出力ファイル名のテンプレートを指定するために使用し、-P オプションは各種類のファイルの保存先パスを指定するために使用します。

要約: 例に移動。

-o の最も簡単な使い方は、単一のファイルをダウンロードする場合にテンプレート引数を設定しないことです。たとえば、yt-dlp -o funny_video.flv "https://some/video" のように指定します(このようにファイル拡張子を固定することは推奨されません。後処理で問題が起きる可能性があります)。

ただし、ダウンロード時に各動画に応じて置き換えられる特殊なシーケンスを含めることもできます。特殊なシーケンスは、Python の文字列書式設定操作に従って書式設定できます。例:%(NAME)s、%(NAME)05d。つまり、パーセント記号の後に括弧で囲まれた名前が続き、その後に書式設定操作が続きます。

フィールド名自体(括弧内の部分)にも、次のような特殊な書式設定を使用できます。

  1. オブジェクトのトラバーサル:メタデータ内の辞書やリストは、ドット . を区切り文字としてトラバースできます。例:%(tags.0)s、%(subtitles.en.-1.ext)s。コロン : を使って Python のスライスを指定できます。例:%(id.3:7)s、%(id.6:2:-1)s、%(formats.:.format_id)s。波括弧 {} を使うと、特定のキーのみを含む辞書を作成できます。例:%(formats.:.{format_id,height})#j。空のフィールド名 %()s は infodict 全体を指します。例:%(.{id,title})s。この方法で利用可能になるすべてのフィールドが以下に列挙されているわけではないので注意してください。これらのフィールドを確認するには -j を使用してください

  2. 算術演算:数値フィールドに対して、+、-、* を使った簡単な算術演算ができます。例:%(playlist_index+10)03d、%(n_entries+1-playlist_index)d

  3. 日付/時刻の書式設定:フィールド名の後に > で区切って指定すると、strftime の書式設定に従って日付/時刻フィールドを書式設定できます。例:%(duration>%H-%M-%S)s、%(upload_date>%Y-%m-%d)s、%(epoch-3600>%H-%M-%S)s

  4. 代替フィールド:, で区切って代替フィールドを指定できます。例:%(release_date>%Y,upload_date>%Y|Unknown)s

  5. 置換:str.format ミニ言語に従って、& で区切ることで置換値を指定できます。フィールドが空でない場合、実際のフィールド内容の代わりにこの置換値が使用されます。代替フィールドを考慮した後に処理されるため、代替フィールドのいずれかが空でない場合に置換値が使用されます。例:%(chapters&has chapters|no chapters)s、%(title&TITLE={:>20}|NO TITLE)s

  6. デフォルト値:フィールドが空の場合に使用する固定のデフォルト値は、| で区切って指定できます。これは --output-na-placeholder より優先されます。例:%(uploader|Unknown)s

  7. 追加の変換:通常の書式タイプ diouxXeEfFgGcrs に加えて、yt-dlp は B = Bytes、j = json(整形出力にはフラグ #、Unicode には +)、h = HTML エスケープ、l = カンマ区切りのリスト(\n で改行区切りにするにはフラグ #)、q = ターミナル向けに引用された文字列(リストを別々の引数に分割するにはフラグ #)、D = 十進接尾辞の追加(例:10M)(係数に 1024 を使用するにはフラグ #)、S = ファイル名としてサニタイズ(制限付きにするにはフラグ #)への変換もサポートしています。

  8. Unicode 正規化:書式タイプ U を Unicode の NFC 正規化に使用できます。代替形式フラグ(#)を指定すると正規化が NFD に変わり、変換フラグ + を指定すると NFKC/NFKD の互換等価正規化を使用できます。例:%(title)+.100U は NFKC です。

まとめると、フィールドの一般的な構文は次のとおりです。

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

さらに、ファイルの種類とテンプレートをコロン : で区切って指定することで、各種メタデータファイルに対して、一般的な出力テンプレートとは別の出力テンプレートを設定できます。サポートされているファイルの種類は subtitle、thumbnail、description、annotation(非推奨)、infojson、link、pl_thumbnail、pl_description、pl_infojson、chapter、pl_video です。例:-o "%(title)s.%(ext)s" -o "thumbnail:%(title)s/%(title)s.%(ext)s" と指定すると、サムネイルは動画と同じ名前のフォルダーに保存されます。いずれかのテンプレートが空の場合、その種類のファイルは書き込まれません。例:--write-thumbnail -o "thumbnail:" と指定すると、サムネイルは動画には書き込まれず、プレイリストに対してのみ書き込まれます。

注:後処理(結合など)により、実際の出力ファイル名は異なる場合があります。すべての後処理が完了した後の名前を取得するには、--print after_move:filepath を使用してください。

使用可能なフィールドは次のとおりです。

  • id (string): 動画の識別子
  • title (string): 動画のタイトル
  • fulltitle (string): ライブ配信のタイムスタンプと一般的なタイトルを除いた動画のタイトル
  • ext (string): 動画ファイルの拡張子
  • alt_title (string): 動画の別タイトル
  • description (string): 動画の説明
  • display_id (string): 動画の代替識別子
  • uploader (string): 動画のアップロード者の氏名
  • uploader_id (string): 動画のアップロード者のニックネームまたは ID
  • uploader_url (string): 動画のアップロード者のプロフィール URL
  • license (string): 動画に適用されるライセンス名
  • creators (list): 動画の作成者
  • creator (string): 動画の作成者。カンマ区切り
  • timestamp (numeric): 動画が視聴可能になった時点の UNIX タイムスタンプ
  • upload_date (string): 動画のアップロード日(UTC、YYYYMMDD)
  • release_timestamp (numeric): 動画が公開された時点の UNIX タイムスタンプ
  • release_date (string): 動画が UTC で公開された日付(YYYYMMDD)
  • release_year (numeric): 動画またはアルバムが公開された年(YYYY)
  • modified_timestamp (numeric): 動画が最後に変更された時点の UNIX タイムスタンプ
  • modified_date (string): 動画が UTC で最後に変更された日付(YYYYMMDD)
  • channel (string): 動画がアップロードされたチャンネルの正式名称
  • channel_id (string): チャンネルの ID
  • channel_url (string): チャンネルの URL
  • channel_follower_count (numeric): チャンネルのフォロワー数
  • channel_is_verified (boolean): プラットフォーム上でチャンネルが認証済みかどうか
  • location (string): 動画の撮影が行われた場所
  • duration (numeric): 動画の長さ(秒)
  • duration_string (string): 動画の長さ(HH:mm:ss)
  • view_count (numeric): プラットフォーム上で動画を視聴したユーザー数
  • concurrent_view_count (numeric): 現在、プラットフォーム上で動画を視聴しているユーザー数。
  • like_count (numeric): 動画への肯定的な評価の数
  • dislike_count (numeric): 動画への否定的な評価の数
  • repost_count (numeric): 動画の再投稿数
  • average_rating (numeric): ユーザーによる平均評価。評価尺度はウェブページによって異なります
  • comment_count (numeric): 動画へのコメント数(一部の抽出器ではコメントは最後にのみダウンロードされるため、このフィールドは使用できません)
  • save_count (numeric): 動画が保存またはブックマークされた回数
  • age_limit (numeric): 動画の年齢制限(歳)
  • live_status (string): "not_live"、"is_live"、"is_upcoming"、"was_live"、"post_live"(ライブ配信済みだが、VOD がまだ処理されていない)のいずれか
  • is_live (boolean): この動画がライブ配信か、長さが固定された動画か
  • was_live (boolean): この動画が元々ライブ配信だったかどうか
  • playable_in_embed (string): この動画を他のサイトの埋め込みプレーヤーで再生できるかどうか
  • availability (string): 動画が "private"、"premium_only"、"subscriber_only"、"needs_auth"、"unlisted"、"public" のいずれか
  • media_type (string): サイトによって分類されたメディアの種類(例:"episode"、"clip"、"trailer")
  • start_time (numeric): URL で指定された、再生を開始する時間(秒)
  • end_time (numeric): URL で指定された、再生を終了する時間(秒)
  • extractor (string): 抽出器の名前
  • extractor_key (string): 抽出器のキー名
  • epoch (numeric): 情報の抽出が完了した時点の Unix エポック
  • autonumber (numeric): 各ダウンロードで増加する番号。--autonumber-start から開始し、5 桁になるよう先頭にゼロを付けます
  • video_autonumber (numeric): 動画ごとに増加する番号
  • n_entries (numeric): プレイリストから抽出されたアイテムの合計数
  • playlist_id (string): 動画を含むプレイリストの識別子
  • playlist_title (string): 動画を含むプレイリストの名前
  • playlist (string): playlist_title が利用可能な場合はその値、そうでない場合は playlist_id
  • playlist_count (numeric): プレイリスト内のアイテムの合計数。プレイリスト全体が抽出されない場合、判明しないことがあります
  • playlist_index (numeric): プレイリスト内の動画のインデックス。最終インデックスに合わせて先頭にゼロを付けます
  • playlist_autonumber (numeric): プレイリストのダウンロードキュー内での動画の位置。プレイリストの合計数に合わせて先頭にゼロを付けます
  • playlist_uploader (string): プレイリストのアップロード者の氏名
  • playlist_uploader_id (string): プレイリストのアップロード者のニックネームまたは ID
  • playlist_channel (string): プレイリストをアップロードしたチャンネルの表示名
  • playlist_channel_id (string): プレイリストをアップロードしたチャンネルの識別子
  • playlist_webpage_url (string): プレイリストのウェブページ URL
  • webpage_url (string): yt-dlp に渡すと同じ結果が再度得られる動画ウェブページの URL
  • webpage_url_basename (string): ウェブページ URL のベース名
  • webpage_url_domain (string): ウェブページ URL のドメイン
  • original_url (string): ユーザーが指定した URL(プレイリストのエントリーの場合は webpage_url と同じ)
  • categories (list): 動画が属するカテゴリのリスト
  • tags (list): 動画に付けられたタグのリスト
  • cast (list): 出演者のリスト フィルタリング形式のすべてのフィールドも使用できます

論理的なチャプターまたはセクションに属する動画で使用できます:

  • chapter (string): 動画が属するチャプターの名前またはタイトル
  • chapter_number (numeric): 動画が属するチャプターの番号
  • chapter_id (string): 動画が属するチャプターの ID

何らかのシリーズまたは番組のエピソードである動画で使用できます:

  • series (string): 動画エピソードが属するシリーズまたは番組のタイトル
  • series_id (string): 動画エピソードが属するシリーズまたは番組の ID
  • season (string): 動画エピソードが属するシーズンのタイトル
  • season_number (numeric): 動画エピソードが属するシーズンの番号
  • season_id (string): 動画エピソードが属するシーズンの ID
  • episode (string): 動画エピソードのタイトル
  • episode_number (numeric): シーズン内での動画エピソードの番号
  • episode_id (string): 動画エピソードの ID

音楽アルバムのトラックまたは一部であるメディアで使用できます:

  • track (string): トラックのタイトル
  • track_number (numeric): アルバムまたはディスク内でのトラックの番号
  • track_id (string): トラックの ID
  • artists (list): トラックのアーティスト
  • artist (string): トラックのアーティスト;カンマ区切り
  • genres (list): トラックのジャンル
  • genre (string): トラックのジャンル;カンマ区切り
  • composers (list): 楽曲の作曲者
  • composer (string): 楽曲の作曲者;カンマ区切り
  • album (string): トラックが属するアルバムのタイトル
  • album_type (string): アルバムの種類
  • album_artists (list): アルバムに参加したすべてのアーティスト
  • album_artist (string): アルバムに参加したすべてのアーティスト;カンマ区切り
  • disc_number (numeric): トラックが属するディスクまたはその他の物理メディアの番号

--download-sections を使用する場合、および内部チャプターを持つ動画で --split-chapters を使用する場合の chapter: プレフィックスでのみ使用できます:

  • section_title (string): チャプターのタイトル
  • section_number (numeric): ファイル内でのチャプターの番号
  • section_start (numeric): チャプターの開始時間(秒)
  • section_end (numeric): チャプターの終了時間(秒)

--print で使用する場合にのみ使用できます:

  • urls (string): 要求されたすべての形式の URL(1 行に 1 つ)
  • filename (string): 動画ファイルの名前。実際のファイル名は異なる場合があります
  • formats_table (table): --list-formats で出力される動画形式テーブル
  • thumbnails_table (table): --list-thumbnails で出力されるサムネイル形式テーブル
  • subtitles_table (table): --list-subs で出力される字幕形式テーブル
  • automatic_captions_table (table): --list-subs で出力される自動字幕形式テーブル

動画がダウンロードされた後(post_process/after_move)にのみ使用できます:

  • filepath: ダウンロードされた動画ファイルの実際のパス

--sponsorblock-chapter-title でのみ使用できます:

  • start_time (numeric): チャプターの開始時間(秒)
  • end_time (numeric): チャプターの終了時間(秒)
  • categories (list): チャプターが属する SponsorBlock カテゴリ
  • category (string): チャプターが属する最小の SponsorBlock カテゴリ
  • category_names (list): カテゴリのわかりやすい名前
  • name (string): 最小のカテゴリのわかりやすい名前
  • type (string): チャプターの SponsorBlock アクションタイプ

前述の各シーケンスは、出力テンプレート内で参照されると、シーケンス名に対応する実際の値に置き換えられます。たとえば、-o %(title)s-%(id)s.%(ext)s と、タイトルが yt-dlp test video、ID が YE7VzlLtp-4 の mp4 動画の場合、カレントディレクトリに yt-dlp test video-YE7VzlLtp-4.mp4 ファイルが作成されます。 注:一部のシーケンスは、特定の抽出器が取得したメタデータに依存するため、常に存在するとは限りません。このようなシーケンスは、--output-na-placeholder で指定したプレースホルダー値(デフォルトでは NA)に置き換えられます。

ヒント:特定の URL で利用できるフィールドを確認するには、-j の出力を参照してください。

数値シーケンスには、数値関連の書式指定を使用できます。たとえば、%(view_count)05d は、再生回数を 5 文字になるまでゼロで埋めた文字列を出力します(例:00042)。

出力テンプレートには任意の階層パスも含められます。たとえば、-o "%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s" を指定すると、このパステンプレートに対応するディレクトリに各動画がダウンロードされます。存在しないディレクトリは自動的に作成されます。

出力テンプレートでパーセント記号をそのまま出力するには %% を使用します。標準出力に出力するには -o - を使用します。

現在のデフォルトテンプレートは %(title)s [%(id)s].%(ext)s です。

Windows システムにダウンロードしたファイル名を転送する場合や、8 ビットセーフでないチャネル経由でファイル名を転送する場合など、中、スペース、& のような特殊文字を使いたくないことがあります。その場合は、--restrict-filenames フラグを追加すると、短いタイトルを取得できます。

出力テンプレートの例
$ 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

フォーマットの選択

デフォルトでは、オプションを指定しない場合、yt-dlp は利用可能な最高品質をダウンロードしようとします。 通常、これは -f bestvideo*+bestaudio/best を指定するのと同等です。ただし、複数のオーディオストリームが有効な場合(--audio-multistreams)、デフォルトのフォーマットは -f bestvideo+bestaudio/best に変わります。同様に、ffmpeg が利用できない場合、または yt-dlp を使って標準出力(-o -)にストリーミングする場合、デフォルトは -f best/bestvideo+bestaudio になります。

非推奨に関する警告:yt-dlp の最新バージョンでは、ffmpeg を使って複数のフォーマットを同時に標準出力へストリーミングできます。そのため、今後のバージョンでは、通常のダウンロードと同様に、デフォルトが -f bv*+ba/b に設定される予定です。-f b/bv+ba の設定を維持したい場合は、設定オプションで明示的に指定することをおすすめします。

フォーマット選択の一般的な構文は -f FORMAT(または --format FORMAT)です。ここで FORMAT は、ダウンロードしたいフォーマットを記述する式、つまり セレクター式 です。

tl;dr:例に移動。

最も単純な方法は、特定のフォーマットを指定することです。たとえば、-f 22 を指定すると、フォーマットコードが 22 のフォーマットをダウンロードできます。特定の動画で利用可能なフォーマットコードの一覧は、--list-formats または -F で確認できます。これらのフォーマットコードは抽出器ごとに異なる点に注意してください。

ファイル拡張子を指定して、その拡張子の単一ファイルとして提供されるフォーマットのうち、最高品質のものをダウンロードすることもできます(現在、3gp、aac、flv、m4a、mp3、mp4、ogg、wav、webm をサポートしています)。たとえば、-f webm を指定すると、単一ファイルとして提供される webm 拡張子のフォーマットのうち、最高品質のものがダウンロードされます。

-f - を指定すると、動画ごとにフォーマットセレクターを対話的に入力できます。

特定の例外的なフォーマットを選択するために、次のような特別な名前も使用できます。

  • all:すべての形式を個別に選択します
  • mergeall:すべての形式を選択して結合します(--audio-multistreams、--video-multistreams、またはその両方と併用する必要があります)
  • b*、best*:動画または音声、あるいはその両方を含む最高品質の形式を選択します(つまり、vcodec!=none or acodec!=none)
  • b、best:動画と音声の両方を含む最高品質の形式を選択します。best*[vcodec!=none][acodec!=none]と同等です
  • bv、bestvideo:最高品質の動画のみの形式を選択します。best*[acodec=none]と同等です
  • bv*、bestvideo*:動画を含む最高品質の形式を選択します。音声も含む場合があります。best*[vcodec!=none]と同等です
  • ba、bestaudio:最高品質の音声のみの形式を選択します。best*[vcodec=none]と同等です
  • ba*、bestaudio*:音声を含む最高品質の形式を選択します。動画も含む場合があります。best*[acodec!=none]と同等です(使用しないでください!)
  • w*、worst*:動画または音声を含む最低品質の形式を選択します
  • w、worst:動画と音声の両方を含む最低品質の形式を選択します。worst*[vcodec!=none][acodec!=none]と同等です
  • wv、worstvideo:最低品質の動画のみの形式を選択します。worst*[acodec=none]と同等です
  • wv*、worstvideo*:動画を含む最低品質の形式を選択します。音声も含む場合があります。worst*[vcodec!=none]と同等です
  • wa、worstaudio:最低品質の音声のみの形式を選択します。worst*[vcodec=none]と同等です
  • wa*、worstaudio*:音声を含む最低品質の形式を選択します。動画も含む場合があります。worst*[acodec!=none]と同等です

たとえば、動画のみの最低品質の形式をダウンロードするには、-f worstvideoを使用できます。ただし、worstや関連するオプションの使用は推奨されません。形式セレクターにworstを指定すると、あらゆる点で最も品質の低い形式が選択されます。多くの場合、実際に必要なのはファイルサイズが最小の動画です。そのため、一般には-f worstではなく、-S +size、より厳密には-S +size,+br,+res,+fpsを使用する方が適切です。詳しくは形式の並べ替えをご覧ください。

best<type>.<n>を使うと、指定した種類の形式のうち、品質が高い方からn番目のものを選択できます。たとえば、best.2は2番目に品質の高い動画・音声の複合形式を選択します。同様に、bv*.3は動画ストリームを含む形式のうち、品質が3番目に高いものを選択します。

複数の動画をダウンロードする際、動画ごとに利用可能な形式が異なる場合は、スラッシュを使って優先順位を指定できます。左側の形式ほど優先されます。たとえば、-f 22/17/18は、形式22が利用可能であればそれをダウンロードし、利用できない場合は形式17、次に形式18を試します。いずれも利用できない場合は、ダウンロードに適した形式がないというエラーが表示されます。

同じ動画の複数の形式をダウンロードするには、区切り文字としてカンマを使用します。たとえば、-f 22,17,18は、これら3つの形式が利用可能であればすべてダウンロードします。優先順位機能と組み合わせた、より高度な例は次のとおりです:-f 136/137/mp4/bestvideo,140/m4a/bestaudio。

-f <format1>+<format2>+...を使うと、複数の形式の動画と音声を結合して1つのファイルにできます(ffmpegのインストールが必要です)。たとえば、-f bestvideo+bestaudioは、動画のみの最高品質形式と音声のみの最高品質形式をダウンロードし、ffmpegで多重化します。

非推奨に関する警告:以下で説明する動作は複雑で直感的でないため、今後削除され、マルチストリームがデフォルトで有効になります。代わりに、形式を音声または動画の単一ストリームに制限する新しい演算子が追加される予定です。 --video-multistreams を使用しない場合、最初の形式以外の動画ストリームを含むすべての形式は無視されます。同様に、--audio-multistreams を使用しない場合、最初の形式以外の音声ストリームを含むすべての形式は無視されます。たとえば、-f bestvideo+best+bestaudio --video-multistreams --audio-multistreams を指定すると、指定した3つの形式すべてをダウンロードして結合します。生成されるファイルには、2つの動画ストリームと2つの音声ストリームが含まれます。一方、-f bestvideo+best+bestaudio --no-video-multistreams を指定すると、bestvideo と bestaudio のみをダウンロードして結合します。動画ストリームを含む別の形式(bestvideo)がすでに選択されているため、best は無視されます。そのため、形式の順序が重要です。-f best+bestaudio --no-audio-multistreams を指定すると best のみがダウンロードされますが、-f bestaudio+best --no-audio-multistreams を指定すると best は無視され、bestaudio のみがダウンロードされます。

形式のフィルタリング

-f "best[height=720]" のように、角括弧内に条件を指定して動画形式をフィルタリングすることもできます(セレクターを指定しないフィルターは best として解釈されるため、-f "[filesize>10M]" のようにも指定できます)。

次の数値メタフィールドでは、<、<=、>、>=、=(等しい)、!=(等しくない)による比較を使用できます。

  • filesize:事前に判明している場合のバイト数
  • filesize_approx:バイト数の推定値
  • width:判明している場合の動画の幅
  • height:判明している場合の動画の高さ
  • aspect_ratio:判明している場合の動画のアスペクト比
  • tbr:音声と動画の平均ビットレート(kbps)
  • abr:音声の平均ビットレート(kbps)
  • vbr:動画の平均ビットレート(kbps)
  • asr:音声のサンプリングレート(ヘルツ)
  • fps:フレームレート
  • audio_channels:音声チャンネル数
  • stretched_ratio:正方形でない場合の動画ピクセルの width:height

また、次の文字列メタフィールドでは、=(等しい)、^=(で始まる)、$=(で終わる)、*=(を含む)、~=(正規表現に一致する)による比較も使用できます。

  • url:動画の URL
  • ext:ファイル拡張子
  • acodec:使用されている音声コーデック名
  • vcodec:使用されている動画コーデック名
  • container:コンテナ形式名
  • protocol:実際のダウンロードに使用するプロトコル(小文字。http、https、rtmp、rtmpe、f4m、ism、http_dash_segments、m3u8、または m3u8_native)
  • language:言語コード
  • dynamic_range:動画のダイナミックレンジ
  • format_id:形式の簡潔な説明
  • format:形式の人が読みやすい説明
  • format_note:形式に関する追加情報
  • resolution:幅と高さのテキストによる説明

文字列比較の前に否定を表す ! を付けると、逆の比較を行えます。たとえば、!*= は「含まない」を意味します。比較対象の文字列に空白または ._- 以外の特殊文字が含まれる場合は、二重引用符または一重引用符で囲む必要があります。

注意:前述のメタフィールドが存在する保証はありません。各フィールドの有無は、使用するエクストラクターが取得したメタデータ、つまりウェブサイトが提供するメタデータのみに依存します。エクストラクターが提供するその他のフィールドも、フィルタリングに使用できます。

値が不明な形式は、演算子の後に疑問符(?)を付けない限り除外されます。形式フィルターは組み合わせることができます。たとえば、-f "bv[height<=?720][tbr>500]" を指定すると、ビットレートが500 kbpsを超える720p以下の動画(または高さが不明な動画)が選択されます。また、all と組み合わせて、フィルター条件を満たすすべての形式をダウンロードすることもできます。たとえば、-f "all[vcodec=none]" は音声のみの形式をすべて選択します。

形式セレクターは括弧でグループ化することもできます。たとえば、-f "(mp4,webm)[height<480]" は、高さが480未満の、結合済みの mp4 および webm 形式のうち最良のものをダウンロードします。

形式の並べ替え

-S(--format-sort)を使用すると、best と見なされる基準を変更できます。基本的な書式は --format-sort field1,field2... です。 利用可能なフィールドは次のとおりです。

  • hasvid:動画ストリームがある形式を優先します
  • hasaud:音声ストリームがある形式を優先します
  • ie_pref:形式の優先度
  • lang:抽出器が判定した言語の優先度(例:音声解説よりオリジナル言語を優先)
  • quality:形式の品質
  • source:ソースの優先度
  • proto:ダウンロードに使用するプロトコル(https/ftps > http/ftp > m3u8_native/m3u8 > http_dash_segments> websocket_frag > f4f/f4m)
  • vcodec:動画コーデック(av01 > vp9.2 > vp9 > h265 > h264 > vp8 > h263 > theora > その他)
  • acodec:音声コーデック(flac/alac > wav/aiff > opus > vorbis > aac > mp4a > mp3 > ac4 > eac3 > ac3 > dts > その他)
  • codec:vcodec,acodecと同等です
  • vext:動画拡張子(mp4 > mov > webm > flv > その他)。--prefer-free-formatsを使用すると、webmが優先されます。
  • aext:音声拡張子(m4a > aac > mp3 > ogg > opus > webm > その他)。--prefer-free-formatsを使用すると、順序はogg > opus > webm > mp3 > m4a > aacに変わります
  • ext:vext,aextと同等です
  • filesize:事前に判明している場合の正確なファイルサイズ
  • fs_approx:おおよそのファイルサイズ
  • size:正確なファイルサイズがある場合はその値、なければおおよそのファイルサイズ
  • height:動画の高さ
  • width:動画の幅
  • res:動画の解像度。最小の寸法を基準に算出されます。
  • fps:動画のフレームレート
  • hdr:動画のダイナミックレンジ(DV > HDR12 > HDR10+ > HDR10 > HLG > SDR)
  • channels:音声チャンネル数
  • tbr:kbps単位の平均総ビットレート
  • vbr:kbps単位の平均動画ビットレート
  • abr:kbps単位の平均音声ビットレート
  • br:kbps単位の平均ビットレート。tbr/vbr/abrを指します
  • asr:Hz単位の音声サンプルレート

非推奨に関する警告:これらのフィールドの多くには、現在は文書化されていない別名があり、将来のバージョンで削除される可能性があります。文書化されているフィールド名のみを使用することをおすすめします。

特に指定がない限り、すべてのフィールドは降順で並べ替えられます。順序を逆にするには、フィールドの前に+を付けます。例:+resは最も解像度の低い形式を優先します。また、フィールド名の後に:で区切って優先値を指定できます。例:res:720は、720p以下ではより大きな動画を優先し、720p未満の動画がない場合は最も小さい動画を優先します。codecとextには、動画用と音声用の2つの優先値を指定できます。例:+codec:avc:m4a(+vcodec:avc,+acodec:m4aと同等)を指定すると、動画コーデックの優先順はh264 > h265 > vp9 > vp9.2 > av01 > vp8 > h263 > theora、音声コーデックの優先順はmp4a > aac > vorbis > opus > mp3 > ac3 > dtsになります。また、区切り文字として~を使うと、指定した値に最も近い値を優先する並べ替えもできます。例:filesize~1Gは、ファイルサイズが1 GiBに最も近い形式を優先します。

hasvidとie_prefのフィールドは、ユーザーが指定した順序に関係なく、常に並べ替えで最優先されます。この動作は--format-sort-forceを使用して変更できます。これら以外で使用されるデフォルトの順序は、lang,quality,res,fps,hdr:12,vcodec,channels,acodec,size,br,asr,proto,ext,hasaud,source,idです。抽出器によってこのデフォルトの順序が上書きされる場合がありますが、ユーザーが指定した順序を上書きすることはできません。

hdrのデフォルト値はhdr:12です。つまり、Dolby Visionは優先されません。これは、DV形式がまだほとんどのデバイスと完全には互換性がないためです。今後変更される可能性があります。

形式セレクターがworstの場合、並べ替え後の最後の項目が選択されます。つまり、あらゆる点で最も品質の低い形式が選択されます。多くの場合、本当に必要なのはファイルサイズが最小の動画です。そのため、通常は-f best -S +size,+br,+res,+fpsを使用するほうが適切です。 -S/--format-sort オプションを複数回使用すると、後続のソート引数は前の引数の前に追加され、重複するフィールドについては、最も優先度の高い項目だけが保持されます。たとえば、-S proto -S res は -S res,proto と同じであり、-S res:720,fps -S vcodec,res:1080 は -S vcodec,res:1080,fps と同じです。--format-sort-reset を使用すると、以前に指定した -S/--format-sort 引数を無視し、デフォルトの順序に戻せます。

ヒント:-v -F を使用すると、フォーマットがどのようにソートされたか(最低から最高まで)を確認できます。

フォーマット選択の例

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

メタデータの変更

抽出ツールで取得したメタデータは、--parse-metadata と --replace-in-metadata を使用して変更できます。

--replace-in-metadata FIELDS REGEX REPLACE は、Python の正規表現を使用して、任意のメタデータフィールド内のテキストを置換します。高度な用途では、置換文字列で後方参照を使用できます。

--parse-metadata FROM:TO の基本的な構文では、データを抽出するフィールド名または出力テンプレートと、そのデータの解釈形式をコロン : で区切って指定します。TO には、名前付きキャプチャグループを含むPython の正規表現、単一のフィールド名、または出力テンプレートと同様の構文(%(field)s 形式のみ対応)を使用できます。このオプションは複数回使用して、さまざまなフィールドを解析および変更できます。

これらのオプションは指定した相対的な順序を保つため、解析済みフィールドを置換したり、その逆を行ったりできます。また、こうして作成したフィールドは出力テンプレートで使用でき、--embed-metadata を使用した際にメディアファイルへ追加されるメタデータにも反映されます。

このオプションには、次のような特殊な用途もあります。

  • 現在ダウンロード中の動画のメタデータに基づいて、追加の URL をダウンロードできます。その場合は、フィールド additional_urls にダウンロードしたい URL を設定します。たとえば、--parse-metadata "description:(?P<additional_urls>https?://www\.vimeo\.com/\d+)" を指定すると、説明文内で最初に見つかった vimeo 動画をダウンロードします。

  • メディアファイルに埋め込むメタデータを変更できます。その場合は、対応するフィールドに meta_ プレフィックスを付けた名前で値を設定します。たとえば、フィールド meta_description に設定した値は、ファイル内の description フィールドに追加されます。これを利用して、「description」と「synopsis」に異なる値を設定できます。個々のストリームのメタデータを変更するには、meta<n>_ プレフィックス(例:meta1_language)を使用します。meta_ フィールドに設定した値は、すべてのデフォルト値を上書きします。

注:メタデータの変更は、フォーマットの選択、抽出後の処理、その他の後処理操作より前に行われます。これらの処理中にフィールドが追加または変更され、設定した値が上書きされることがあります。

参考までに、yt-dlp がファイルのメタデータにデフォルトで追加するフィールドを以下に示します。

メタデータフィールド取得元
titletrack または title
dateupload_date
description、 synopsisdescription
purl、commentwebpage_url
tracktrack_number
artistartist、artists、creator、creators、uploader または uploader_id
composercomposer または composers
genregenre、genres、categories または tags
albumalbum または series
album_artistalbum_artist または album_artists
discdisc_number
showseries
season_numberseason_number
episode_idepisode または episode_id
episode_sortepisode_number
各ストリームの languageフォーマットの language

注:ファイル形式によっては、これらのフィールドの一部に対応していない場合があります。

メタデータ変更の例

# 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" "[ _]" "-"

抽出器の引数

一部の抽出器では、--extractor-args KEY:ARGS を使って追加の引数を渡せます。ARGS は ARG=VAL1,VAL2 を ;(セミコロン)で区切った文字列です。例:--extractor-args "youtube:player-client=tv,mweb;formats=incomplete" --extractor-args "twitter:api=syndication"

注:CLI では、ARG に _ の代わりに - を使用できます。例:youtube:player-client" は youtube:player_client" になります。

以下の抽出器でこの機能を使用できます。

youtube
  • lang:この言語コード(大文字と小文字を区別)の翻訳済みメタデータ(title、description など)を優先します。デフォルトでは、動画の主要言語のメタデータを優先し、翻訳がない場合は en にフォールバックします。サポートされているコンテンツ言語コードの一覧は、youtube/_base.py を参照してください
  • skip:m3u8 マニフェスト、DASH マニフェスト、自動翻訳字幕の抽出をそれぞれスキップする hls、dash、translated_subs のいずれか、または複数を指定します
  • player_client:動画データの抽出に使用するクライアントです。現在利用可能なクライアントは、web、web_safari、web_embedded、web_music、web_creator、mweb、ios、visionos、android、android_vr、tv、tv_downgraded、tv_samsung、tv_simply です。デフォルトでは tv_samsung,visionos,web が使用されます。JavaScript ランタイム/エンジンが利用できない場合、web と tv_samsung は除外されます。ログイン済みの Cookie が yt-dlp に渡された場合、無料アカウントでは web_embedded,tv_samsung,web、プレミアムアカウントでは web_creator,tv_samsung,web が使用されます。ログイン済みの Cookie が使用されている場合、music.youtube.com の URL には web_music クライアントが追加されます。年齢制限のある動画には web_embedded クライアントが追加されますが、年齢制限を回避できるのは一部の場合のみです(例:動画が埋め込み可能な場合)。android_vr または visionos で動画にアクセスできない場合、フォールバックとして web_embedded クライアントが追加されることがあります。アカウントの年齢確認が必要な年齢制限付き動画には、web_creator クライアントが追加されます。web_creator や web_music など、一部のクライアントでは、フォーマットをダウンロードするために po_token が必要です。web_creator など、一部のクライアントは認証がある場合にのみ動作します。すべてのクライアントが Cookie による認証をサポートしているわけではありません。デフォルトのクライアントを使用するには default、すべてのクライアントを使用するには all を指定できます(推奨されません)。クライアントの前に - を付けると除外できます。例:youtube:player_client=default,-web
  • player_skip:堅牢な抽出に通常必要となる一部のネットワークリクエストをスキップします。configs(クライアント設定をスキップ)、webpage(最初のウェブページをスキップ)、js(JS プレーヤーをスキップ)、initial_data(初期データ/次のエピソードのリクエストをスキップ)のいずれか、または複数を指定します。これらのオプションにより、必要なリクエスト数を減らしたり、一部のレート制限を回避したりできますが、フォーマットやメタデータが欠落するなどの問題が発生する可能性があります。詳細は #860 と #12826 を参照してください
  • webpage_skip:埋め込みウェブページデータの抽出をスキップします。player_response と initial_data のいずれか、または両方を指定します。これらのオプションはテスト目的のものであり、ネットワークリクエストはスキップしません。デフォルトではどちらもスキップされません。ただし、actual 以外の player_js_version の値を使用すると、webpage_skip=player_response が暗黙的に指定されます
  • webpage_client:動画のウェブページリクエストに使用するクライアントです。web(デフォルト)または web_safari のいずれかを指定します
  • player_params:プレーヤーリクエストに使用する YouTube プレーヤーパラメーターです。yt-dlp が設定したデフォルト値を上書きします
  • player_js_variant:n/sig の復号に使用するプレーヤーの JavaScript バリアントです。既知のバリアントは、main、tcc、tce、es5、es6、es6_tcc、es6_tce、tv、tv_es6、phone、house です。デフォルトは main で、その他はデバッグ目的です。サイトで指定されているものを使用するには actual を指定します
  • player_js_version:n/sig の復号に使用するプレーヤーの JavaScript バージョンです。形式は signature_timestamp@hash です(例:20348@0004de42)。デフォルトではサイトで指定されているものが使用され、actual で選択できます。その他の値を使用すると、webpage_skip=player_response が暗黙的に指定されます
  • comment_sort:top または new(デフォルト)を指定して、YouTube 側でのコメントの並べ替え方法を選択します
  • max_comments:収集するコメント数を制限します。max-comments,max-parents,max-replies,max-replies-per-thread,max-depth を表す整数のカンマ区切りリストです。デフォルトは all,all,all,all,all です
    • max-depth に 1 を指定すると、max-replies や max-replies-per-thread の値にかかわらず、すべての返信が除外されます
    • 例:all,all,1000,10,2 は、返信を合計最大 1000 件、スレッドごとに最大 10 件、深さは 2 階層のみ(トップレベルのコメントとその直下の返信)取得します。1000,all,100 は、コメントを最大 1000 件、返信を合計最大 100 件取得します
  • formats:返すフォーマットの種類を変更します。dashy(HTTP を DASH に変換)、duplicate(URL またはプロトコルが異なる同一コンテンツ。dashy を含む)、incomplete(完全にはダウンロードできないもの。ライブおよびライブ終了後の DASH、ライブ終了後の m3u8、--live-from-start を指定していない場合のライブ適応型 HTTPS)、missing_pot(PO Token が必要だが、PO Token が不足しているフォーマットを含める)
  • innertube_host:すべての API リクエストに使用する Innertube API ホストです。例:studio.youtube.com、youtubei.googleapis.com。あるサブドメインからエクスポートした Cookie は、別のサブドメインでは使用できないことに注意してください
  • innertube_key:すべての API リクエストに使用する Innertube API キーです。デフォルトでは API キーを使用しません
  • raise_incomplete_data:Incomplete Data Received で警告を報告する代わりにエラーを発生させます
  • data_sync_id:Innertube API リクエストで使用するアカウントの Data Sync ID を上書きします。youtube:player_skip=webpage,configs または youtubetab:skip=webpage を使用しているアカウントでは、この設定が必要になる場合があります
  • visitor_data:Innertube API リクエストで使用する Visitor Data を上書きします。Cookie を使用せずに player_skip=webpage,configs を指定する場合に使用してください。注:不適切に使用すると悪影響が生じる場合があります。ブラウザーのセッションを使用する場合は、代わりに Cookie を渡してください(Cookie には Visitor ID が含まれています)
  • po_token:使用する Proof of Origin(PO)Token です。CLIENT.CONTEXT+PO_TOKEN 形式の PO Token をカンマ区切りで指定します。例:youtube:po_token=web.gvs+XXX,web.player=XXX,web_safari.gvs+YYY。コンテキストには、gvs(Google Video Server の URL)、player(Innertube プレーヤーリクエスト)、subs(字幕)のいずれかを指定できます
  • pot_trace:PO Token の取得に関するデバッグログを有効にします。true または false(デフォルト)を指定します
  • fetch_pot:プロバイダーから PO Token を取得する際のポリシーです。always(クライアントが該当コンテキストで PO Token を必要とするかどうかにかかわらず、常に取得を試みる)、never(PO Token を取得しない)、auto(デフォルト。クライアントが該当コンテキストで PO Token を必要とする場合のみ取得する)のいずれかを指定します
  • jsc_trace:JS Challenge の取得に関するデバッグログを有効にします。true または false(デフォルト)を指定します
  • use_ad_playback_context:ダウンロード前の必須待機時間をなくすため、プレロール広告をスキップします。プレミアムアカウントの Cookie を yt-dlp に渡す場合は使用しないでください。プレミアムフォーマットが失われます。mweb および web_music のプレーヤークライアントでのみ有効です。true または false(デフォルト)を指定します
youtube-ejs
  • jitless:対応する JavaScript エンジンを JIT 無効モードで実行します。対応ランタイムは deno、node、bun です。パフォーマンス/速度と引き換えに、セキュリティが向上します。node と bun は依然として安全ではないと見なされる点に注意してください。true または false(デフォルト)
youtubepot-webpo
  • bind_to_visitor_id:WebPO トークンのキャッシュに Visitor Data ではなく Visitor ID を使用するかどうかを指定します。true(デフォルト)または false
youtubetab(YouTube のプレイリスト、チャンネル、フィードなど)
  • skip:webpage(初期ウェブページのダウンロードをスキップ)、authcheck(初期ウェブページをダウンロードしない場合に、認証が必要なプレイリストのダウンロードを許可します。意図しない動作が発生する可能性があります。詳細は #1122 を参照してください)のいずれか、または両方を指定します。
  • approximate_date:フラットプレイリストで、おおよその upload_date と timestamp を抽出します。これにより、日付ベースのフィルターに多少のずれが生じる場合があります。
generic
  • fragment_query:値が指定されていない場合は、mpd/m3u8 マニフェスト URL のクエリをフラグメントに引き継ぎます。それ以外の場合は、fragment_query=VALUE で指定されたクエリ文字列を適用します。ストリームに HLS AES-128 キーがある場合、key_query 抽出引数が渡されているか、hls_key 抽出引数で外部キー URI が指定されていない限り、クエリパラメーターはキー URI にも渡されます。ffmpeg には適用されません。
  • variant_query:値が指定されていない場合は、マスター m3u8 URL のクエリをバリアントプレイリスト URL に引き継ぎます。それ以外の場合は、variant_query=VALUE で指定されたクエリ文字列を適用します。
  • key_query:値が指定されていない場合は、マスター m3u8 URL のクエリを HLS AES-128 復号キー URI に引き継ぎます。それ以外の場合は、key_query=VALUE で指定されたクエリ文字列を適用します。hls_key 抽出引数でキー URI が指定されている場合、これは効果がありません。ffmpeg には適用されません。
  • hls_key:HLS AES-128 のキー URI または キー(16 進数)、および任意で IV(16 進数)を、(URI|KEY)[,IV] の形式で指定します。例:generic:hls_key=ABCDEF1234567980,0xFEDCBA0987654321。これらの値を渡すと、ネイティブ HLS ダウンローダーが強制的に使用され、m3u8 プレイリストにある対応する値が上書きされます。
  • is_live:ライブ HLS の検出を回避し、live_status を手動で設定します。false を指定すると not_live に設定され、それ以外の値(または値なし)を指定すると is_live に設定されます。
  • impersonate:初期ウェブページのリクエストで偽装を試みる対象。例:generic:impersonate=safari,chrome-110。利用可能な対象をすべて偽装するには generic:impersonate を使用し、偽装を無効にするには generic:impersonate=false を使用します(デフォルト)。
vikichannel
  • video_types:ダウンロードする動画の種類。episodes、movies、clips、trailers のいずれか、または複数を指定します。
youtubewebarchive
  • check_all:リクエスト数が増える代わりに、より多くの項目を確認します。thumbnails、captures のいずれか、または両方を指定します。
gamejolt
  • comment_sort:hot(デフォルト)、you(Cookie が必要)、top、new。GameJolt 側でのコメントの並べ替え方法を選択します。
hotstar
  • res:無視する解像度。sd、hd、fhd のいずれか、または複数を指定します。
  • vcodec:無視する vcodec。h264、h265、dvh265 のいずれか、または複数を指定します。
  • dr:無視するダイナミックレンジ。sdr、hdr10、dv のいずれか、または複数を指定します。
instagram
  • app_id:API リクエストに使用する X-IG-App-ID ヘッダーの値。実際の ID 番号、ios、または web(デフォルト)を指定できます。
niconicochannelplus
  • max_comments:抽出するコメントの最大数。デフォルトは 120 です。
tiktok
  • api_hostname: モバイル API 呼び出しに使用するホスト名です。例:api22-normal-c-alisg.tiktokv.com
  • app_name: モバイル API 呼び出しに使用するデフォルトのアプリ名です。例:trill
  • app_version: モバイル API 呼び出しに使用するデフォルトのアプリバージョンです。manifest_app_version と併せて設定してください。例:34.1.2
  • manifest_app_version: モバイル API 呼び出しに使用するデフォルトの数値形式のアプリバージョンです。例:2023401020
  • aid: モバイル API 呼び出しに使用するデフォルトのアプリ ID です。例:1180
  • app_info: <iid>/[app_name]/[app_version]/[manifest_app_version]/[aid] の形式のアプリ情報文字列を 1 つ以上指定して、モバイル API 抽出を有効にします。iid は一意のアプリインストール ID です。必須なのは iid のみで、ほかの値とそれぞれの / 区切り文字は省略できます。例:tiktok:app_info=1234567890123456789 または tiktok:app_info=123,456/trill///1180,789//34.0.1/340001
  • device_id: モバイル API 呼び出しに使用する実際のデバイス ID を指定して、モバイル API 抽出を有効にします。デフォルトはランダムな 19 桁の文字列です
rokfinchannel
  • tab: ダウンロードするタブを指定します。new、top、videos、podcasts、streams、stacks のいずれかです
twitter
  • api: ツイートの抽出に使用する API として、graphql(デフォルト)、legacy、syndication のいずれかを選択します。ログインしている場合は効果がありません
stacommu, wrestleuniverse
  • device_id: ウェブサイトによって割り当てられ、有料ライブ配信コンテンツのデバイス制限に使用される UUID 値です。ブラウザーのローカルストレージで確認できます
twitch
  • client_id: GraphQL リクエストで送信するクライアント ID 値です。例:twitch:client_id=kimne78kx3ncx6brgo4mv6wki5h1ko
nhkradirulive(NHK らじる★らじる LIVE)
  • area: 抽出する地域を指定します。有効な地域は sapporo、sendai、tokyo、nagoya、osaka、hiroshima、matsuyama、fukuoka です。デフォルトは tokyo です
nflplusreplay
  • type: 抽出する試合リプレイの種類を指定します。有効な種類は full_game、full_game_spanish、condensed_game、all_22 です。all を指定すると、デフォルトの動作として、利用可能なすべてのリプレイの種類を抽出できます
jiocinema
  • refresh_token: ブラウザーのローカルストレージにある refreshToken UUID を指定すると、ユーザー名に token、パスワードにブラウザーのローカルストレージにある accessToken を指定してログインする際に、ログインセッションの有効期間を延長できます
jiosaavn
  • bitrate: リクエストする音声ビットレートを指定します。16、32、64、128、320 のうち 1 つ以上を指定します。デフォルトは 128,320 です
afreecatvlive
  • cdn: ストリーム URL の API 呼び出しに使用する CDN ID を 1 つ以上指定します。例:gcp_cdn、gs_cdn_pc_app、gs_cdn_mobile_web、gs_cdn_pc_web
soundcloud
  • formats: API からリクエストする形式を指定します。指定する値は {protocol}_{codec} の形式にします。例:hls_opus,http_aac。* 文字はワイルドカードとして機能します。例:*_mp3。単独で指定すると、すべての形式をリクエストできます。既知のプロトコルは http、hls、hls-aes です。既知のコーデックは aac、opus、mp3 です。元の download 形式は常に抽出されます。デフォルトは http_aac,hls_aac,http_opus,hls_opus,http_mp3,hls_mp3 です
orfon(orf:on)
  • prefer_segments_playlist: 利用可能な場合、単一の完全な動画よりも番組セグメントのプレイリストを優先します。個別のセグメントを取得する場合は、--concat-playlist never --extractor-args "orfon:prefer_segments_playlist" を使用してください
bilibili
  • prefer_multi_flv: 従来の形式を引き続き提供している古い動画では、mp4 よりも flv 形式の抽出を優先します
sonylivseries
  • sort_order: シリーズ抽出時のエピソードの並び順を指定します。asc(昇順、古い順)または desc(降順、新しい順)のいずれかです。デフォルトは asc です
streaks
  • api_key: X-Streaks-Api-Key ヘッダーに指定する API キーです
tver
  • backend: 抽出に使用するバックエンド API を指定します。streaks(デフォルト)または brightcove(非推奨)のいずれかです
vimeo
  • client:データ抽出元のクライアントです。現在利用可能なクライアントは android と web です。使用できるクライアントは1つだけです。デフォルトでは web クライアントが使用され、アカウントの Cookie またはログイン認証情報がある場合にのみ動作します。android クライアントは、以前にキャッシュされた OAuth トークンがある場合にのみ動作します
  • original_format_policy:オリジナル形式の抽出を試みるタイミングのポリシーです。always、never、auto のいずれかを指定します。デフォルトの auto ポリシーでは、Vimeo が動画のダウンロード可能であることを公開している場合にのみ追加リクエストを送信し、web クライアントの API レート制限を超えないようにします
adn
  • profile_id:動画のダウンロードに使用するプレミアムアカウントのプロフィール ID(数値)です(デフォルト:1)
zan
  • split_angles:マルチアングルストリームを、アングルごとの形式に分割します。ダウンロード中に動画ストリームの再エンコードを強制し、ffmpeg が必要です。true または false(デフォルト)を指定します

注:これらのオプションは、後方互換性を考慮せずに将来変更または削除される可能性があります

プラグイン

すべてのプラグインは、呼び出されていなくてもインポートされます。また、プラグインのコードに対するチェックは行われません。プラグインは自己責任で、信頼できるコードの場合にのみ使用してください!

プラグインの <type> には extractor または postprocessor を指定できます。

  • Extractor プラグインは CLI で有効にする必要がなく、入力 URL が対象となる場合に自動的に呼び出されます。
  • Extractor プラグインは、組み込みの extractor より優先されます。
  • Postprocessor プラグインは、--use-postprocessor NAME を使って呼び出せます。

プラグインは、名前空間パッケージ yt_dlp_plugins.extractor および yt_dlp_plugins.postprocessor から読み込まれます。

つまり、ディスク上のファイル構造は次のようになります。

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

yt-dlp は多くの場所(下記参照)でこれらの yt_dlp_plugins 名前空間フォルダーを探し、すべてからプラグインを読み込みます。 環境変数 YTDLP_NO_PLUGINS に空でない値を設定すると、プラグインの読み込みを完全に無効にできます。

既知のプラグインについては wiki を参照してください

プラグインのインストール

プラグインは、さまざまな方法と場所にインストールできます。

  1. 設定ディレクトリ: プラグインパッケージ(yt_dlp_plugins 名前空間フォルダーを含む)は、標準の設定場所に配置できます。

    • ユーザープラグイン
      • ${XDG_CONFIG_HOME}/yt-dlp/plugins/<package name>/yt_dlp_plugins/(Linux/macOS ではこちらを推奨)
      • ${XDG_CONFIG_HOME}/yt-dlp-plugins/<package name>/yt_dlp_plugins/
      • ${APPDATA}/yt-dlp/plugins/<package name>/yt_dlp_plugins/(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/
    • システムプラグイン
      • /etc/yt-dlp/plugins/<package name>/yt_dlp_plugins/
      • /etc/yt-dlp-plugins/<package name>/yt_dlp_plugins/
  2. 実行ファイルの場所:ポータブルインストールでは、実行ファイルの場所の下にある yt-dlp-plugins ディレクトリにも、同様にプラグインパッケージをインストールできます。

    • バイナリ:<root-dir>/yt-dlp.exe がある場所に、<root-dir>/yt-dlp-plugins/<package name>/yt_dlp_plugins/
    • ソース:<root-dir>/yt_dlp/__main__.py がある場所に、<root-dir>/yt-dlp-plugins/<package name>/yt_dlp_plugins/
  3. pip および PYTHONPATH 内のその他の場所

    • プラグインパッケージは pip を使ってインストール、管理できます。例については yt-dlp-sample-plugins を参照してください。
      • 注:pip でインストールしたプラグインパッケージ間では、プラグインファイルのファイル名を一意にする必要があります。
    • PYTHONPATH 内のすべてのパスが検索され、yt_dlp_plugins 名前空間フォルダーが探されます。
      • 注:これは Pyinstaller ビルドには適用されません。

ルートに yt_dlp_plugins 名前空間フォルダーを含む .zip、.egg、.whl アーカイブも、プラグインパッケージとしてサポートされています。

  • 例:${XDG_CONFIG_HOME}/yt-dlp/plugins/mypluginpkg.zip。mypluginpkg.zip には yt_dlp_plugins/<type>/myplugin.py が含まれます。

--verbose を指定して yt-dlp を実行すると、プラグインが読み込まれたかどうかを確認できます。

プラグインの開発

テンプレートとなるプラグインパッケージについては yt-dlp-sample-plugins リポジトリを、プラグイン開発ガイドについては wiki の Plugin Development セクションを参照してください。

抽出器および後処理プロセッサについては、各ファイルから名前が IE/PP で終わるすべての公開クラスがそれぞれインポートされます。アンダースコアの接頭辞(例:_MyBasePluginIE は非公開)と __all__ が尊重されます。モジュールも同様に、モジュール名の先頭にアンダースコアを付けることで除外できます(例:_myplugin.py)。

既存の抽出器をサブクラスで置き換えるには、plugin_name クラスキーワード引数を設定します(例:class MyPluginIE(ABuiltInIE, plugin_name='myplugin') は ABuiltInIE を MyPluginIE に置き換えます)。抽出器は親クラスを置き換えるため、上記の方法のいずれかを使ってサブクラスの抽出器を非公開にし、別途インポートされないようにしてください。

プラグインの作成者は、見つけてもらいやすくするために、リポジトリのトピックとして yt-dlp-plugins を追加してください。

抽出器の作成とテスト方法については、開発者向け手順を参照してください。

YT-DLP の埋め込み

yt-dlp は優れたコマンドラインプログラムとなるよう最善を尽くしているため、あらゆるプログラミング言語から呼び出せます。

通常の標準出力は将来のバージョンで変更される可能性があるため、プログラムで解析しないようにしてください。代わりに、-J、--print、--progress-template、--exec などのオプションを使って、確実に再現・解析できるコンソール出力を作成してください。

Python プログラムからは、次のように、より強力な方法で yt-dlp を埋め込めます。

from yt_dlp import YoutubeDL

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

さまざまなオプションを使うことになるでしょう。利用可能なオプションの一覧については、yt_dlp/YoutubeDL.py または Python シェルで help(yt_dlp.YoutubeDL) を確認してください。すでに CLI に慣れている場合は、devscripts/cli_to_api.py を使って、任意の CLI スイッチを YoutubeDL のパラメーターに変換できます。

ヒント:コードを youtube-dl から yt-dlp に移植する場合、YoutubeDL.extract_info の戻り値が JSON としてシリアライズ可能であること、あるいは辞書であることさえ保証していない点に注意してください。辞書のように扱えますが、シリアライズ可能な辞書であることを確実にするには、以下の例のように YoutubeDL.sanitize_info に渡してください。

埋め込み例

情報を抽出する
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)))
info-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')
音声を抽出する
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)
動画をフィルタリングする
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)
ロガーと進捗フックを追加する
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)
カスタム PostProcessor を追加する
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)
カスタムフォーマットセレクターを使う
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)

YOUTUBE-DL からの変更点

新機能
  • yt-dlc@f9401f2 からフォークし、youtube-dl@a08f2b7 と統合しました(例外)。

  • SponsorBlock 統合: SponsorBlock API を利用して、YouTube 動画内のスポンサー区間に印を付けたり、削除したりできます。

  • フォーマットの並べ替え:デフォルトのフォーマット並べ替えオプションを変更し、単にビットレートの大きさで選ぶのではなく、より高い解像度と優れたコーデックが優先されるようになりました。さらに、-S を使って並べ替え順を指定できるようになりました。これにより、--format だけを使う場合よりも、フォーマットを簡単に選択できます(例)。

  • animelover1984/youtube-dl との統合:--write-comments、BiliBiliSearch、BilibiliChannel、mp4/ogg/opus へのサムネイル埋め込み、プレイリストの infojson など、animelover1984/youtube-dl の機能と改善の大部分を利用できます。詳細は #31 を参照してください。

  • YouTube の改善:

    • クリップ、ストーリー(ytstories:<channel UCID>)、検索(フィルターを含む)*、YouTube Music の検索、チャンネル固有の検索、検索プレフィックス(ytsearch:)*、ミックス、フィード(:ytfav、:ytwatchlater、:ytsubs、:ythistory、:ytrec、:ytnotif)に対応
    • n-sig に基づくスロットリングを修正 *
    • --live-from-start を使ってライブ配信を最初からダウンロード(実験的機能)
    • チャンネル URL では、ショート動画やライブ配信を含むチャンネルのすべての投稿をダウンロード
  • ブラウザーの Cookie:--cookies-from-browser BROWSER[+KEYRING][:PROFILE][::CONTAINER] を使って、主要なすべてのウェブブラウザーから Cookie を自動的に抽出できます。

  • ダウンロード時間範囲:--download-sections を使って、タイムスタンプまたはチャプターを基準に動画の一部をダウンロードできます。

  • チャプターごとに動画を分割:--split-chapters を使って、チャプターを基準に動画を複数のファイルに分割できます。

  • マルチスレッドによるフラグメントのダウンロード:m3u8/mpd 動画の複数のフラグメントを並列でダウンロードします。--concurrent-fragments(-N)オプションで使用するスレッド数を設定できます。

  • 新規および修正された抽出器:多くの新しい抽出器が追加され、既存の抽出器も多数修正されました。変更履歴または対応サイトの一覧をご覧ください。

  • 新しい MSO:Philo、Spectrum、SlingTV、Cablevision、RCN など。

  • マニフェストからの字幕抽出:ストリーミングメディアのマニフェストから字幕を抽出できます。詳細はコミット be6202fをご覧ください。

  • 複数のパスと出力テンプレート:ファイルの種類ごとに異なる出力テンプレートとダウンロード先を指定できます。また、--paths(-P)を使って、中間ファイルのダウンロード先となる一時パスも設定できます。

  • ポータブルな設定:設定ファイルはホームディレクトリとルートディレクトリから自動的に読み込まれます。詳細は設定をご覧ください。

  • 出力テンプレートの改善:出力テンプレートで日時の書式設定、数値オフセット、オブジェクトのたどりなどが可能になりました。詳細は出力テンプレートをご覧ください。--parse-metadata と --replace-in-metadata を使うと、さらに高度な操作も行えます。

  • その他の新しいオプション:--alias、--print、--concat-playlist、--wait-for-video、--retry-sleep、--sleep-requests、--convert-thumbnails、--force-download-archive、--force-overwrites、--break-match-filters など、多くの新しいオプションが追加されました。

  • 改善点:--format/--match-filters での正規表現やその他の演算子、複数の --postprocessor-args と --downloader-args、高速化されたアーカイブの確認、より多くのフォーマット選択オプション、複数の動画/音声の結合、複数の --config-locations、異なる段階での --exec など。

  • プラグイン:抽出器と PostProcessors を外部ファイルから読み込めます。詳細はプラグインをご覧ください。

  • 自動アップデーター:リリースは yt-dlp -U で更新でき、必要に応じて --update-to でダウングレードできます。

  • 自動ビルド:ナイトリー/master ビルドは、--update-to nightly と --update-to master で利用できます。

変更点の全一覧は、変更履歴またはコミットをご覧ください。

* 印の機能は youtube-dl にバックポートされています。

デフォルトの動作の違い

yt-dlp のデフォルトオプションには、youtube-dl および youtube-dlc と異なるものがあります。

  • yt-dlp がサポートするのは Python 3.10 以降のみです。また、他のバージョンもサポート終了に伴い、順次サポート対象外となります。一方、youtube-dl は引き続き Python 2.6 以降および 3.2 以降をサポートしています

  • オプション --auto-number(-A)、--title(-t)、--literal(-l)は動作しなくなりました。詳細については削除されたオプションを参照してください

  • avconv は ffmpeg の代替としてサポートされていません

  • yt-dlp は youtube-dl とは少し異なる場所に設定ファイルを保存します。正しい場所の一覧については設定を参照してください

  • デフォルトの出力テンプレートは %(title)s [%(id)s].%(ext)s です。この変更に特別な理由はありません。yt-dlp が公開される前に変更されており、現在、%(title)s-%(id)s.%(ext)s に戻す予定はありません。代わりに、--compat-options filename を使用できます

  • デフォルトの形式の並べ替えは youtube-dl と異なり、ビットレートよりも高解像度で優れたコーデックを優先します。--format-sort オプションを使用すると、任意の順序に変更できます。また、youtube-dl の並べ替え順を使うには --compat-options format-sort を使用してください。以前のバージョンの yt-dlp は、幅広い互換性を理由に VP9 を優先していました。この形式の並べ替え設定に戻すには --compat-options prefer-vp9-sort を使用できます。この2つの互換オプションは同時に使用できません

  • デフォルトの形式セレクターは bv*+ba/b です。これは、最高の映像のみの形式よりも優れた映像と音声を含む形式が見つかった場合、後者ではなく前者が優先されることを意味します。これを元に戻すには -f bv+ba/b または --compat-options format-spec を使用してください

  • youtube-dlc とは異なり、yt-dlp では複数の音声/映像ストリームを1つのファイルに結合する機能はデフォルトで無効です(-f bv*+ba の使用と競合するため)。必要な場合は、--audio-multistreams と --video-multistreams を使ってこの機能を有効にしてください。--compat-options multistreams を使うと、両方を有効にできます

  • --no-abort-on-error はデフォルトで有効です。エラー時に中断するには、代わりに --abort-on-error または --compat-options abort-on-error を使用してください

  • サムネイル、説明、infojson などのメタデータファイルを書き込む際、同じ情報(利用可能な場合)はプレイリストについても書き込まれます。これらのファイルを書き込まないようにするには、--no-write-playlist-metafiles または --compat-options no-playlist-metafiles を使用してください

  • --add-metadata は、--write-info-json と併用した場合、メタデータを書き込むだけでなく、infojson を mkv ファイルに埋め込みます。これを元に戻すには --no-embed-info-json または --compat-options no-attach-info-json を使用してください

  • --add-metadata を使用した場合、youtube-dl とは異なるフィールドに埋め込まれるメタデータがあります。特に、comment フィールドには webpage_url が、synopsis には description が含まれます。好みに合わせて変更するには --parse-metadata を使用するか、これを元に戻すには --compat-options embed-metadata を使用してください

  • playlist_index は --playlist-reverse や --playlist-items などのオプションと併用した場合、動作が異なります。詳細については #302 を参照してください。以前の動作を維持するには --compat-options playlist-index を使用できます

  • -F の出力は新しい形式で一覧表示されます。これを元に戻すには --compat-options list-formats を使用してください

  • ライブチャット(利用可能な場合)は字幕として扱われます。ライブチャットを除くすべての字幕をダウンロードするには --sub-langs all,-live_chat を使用してください。また、ライブチャット/弾幕をダウンロードしないようにするには --compat-options no-live-chat を使用できます

  • YouTube チャンネルの URL を指定すると、そのチャンネルのすべてのアップロード動画がダウンロードされます。特定のタブの動画のみをダウンロードするには、そのタブの URL を指定してください。チャンネルに指定したタブが表示されていない場合は、エラーが発生します。また、ライブ動画がない場合、/live URL はチャンネル全体を黙ってダウンロードするのではなく、エラーになります。これらのリダイレクトをすべて元に戻すには --compat-options no-youtube-channel-redirect を使用できます

  • YouTube のプレイリストには、利用できない動画も一覧表示されます。これを削除するには --compat-options no-youtube-unavailable-videos を使用してください

  • YouTube から抽出されるアップロード日は UTC です

  • ダウンローダーとして ffmpeg を使用する場合、可能であれば形式のダウンロードと結合を1つのステップで行います。これを元に戻すには --compat-options no-direct-merge を使用してください

  • mp4 へのサムネイルの埋め込みには、可能であれば mutagen が使用されます。代わりに AtomicParsley を強制的に使用するには --compat-options embed-thumbnail-atomicparsley を使用してください

  • ファイル名などの一部の内部メタデータは、デフォルトで infojson から削除されます。これを元に戻すには --no-clean-infojson または --compat-options no-clean-infojson を使用してください

  • --embed-subs と --write-subs を同時に使用すると、字幕はディスクに書き込まれ、メディアファイルにも埋め込まれます。字幕を埋め込み、個別のファイルを自動的に削除するには、--embed-subs だけを使用できます。詳細については #630 (comment) を参照してください。これを元に戻すには --compat-options no-keep-subs を使用できます

  • certifi がインストールされている場合、SSL のルート証明書に使用されます。システム証明書(自己署名証明書など)を使用するには --compat-options no-certifi を使用してください

  • yt-dlp によるファイル名の無効な文字のサニタイズ方法は、youtube-dl とは異なり、より適切です。youtube-dl の動作に戻すには --compat-options filename-sanitization を使用できます

  • (現在は実装されていません)yt-dlp は可能な場合、外部ダウンローダーの出力を標準の進捗出力として解析します。ダウンローダーの出力をそのまま表示するには --compat-options no-external-downloader-progress を使用できます

  • 2021.09.01 から 2022.11.11 まで(両日を含む)の yt-dlp バージョンでは、入れ子になったプレイリストにも --match-filters が適用されていました。これは 8f18ac による意図しない副作用であり、d7b460 で修正されています。この動作に戻すには --compat-options playlist-match-filter を使用してください

  • 2021.11.10 から 2023.06.21 まで(両日を含む)の yt-dlp バージョンでは、分割/マニフェスト形式の filesize_approx 値を推定していました。これは f2fe69 で利便性のために追加されましたが、推定値が極端に不正確になる可能性があるため 0dff8e で元に戻されました。推定値の抽出を維持するには --compat-options manifest-filesize-approx を使用してください

  • yt-dlp は requests などの最新の HTTP クライアントバックエンドを使用します。標準的な HTTP リクエストで従来の HTTP ハンドラー(urllib)を優先するには --compat-options prefer-legacy-http-handler を使用してください

  • サブモジュール swfinterp、casefold は削除されました

  • --simulate を指定しても(または download=False を指定して extract_info を呼び出しても)、デフォルトの形式選択は変更されなくなりました。詳細については #9843 を参照してください

  • yt-dlp は、ダウンロードしたファイルにサーバーの更新日時をデフォルトで適用しなくなりました。これを元に戻すには --mtime または --compat-options mtime-by-default を使用してください 利便性のため、使用できる互換オプションのエイリアスがいくつか用意されています。

  • --compat-options all:すべての互換オプションを使用します(使用しないでください!)

  • --compat-options youtube-dl:--compat-options all,-multistreams,-playlist-match-filter,-manifest-filesize-approx,-allow-unsafe-ext,-prefer-vp9-sort,-allow-unsafe-exec-expansion と同じです

  • --compat-options youtube-dlc:--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:--compat-options 2022,no-certifi,filename-sanitization と同じです

  • --compat-options 2022:--compat-options 2023,playlist-match-filter,no-external-downloader-progress,prefer-legacy-http-handler,manifest-filesize-approx と同じです

  • --compat-options 2023:--compat-options 2024,prefer-vp9-sort と同じです

  • --compat-options 2024:--compat-options 2025,mtime-by-default と同じです

  • --compat-options 2025:現在は何も行いません。今後追加されるすべての互換オプションを有効にするには、これを使用してください

年ごとの互換オプションのエイリアスを使用すると、yt-dlp のデフォルトの動作を、その年の末時点の動作に固定できます。

以下の互換オプションは、セキュリティパッチ適用前の脆弱な動作を復元します。

  • --compat-options allow-unsafe-ext:あらゆる拡張子(安全でないものを含む)のファイルをダウンロードできるようにします(GHSA-79w7-vh3h-8g4j)

    :warning: 有効なファイルのダウンロードが、拡張子が一般的でないと判定されたために拒否される場合にのみ使用してください

    このオプションを有効にすると、リモートコード実行が可能になるおそれがあります! 代わりに問題を報告することを検討してください!

  • --compat-options allow-unsafe-exec-expansion:--exec オプションでは、コマンド内で出力テンプレート構文を使用できますが、セキュリティ上の理由から使用できる変換は i/d(符号付き整数の10進数)、f(浮動小数点数の10進数)、q(シェルクォート)に制限されています。2021.04.11 から 2026.03.17 まで(両日を含む)の yt-dlp バージョンでは、この制限が適用されていませんでした。このオプションはこの制限を解除します

    :warning: このオプションを有効にすると、リモートコード実行が可能になるおそれがあります! exec コマンドのテンプレートで文字列値を使用する場合は、%()q 変換の使用を検討してください。

非推奨のオプション

以下は、非推奨となったすべてのオプションと、同じ効果を得るための現在の代替手段です

ほぼ重複するオプション

これらのオプションは新しい対応オプションとほぼ同じですが、重複するオプションとは言えない違いがいくつかあります

-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
重複するオプション

これらのオプションは重複していますが、使いやすいため引き続き使用が想定されています。

--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
非推奨

これらのオプションは引き続き動作しますが、同じことを実現する別の方法があるため、使用は推奨されません。

--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
開発者向けオプション

これらのオプションはエンドユーザー向けではありません。

--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
古いエイリアス

さまざまな理由により、現在はドキュメントに記載されていないエイリアスです。

--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
Sponskrub オプション

--sponsorblock オプションが優先されるため、SponSkrub のサポートは削除されました。

--sponskrub                      --sponsorblock-mark all
--no-sponskrub                   --no-sponsorblock
--sponskrub-cut                  --sponsorblock-remove all
--no-sponskrub-cut               --sponsorblock-remove -all
--sponskrub-force                該当なし
--no-sponskrub-force             該当なし
--sponskrub-location             該当なし
--sponskrub-args                 該当なし
サポート終了

これらのオプションは、意図したとおりに動作しない場合があります。

--prefer-avconv                  avconv は yt-dlp で正式にサポートされていません(エイリアス:--no-prefer-ffmpeg)
--prefer-ffmpeg                  デフォルト(エイリアス:--no-prefer-avconv)
-C, --call-home                  未実装
--no-call-home                   デフォルト
--include-ads                    サポート終了
--no-include-ads                 デフォルト
--write-annotations              注釈をサポートするサイトは現在ありません
--no-write-annotations           デフォルト
--avconv-location                --ffmpeg-location の削除済みエイリアス
--cn-verification-proxy URL      --geo-verification-proxy URL の削除済みエイリアス
--dump-headers                   --print-traffic の削除済みエイリアス
--dump-intermediate-pages        --dump-pages の削除済みエイリアス
--youtube-skip-dash-manifest     --extractor-args "youtube:skip=dash" の削除済みエイリアス(エイリアス:--no-youtube-include-dash-manifest)
--youtube-skip-hls-manifest      --extractor-args "youtube:skip=hls" の削除済みエイリアス(エイリアス:--no-youtube-include-hls-manifest)
--youtube-include-dash-manifest  デフォルト(エイリアス:--no-youtube-skip-dash-manifest)
--youtube-include-hls-manifest   デフォルト(エイリアス:--no-youtube-skip-hls-manifest)
--youtube-print-sig-code         テスト機能を削除
--dump-user-agent                サポート終了
--xattr-set-filesize             サポート終了
--compat-options seperate-video-versions  不要になりました
--compat-options no-youtube-prefer-utc-upload-date  サポート終了
削除済み

これらのオプションは 2014 年から非推奨となっており、現在は完全に削除されています。

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

貢献

課題の報告およびプロジェクトへのコードの貢献の手順については、CONTRIBUTING.mdをご覧ください。

Wiki

詳しくはWikiをご覧ください。

コメント