yt-dlp について
yt-dlp はオンラインソースから動画と音声コンテンツをダウンロードするコマンドラインツールです。幅広いプラットフォームと形式に対応しており、メディアをローカルに保存する場合に便利です。
主な機能
- 01サポートされているウェブサイトから単一のコマンドで動画をダウンロード
- 02音声を抽出して MP3 などの形式に変換
- 03複数の URL をバッチ処理
活用シーン
- 01オフライン視聴用に動画コンテンツをアーカイブする
- 02オンライン動画を音楽やポッドキャスト用の音声ファイルに変換
- 03メディアをダウンロードおよび処理する自動化ワークフローを構築
インストール
OS またはパッケージマネージャーを選び、コマンドをターミナルで実行します。
インストール後にyt-dlp --versionを実行して確認します。
コマンド例
よく使うコマンドを使う順に並べています。
詳細
翻訳後に原文が更新されています。最新の内容は原文をご確認ください。
yt-dlp は、数千のサイトに対応した、機能豊富なコマンドラインの音声・動画ダウンローダーです。このプロジェクトは、現在は活動を停止している youtube-dlc をベースにした youtube-dl のフォークです。
- インストール
- 使い方とオプション
- 設定
- 出力テンプレート
- フォーマットの選択
- メタデータの変更
- 抽出引数
- プラグイン
- YT-DLP の組み込み
- YOUTUBE-DL からの変更点
- コントリビューション
- Wiki
インストール
yt-dlp は、バイナリ、pip、またはサードパーティーのパッケージマネージャーを使ってインストールできます。詳しい手順はWikiをご覧ください。
リリースファイル
推奨
| File | Description |
|---|---|
| yt-dlp | プラットフォームに依存しないzipimportバイナリです。Python が必要です(Linux/BSD 向けに推奨) |
| yt-dlp.exe | Windows(Win8 以降)用のスタンドアロン x64 バイナリです(Windows 向けに推奨) |
| yt-dlp_macos | MacOS(10.15 以降)用のユニバーサルなスタンドアロン実行ファイルです(MacOS 向けに推奨) |
代替ファイル
| ファイル | 説明 |
|---|---|
| yt-dlp_linux | Linux(glibc 2.17 以降)向けスタンドアロン x86_64 バイナリ |
| yt-dlp_linux.zip | パッケージ化されていない Linux(glibc 2.17 以降)向け x86_64 実行ファイル(自動更新なし) |
| yt-dlp_linux_aarch64 | Linux(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_musllinux | Linux(musl 1.2 以降)向けスタンドアロン x86_64 バイナリ |
| yt-dlp_musllinux.zip | パッケージ化されていない Linux(musl 1.2 以降)向け x86_64 実行ファイル(自動更新なし) |
| yt-dlp_musllinux_aarch64 | Linux(musl 1.2 以降)向けスタンドアロン aarch64 バイナリ |
| yt-dlp_musllinux_aarch64.zip | パッケージ化されていない Linux(musl 1.2 以降)向け aarch64 実行ファイル(自動更新なし) |
| yt-dlp_x86.exe | Windows(Win8 以降)向けスタンドアロン x86(32 ビット)バイナリ |
| yt-dlp_win_x86.zip | パッケージ化されていない Windows(Win8 以降)向け x86(32 ビット)実行ファイル(自動更新なし) |
| yt-dlp_arm64.exe | Windows(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-512SUMS | GNU 形式の SHA512 チェックサム |
| SHA2-512SUMS.sig | SHA512 チェックサムの GPG 署名ファイル |
| SHA2-256SUMS | GNU 形式の SHA256 チェックサム |
| SHA2-256SUMS.sig | SHA256 チェックサムの 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-dlpPyPI パッケージの開発版としても入手できます(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ランタイム/エンジンの使用を強く推奨します。
強く推奨
-
ffmpeg と ffprobe - 動画ファイルと音声ファイルの結合のほか、さまざまな後処理に必要です。ライセンスはビルドによって異なります
ffmpeg は非常に重要な依存関係であるため、yt-dlp/FFmpeg-Builds で独自のビルドを提供しています。以前は、yt-dlp ユーザーによくある問題を修正するため、これらのビルドにパッチを適用していましたが、現在は上流の ffmpeg と同等です。詳細についてはREADMEをご覧ください
重要:必要なのは ffmpeg のバイナリであり、同じ名前のPython パッケージではありません
-
yt-dlp-ejs - YouTube を完全にサポートするために必要です。Unlicenseの下でライセンスされており、MITおよびISCのコンポーネントがバンドルされています。
yt-dlp-ejs の実行には、deno(推奨)、node.js、bun、QuickJS などの JavaScript ランタイム/エンジンも必要です。Wikiをご覧ください。
ネットワーク
- 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で使用する任意の外部ダウンローダー
非推奨
依存関係を使用または再配布するには、それぞれのライセンス条項に同意する必要があります。
スタンドアロン版のリリースバイナリには、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 を設定できます。設定は次の場所から読み込まれます。
-
メイン設定:
--config-locationsで指定されたファイル
-
ポータブル設定:(ポータブルインストールの場合に推奨)
- バイナリを使用する場合は、バイナリと同じディレクトリにある
yt-dlp.conf - ソースコードから実行する場合は、
yt_dlpの親ディレクトリにあるyt-dlp.conf
- バイナリを使用する場合は、バイナリと同じディレクトリにある
-
ホーム設定:
-Pで指定されたホームパスにあるyt-dlp.conf-Pが指定されていない場合は、現在のディレクトリが検索されます
-
ユーザー設定:
${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
こちらも参照してください:環境変数に関する注意事項
-
システム設定:
/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。つまり、パーセント記号の後に括弧で囲まれた名前が続き、その後に書式設定操作が続きます。
フィールド名自体(括弧内の部分)にも、次のような特殊な書式設定を使用できます。
-
オブジェクトのトラバーサル:メタデータ内の辞書やリストは、ドット
.を区切り文字としてトラバースできます。例:%(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を使用してください -
算術演算:数値フィールドに対して、
+、-、*を使った簡単な算術演算ができます。例:%(playlist_index+10)03d、%(n_entries+1-playlist_index)d -
日付/時刻の書式設定:フィールド名の後に
>で区切って指定すると、strftime の書式設定に従って日付/時刻フィールドを書式設定できます。例:%(duration>%H-%M-%S)s、%(upload_date>%Y-%m-%d)s、%(epoch-3600>%H-%M-%S)s -
代替フィールド:
,で区切って代替フィールドを指定できます。例:%(release_date>%Y,upload_date>%Y|Unknown)s -
置換:
str.formatミニ言語に従って、&で区切ることで置換値を指定できます。フィールドが空でない場合、実際のフィールド内容の代わりにこの置換値が使用されます。代替フィールドを考慮した後に処理されるため、代替フィールドのいずれかが空でない場合に置換値が使用されます。例:%(chapters&has chapters|no chapters)s、%(title&TITLE={:>20}|NO TITLE)s -
デフォルト値:フィールドが空の場合に使用する固定のデフォルト値は、
|で区切って指定できます。これは--output-na-placeholderより優先されます。例:%(uploader|Unknown)s -
追加の変換:通常の書式タイプ
diouxXeEfFgGcrsに加えて、yt-dlp はB= Bytes、j= json(整形出力にはフラグ#、Unicode には+)、h= HTML エスケープ、l= カンマ区切りのリスト(\nで改行区切りにするにはフラグ#)、q= ターミナル向けに引用された文字列(リストを別々の引数に分割するにはフラグ#)、D= 十進接尾辞の追加(例:10M)(係数に 1024 を使用するにはフラグ#)、S= ファイル名としてサニタイズ(制限付きにするにはフラグ#)への変換もサポートしています。 -
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): 動画のアップロード者のニックネームまたは IDuploader_url(string): 動画のアップロード者のプロフィール URLlicense(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): チャンネルの IDchannel_url(string): チャンネルの URLchannel_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_idplaylist_count(numeric): プレイリスト内のアイテムの合計数。プレイリスト全体が抽出されない場合、判明しないことがありますplaylist_index(numeric): プレイリスト内の動画のインデックス。最終インデックスに合わせて先頭にゼロを付けますplaylist_autonumber(numeric): プレイリストのダウンロードキュー内での動画の位置。プレイリストの合計数に合わせて先頭にゼロを付けますplaylist_uploader(string): プレイリストのアップロード者の氏名playlist_uploader_id(string): プレイリストのアップロード者のニックネームまたは IDplaylist_channel(string): プレイリストをアップロードしたチャンネルの表示名playlist_channel_id(string): プレイリストをアップロードしたチャンネルの識別子playlist_webpage_url(string): プレイリストのウェブページ URLwebpage_url(string): yt-dlp に渡すと同じ結果が再度得られる動画ウェブページの URLwebpage_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): 動画エピソードが属するシリーズまたは番組の IDseason(string): 動画エピソードが属するシーズンのタイトルseason_number(numeric): 動画エピソードが属するシーズンの番号season_id(string): 動画エピソードが属するシーズンの IDepisode(string): 動画エピソードのタイトルepisode_number(numeric): シーズン内での動画エピソードの番号episode_id(string): 動画エピソードの ID
音楽アルバムのトラックまたは一部であるメディアで使用できます:
track(string): トラックのタイトルtrack_number(numeric): アルバムまたはディスク内でのトラックの番号track_id(string): トラックの IDartists(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:動画の URLext:ファイル拡張子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 がファイルのメタデータにデフォルトで追加するフィールドを以下に示します。
| メタデータフィールド | 取得元 |
|---|---|
title | track または title |
date | upload_date |
description、 synopsis | description |
purl、comment | webpage_url |
track | track_number |
artist | artist、artists、creator、creators、uploader または uploader_id |
composer | composer または composers |
genre | genre、genres、categories または tags |
album | album または series |
album_artist | album_artist または album_artists |
disc | disc_number |
show | series |
season_number | season_number |
episode_id | episode または episode_id |
episode_sort | episode_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,-webplayer_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のいずれか、または複数を指定します。
app_id:API リクエストに使用するX-IG-App-IDヘッダーの値。実際の ID 番号、ios、またはweb(デフォルト)を指定できます。
niconicochannelplus
max_comments:抽出するコメントの最大数。デフォルトは120です。
tiktok
api_hostname: モバイル API 呼び出しに使用するホスト名です。例:api22-normal-c-alisg.tiktokv.comapp_name: モバイル API 呼び出しに使用するデフォルトのアプリ名です。例:trillapp_version: モバイル API 呼び出しに使用するデフォルトのアプリバージョンです。manifest_app_versionと併せて設定してください。例:34.1.2manifest_app_version: モバイル API 呼び出しに使用するデフォルトの数値形式のアプリバージョンです。例:2023401020aid: モバイル API 呼び出しに使用するデフォルトのアプリ ID です。例:1180app_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/340001device_id: モバイル API 呼び出しに使用する実際のデバイス ID を指定して、モバイル API 抽出を有効にします。デフォルトはランダムな 19 桁の文字列です
rokfinchannel
tab: ダウンロードするタブを指定します。new、top、videos、podcasts、streams、stacksのいずれかです
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: ブラウザーのローカルストレージにあるrefreshTokenUUID を指定すると、ユーザー名に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 に空でない値を設定すると、プラグインの読み込みを完全に無効にできます。
プラグインのインストール
プラグインは、さまざまな方法と場所にインストールできます。
-
設定ディレクトリ: プラグインパッケージ(
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/
- ユーザープラグイン
-
実行ファイルの場所:ポータブルインストールでは、実行ファイルの場所の下にある
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/
- バイナリ:
-
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 を指定してください。チャンネルに指定したタブが表示されていない場合は、エラーが発生します。また、ライブ動画がない場合、
/liveURL はチャンネル全体を黙ってダウンロードするのではなく、エラーになります。これらのリダイレクトをすべて元に戻すには--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をご覧ください。