🐕

yt-dlp オプション 一覧 (pythonから呼び出す場合)

2023/11/11に公開

オプションの例

たくさんありすぎるので最初に例を示します.以下のようなことが設定できます.

・タイトル
・ダウンロード先フォルダ
・音の品質(または動画の品質)
・プレイリストの古い順に取得
・最大ファイルサイズを指定(bytes)
・最大ダウンロード数

pythonで書く場合こんな感じです.

example.py
ydl_opts = {
      'outtmpl': file_path, # ダウンロード先 (例 /output/test.mp4)
      'title': '%(title)s', # タイトル
      'format': 'bestaudio', # 音の品質
      'playlistreverse': True,  #プレイリストの古い順に取得
      'max_filesize': 700000000,  #最大ファイルサイズを指定(bytes), 例 700 MB
      'max_downloads' : '1', #最大ダウンロード数
  }

オプション一覧

ソースコードに一覧が載っています.
Github yt-dlp公式

YoutubeDL.py
利用可能なオプション:

  username:          認証目的のユーザー名。
  password:          認証目的のパスワード。
  videopassword:     動画にアクセスするためのパスワード。
  ap_mso:            Adobe Passの複数システムオペレーター識別子。
  ap_username:       複数システムオペレーターアカウントのユーザー名。
  ap_password:       複数システムオペレーターアカウントのパスワード。
  usenetrc:          認証にnetrcを使用するかどうか。
  netrc_location:    netrcファイルの場所。デフォルトは~/.netrc。
  netrc_cmd:         資格情報を取得するためにシェルコマンドを使用
  verbose:           stdoutに追加の情報を印刷する。
  quiet:             stdoutにメッセージを印刷しない。
  no_warnings:       警告に対して何も印刷しない。
  forceprint:        WHENにマップされたキーを持つdictを
  	     stdoutに印刷するためのテンプレートのリスト。
  	     許可されたキーはvideoまたはutils.POSTPROCESS_WHENのアイテムです。
  	     互換性のため、単一のリストも受け入れられます
  print_to_file:     WHEN(forceprintと同じ)にマップされた
  	     テンプレートとファイル名のタプルのリスト
  forcejson:         info_dictをJSONとして強制的に印刷する。
  dump_single_json:  プレイリスト(またはビデオ)のinfo_dictを
  	     単一のJSON行として強制的に印刷する。
  force_write_download_archive: 'skip_download'または'simulate'に関係なく、
  	     ダウンロードアーカイブを強制的に書き込む
  simulate:          ビデオファイルの実際のダウンロードをスキップします。未設定の場合(またはNoneの場合)、
  	     listsubtitles、listformats、またはlist_thumbnailsが使用される場合にのみシミュレートします
  format:            ビデオフォーマットコード。詳細については「FORMAT SELECTION」を参照してください。
  	     関数も渡すことができます。関数は 'ctx' を引数に取り、ダウンロードするフォーマットを返します。
  	     実装の詳細については「build_format_selector」を参照してください
  allow_unplayable_formats:   再生できないフォーマットを抽出およびダウンロードすることを許可します。
  ignore_no_formats_error: "No video formats"エラーを無視します。実際には
  	     ダウンロード可能でない場合でもメタデータを抽出するのに役立ちます(実験的)
  format_sort:       ビデオフォーマットを並べ替えるためのフィールドのリスト。
  	     詳細については「Sorting Formats」を参照してください。
  format_sort_force: 指定されたformat_sortを強制します。詳細については「Sorting Formats」を参照してください。
  prefer_free_formats: 同じ品質の非無料のものよりも無料のコンテナを優先するかどうか。
  allow_multiple_video_streams:   複数のビデオストリームを単一のファイルに統合することを許可します
  allow_multiple_audio_streams:   複数のオーディオストリームを単一のファイルに統合することを許可します
  check_formats      フォーマットがダウンロード可能かどうかをテストするかどうか。
  	     True(すべてをチェック)、False(チェックなし)、
  	     'selected'(選択したフォーマットをチェック)、またはNone(エクストラクタによってリクエストされた場合のみチェック)
  paths:             出力パスの辞書。許可されたキーは 'home'
  	     'temp' および OUTTMPL_TYPES(utils/_utils.py内)のキーです。
  outtmpl:           出力名のためのテンプレートの辞書。許可されたキー
  	     は 'default' および OUTTMPL_TYPES(utils/_utils.py内)のキーです。
  	     youtube-dlとの互換性のため、単一の文字列も使用できます
  outtmpl_na_placeholder: 利用不可なメタフィールドのプレースホルダ。
  restrictfilenames: ファイル名に "&" およびスペースを許可しない
  trim_file_name:    ファイル名の長さを制限(拡張子を除く)
  windowsfilenames:  ファイル名をWindows互換に強制します
  ignoreerrors:      ダウンロード/ポストプロセッシングエラーで停止しない。
  	     'only_download'を指定して、ダウンロードエラーのみを無視します。
  	     CLIの場合はデフォルトで 'only_download' ですが、APIの場合はFalseです
  skip_playlist_after_errors: プレイリスト全体をスキップするまで許容される失敗の数
  allowed_extractors: 許可されるエクストラクタ名に一致する正規表現のリスト
  overwrites:        Trueの場合はすべてのビデオおよびメタデータファイルを上書きします。
  	     Noneの場合はビデオ以外のファイルのみを上書きし、
  	     Falseの場合はどのファイルも上書きしません
  playlist_items:    ダウンロードするプレイリストの特定のインデックス。
  playlistrandom:    プレイリストアイテムをランダムな順序でダウンロードします。
  lazy_playlist:     プレイリストのエントリが受信されると、それらを処理します。
  matchtitle:        一致するタイトルのみをダウンロードします。
  rejecttitle:       一致するタイトルのダウンロードを拒否します。
  logger:            メッセージを logging.Logger インスタンスに記録します。
  logtostderr:       stderrにすべてを印刷するかどうか。stdoutの代わりに
  consoletitle:      コンソールウィンドウのタイトルバーに進捗を表示します。
  writedescription:  動画の説明を .description ファイルに書き込みます
  writeinfojson:     動画の説明を .info.json ファイルに書き込みます
  clean_infojson:    infojsonから内部メタデータを削除します
  getcomments:       動画のコメントを抽出します。これはディスクに書き込まれません
  	     writeinfojsonも指定されている場合
  writeannotations:  動画の注釈を .annotations.xml ファイルに書き込みます
  writethumbnail:    サムネイル画像をファイルに書き込みます
  allow_playlist_files: 'write*'オプションを使用している場合に、プレイリストの説明、infojsonなど
  	     をディスクに書き込むかどうか
  write_all_thumbnails:  すべてのサムネイルフォーマットをファイルに書き込みます
  writelink:         インターネットショートカットファイルを書き込みます。
  	     現在のプラットフォームによって異なります(.url/.webloc/.desktop)
  writeurllink:      Windowsのインターネットショートカットファイル(.url)を書き込みます
  writewebloclink:   macOSのインターネットショートカットファイル(.webloc)を書き込みます
  writedesktoplink:  Linuxのインターネットショートカットファイル(.desktop)を書き込みます
  writesubtitles:    動画の字幕をファイルに書き込みます
  writeautomaticsub: 自動生成された字幕をファイルに書き込みます
  listsubtitles:     利用可能なすべての字幕をリストします
  subtitlesformat:   字幕のフォーマットコード
  subtitleslangs:    ダウンロードする字幕の言語のリスト(正規表現できる)
  	     リストには "all" を含めることができ、全ての利用可能な
  	     字幕を指すために使用できます。言語は "-" で始まることができ、
  	     リクエストされた言語から除外されます、例:['all', '-live_chat']
  keepvideo:         ポストプロセッシング後に動画ファイルを保持する
  daterange:         utils.DateRange オブジェクト、upload_date が範囲内の場合のみダウンロードします。
  skip_download:     実際の動画ファイルのダウンロードをスキップします
  cachedir:          ファイルシステム内のキャッシュファイルの場所。
  	     False でファイルシステムキャッシュを無効にします。
  noplaylist:        疑わしい場合はプレイリストの代わりに単一のビデオをダウンロードします。
  age_limit:         ユーザーの年齢を表す整数。対象外のビデオはスキップされます。
  min_views:         ビデオがスキップされないための最小ビューカウントを表す整数。
  	     ビューカウント情報のないビデオは常にダウンロードされます。制限なしの場合はNoneです。
  max_views:         最大ビューカウントを表す整数。
  	     それよりも人気のあるビデオはダウンロードされません。
  	     ビューカウント情報のないビデオは常にダウンロードされます。制限なしの場合はNoneです。
  download_archive:  ダウンロードが記録されるセットまたはファイルの名前。
  	     ファイルに既に存在するビデオは再ダウンロードされません。
  break_on_existing: ダウンロードを試みた後にファイルがアーカイブ内にある場合、
  	     ダウンロードプロセスを停止します。
  break_per_url:     break_on_rejectとbreak_on_existingの有無
  cookiefile:        Cookieを読み込んでダンプするためのファイル名またはテキストストリーム
  cookiesfrombrowser: ブラウザの名前、プロファイルの名前/パス、キーリングの名前、
  	     およびコンテナの名前を含むタプル。例: ('chrome', ) または
  	     ('vivaldi', 'default', 'BASICTEXT') または ('firefox', 'default', None, 'Meta')
  legacyserverconnect: RFC 5746セキュア再交渉をサポートしないサーバーへの明示的なHTTPS接続を許可
  nocheckcertificate:  SSL証明書を検証しない
  client_certificate:  PEM形式のクライアント証明書ファイルへのパス。秘密鍵を含むことができる
  client_certificate_key:  クライアント証明書のための秘密鍵ファイルへのパス
  client_certificate_password:  クライアント証明書の秘密鍵のパスワード(暗号化されている場合)
  	      提供されていない場合、暗号化されている場合、yt-dlpは対話的に尋ねます
  prefer_insecure:   情報を取得するためにHTTPSの代わりにHTTPを使用
  	     (一部のエクストラクタのみサポート)
  enable_file_urls:  file:// URLs を有効にする。これはデフォルトで無効になっています(セキュリティのため)。
  http_headers:      すべてのリクエストに使用されるカスタムヘッダーの辞書
  proxy:             使用するプロキシサーバーのURL
  geo_verification_proxy: 地域制限サイトでのIPアドレス検証に使用するプロキシのURL
  socket_timeout:    応答のないホストを待機する時間(秒単位)
  bidi_workaround:   バグのあるバイダイレクショナルテキストのない端末を回避するために、fridibiを使用
  debug_printtraffic:送信および受信したHTTPトラフィックを表示
  default_search:    入力URLが有効でない場合にこれを前置する。
  	     'auto' は詳細な推測のため
  encoding:          システム指定の代わりにこのエンコーディングを使用
  extract_flat:      url_resultsをさらに解決および処理するかどうか
  	     * False:     常に処理。APIのデフォルト
  	     * True:      処理しない
  	     * 'in_playlist': プレイリスト/マルチビデオ内で処理しない
  	     * 'discard': 常に処理するが、プレイリスト/マルチビデオ内の結果は返さない
  			  'discard_in_playlist'のCLIのデフォルト
  wait_for_video:    指定された場合、スケジュールされたストリームが利用可能になるのを待機します。
  	     値はリトライ間の範囲を含むタプルである必要があります
  postprocessors:    各エントリを持つ辞書のリスト
  	     * key:  ポストプロセッサの名前。詳細は
  		     yt_dlp/postprocessor/__init__.py を参照
  	     * when: ポストプロセッサを実行するタイミング。許可される値は
  		     utils.POSTPROCESS_WHENのエントリ
  		     指定されていない場合は 'post_process' と仮定されます
  progress_hooks:    ダウンロード進捗状況に関する呼び出しを行う関数のリスト
  	     進捗状況のエントリを持つ辞書が渡されます
  	     * status: "downloading""error"、または "finished" のいずれか。
  		       まずこれを確認し、未知の値は無視します。
  	     * info_dict: 抽出された info_dict

  	     statusが "downloading" または "finished" の場合、
  	     以下のプロパティも存在するかもしれません:
  	     * filename: 最終的なファイル名(常に存在)
  	     * tmpfilename: 現在書き込んでいるファイル名
  	     * downloaded_bytes: ディスク上のバイト数
  	     * total_bytes: ファイル全体のサイズ。不明の場合は None
  	     * total_bytes_estimate: 予測される最終的なファイルサイズ,
  				     利用できない場合は None.
  	     * elapsed: ダウンロードが始まってからの秒数。
  	     * eta: 推定される時間(秒単位)。不明の場合は None
  	     * speed: ダウンロード速度(バイト/秒)。不明の場合は None
  	     * fragment_index: 現在ダウンロード中のビデオフラグメントのカウンタ。
  	     * fragment_count: マージされる個々のファイルの数

  	     ダウンロードが成功した場合、進捗フックは少なくとも一度
  	     (statusが "finished" の場合)呼び出されます。
  postprocessor_hooks:  ポスト処理の進捗に関する呼び出しを行う関数のリスト
  	     進捗状況のエントリを持つ辞書が渡されます
  	     * status: "started""processing"、または "finished" のいずれか。
  		       まずこれを確認し、未知の値は無視します。
  	     * postprocessor: ポストプロセッサの名前
  	     * info_dict: 抽出された info_dict

  	     処理が成功した場合、ポストプロセッサの進捗フックは少なくとも二度
  	     (statusが "started" および "finished" の場合)呼び出されます。
  merge_output_format: フォーマットをマージする際に使用する拡張子の "/" 区切りリスト。
  final_ext:         予想される最終拡張子; ファイルが既にダウンロードおよび変換されたかどうかを検出するために使用
  fixup:             ファイルの既知の欠陥を自動的に修正
  	     - "never": 何もしない
  	     - "warn": 警告のみ発生
  	     - "detect_or_warn": 修復可能なかどうかを確認し、それ以外の場合は警告
  source_address:    バインドするクライアント側のIPアドレス。
  sleep_interval_requests: 抽出中のリクエスト間の秒数の待機
  sleep_interval:    ダウンロードごとの待機前に寝る秒数
  	     使用する場合またはランダムな前に最小の範囲として
  	     ダウンロード前の待機(最小可能な秒数)
  	     または sleep_interval と一緒に使用すると
  	     max_sleep_interval。
  max_sleep_interval:ダウンロード前のランダムな待機の上限
  	     フロートの実際のスリープ時間は範囲からランダムになります
  	     [sleep_interval; max_sleep_interval]。
  sleep_interval_subtitles: 各字幕ダウンロードの前に待機する秒数
  listformats:       利用可能なビデオフォーマットの概要を印刷して終了。
  list_thumbnails:   すべてのサムネイルの表を印刷して終了。
  match_filter:      各ビデオに対して呼び出される関数
  	     (info_dict、*、incomplete: bool) -> Optional[str]
  	     youtube-dlとの後方互換性のために、シグネチャ
  	     (info_dict) -> Optional[str] も許可されています。
  	     - メッセージを返すと、ビデオは無視されます。
  	     - Noneを返すと、ビデオはダウンロードされます。
  	     - utils.NO_DEFAULTを返すと、ユーザーは対話的に
  	       ビデオをダウンロードするかどうかを尋ねられます。
  	     - utils.DownloadCancelled(msg) を発生させて残りを中止
  	       ダウンロードはビデオが拒否された場合
  	     utils/_utils.pyのmatch_filter_funcはこれの一例です。
  color:             出力ストリーム名をキーとし、対応する色のポリシーを値とする辞書。
  	     単一の色のポリシーでも構いません。
  	     有効なストリーム名は 'stdout' および 'stderr' です。
  	     有効な色のポリシーは 'always''auto''no_color'、または 'never' のいずれかです。
  geo_bypass:        X-Forwarded-Forを偽装して地理的な制限を回避
  geo_bypass_country:
  	     地理的な制限を回避するために使用されるISO 3166-22文字国コード
  	     X-Forwarded-For HTTPヘッダーを偽装して
  geo_bypass_ip_block:
  	     類似の方法で使用されるCIDR表記のIP範囲
  external_downloader: プロトコルキーとそのための外部ダウンローダーの実行可能ファイルの辞書
  	     許可されているプロトコルは
  	     デフォルト|http|ftp|m3u8|dash|rtsp|rtmp|mms。
  	     'native'に値を設定して、ネイティブダウンローダーを使用
  compat_opts:       互換性オプション。デフォルトの動作の違いについては "Differences in default behavior" を参照。
  	     次のオプションはAPIを介して使用すると機能しません:
  	     filename、abort-on-error、multistreams、no-live-chat、format-sort
  	     no-clean-infojson、no-playlist-metafiles、no-keep-subs、no-attach-info-json。
  	     実装については __init__.py を参照してください
  progress_template: 進捗状況の出力のためのテンプレートの辞書。
  	     許可されるキーは 'download''postprocess''download-title'(コンソールのタイトル)および 'postprocess-title' です。
  	     テンプレートは 'progress' および 'info' のキーでマップされます
  retry_sleep_functions: リトライ回数を引数として受け取り、秒単位でのスリープ時間を返す関数の辞書。
  	     許可されているキーは 'http''fragment''file_access' です。

  download_ranges:   各ビデオに対して呼び出されるコールバック関数で、
  		     シグネチャは (info_dict、ydl) -> Iterable[Section] です。
  		     返されたセクションのみがダウンロードされます。
  		     各セクションは以下のキーを持つ辞書です:
  		     * start_time: セクションの開始時間(秒単位)
  		     * end_time: セクションの終了時間(秒単位)
  		     * title: セクションのタイトル(オプション)
  		     * index: セクションの番号(オプション)

  force_keyframes_at_cuts: ビデオをダウンロードする際に、正確なカットを得るために
  		     動画を再エンコードするかどうか

  noprogress:        進捗バーを表示しない

  live_from_start:   ライブストリームのビデオを開始からダウンロードするかどうか

  以下のパラメータは YoutubeDL 自体では使用されず、
  ダウンローダー(yt_dlp/downloader/common.pyを参照)で使用されます:
  nopart、updatetime、buffersize、ratelimit、throttledratelimit、min_filesize、
  max_filesize、test、noresizebuffer、retries、file_access_retries、fragment_retries、
  continuedl、xattr_set_filesize、hls_use_mpegts、http_chunk_size、
  external_downloader_args、concurrent_fragment_downloads。

  以下のオプションはポストプロセッサによって使用されます:
  ffmpeg_location:   ffmpeg/avconv バイナリの場所。バイナリまたはその含まれるディレクトリへのパス。
  postprocessor_args: ポストプロセッサ/実行可能キー(小文字)と、
  		     ポストプロセッサ/実行可能の追加コマンドライン引数のリストの辞書。
  		     辞書には "PP+EXE" キーも含まれ、指定された PP で指定された exe が使用される場合に使用されます。
  		     すべての PP に渡す引数の名前として 'default' を使用できます。
  		     youtube-dl との互換性のため、引数のリストも使用できます

  以下のオプションはエクストラクタによって使用されます:
  extractor_retries: 既知のエラーの再試行回数(デフォルト: 3)
  dynamic_mpd:       動的な DASH マニフェストを処理するかどうか(デフォルト: True)
  hls_split_discontinuity: HLS プレイリストを
  		     広告ブレイクなどの不連続箇所で異なる形式に分割するかどうか(デフォルト: False)
  extractor_args:    エクストラクタに渡す引数の辞書。詳細については「EXTRACTOR ARGUMENTS」を参照。
  		     例:{'youtube': {'skip': ['dash', 'hls']}}
  mark_watched:      動画を視聴済みとしてマークする(--simulate でも有効)。YouTube 専用

  以下のオプションは非推奨であり、将来的に削除される可能性があります:

  break_on_reject:   フィルタリングされたビデオに遭遇したときにダウンロードプロセスを停止する。
  		     - 代わりに match_filter 内で `raise DownloadCancelled(msg)` を使用する
  force_generic_extractor: ダウンローダーにジェネリックエクストラクタを使用するように強制する
  		     - allowed_extractors = ['generic', 'default']
  playliststart:     - playlist_items を使用する
  		     開始するプレイリストアイテム。
  playlistend:       - playlist_items を使用する
  		     終了するプレイリストアイテム。
  playlistreverse:   - playlist_items を使用する
  		     プレイリストアイテムを逆順にダウンロードする。
  forceurl:          - forceprint を使用する
  		     最終的な URL を強制的に表示する。
  forcetitle:        - forceprint を使用する
  		     タイトルを強制的に表示する。
  forceid:           - forceprint を使用する
  		     ID を強制的に表示する。
  forcethumbnail:    - forceprint を使用する
  		     サムネイルの URL を強制的に表示する。
  forcedescription:  - forceprint を使用する
  		     説明を強制的に表示する。
  forcefilename:     - forceprint を使用する
  		     最終的なファイル名を強制的に表示する。
  forceduration:     - forceprint を使用する
  		     持続時間を強制的に表示する。
  allsubtitles:      - subtitleslangs = ['all'] を使用する
  		     ビデオのすべての字幕をダウンロードする
  		     (writesubtitles または writeautomaticsub が必要)
  include_ads:       - 機能しません
  		     広告もダウンロードする
  call_home:         - 実装されていません
  		     デバッグのために yt-dlp サーバに連絡することが許可されている場合は true
  post_hooks:        - カスタムポストプロセッサを登録する
  		     各ビデオファイルの最終ステップとして呼び出される関数のリストで、
  		     すべてのポストプロセッサが呼び出された後に呼び出されます。
  		     ファイル名は唯一の引数として渡されます。

  hls_prefer_native: - external_downloader = {'m3u8': 'native'} または {'m3u8': 'ffmpeg'} を使用します。
  		     True の場合、ffmpeg/avconv の代わりにネイティブな HLS ダウンローダーを使用します。
  		     False の場合、ffmpeg/avconv を使用します。None の場合、エクストラクタが提案する
  		     ダウンローダーを使用します。

  prefer_ffmpeg:     - avconv サポートは非推奨です。
  		     False の場合、両方が利用可能な場合は avconv の代わりに ffmpeg を使用します。
  		     それ以外の場合は ffmpeg を優先します。

  youtube_include_dash_manifest: - extractor_args を使用します。
  		     True の場合(デフォルト)、DASH マニフェストと関連データは
  		     エクストラクタによってダウンロードおよび処理されます。
  		     DASH に興味がない場合は無効にしてネットワーク I/O を削減できます。
  		     (YouTube 専用)

  youtube_include_hls_manifest: - extractor_args を使用します。
  		     True の場合(デフォルト)、HLS マニフェストと関連データは
  		     エクストラクタによってダウンロードおよび処理されます。
  		     HLS に興味がない場合は無効にしてネットワーク I/O を削減できます。
  		     (YouTube 専用)

  no_color:          - `color='no_color'` と同じ

  no_overwrites:     - `overwrites=False` と同じ



原文

YoutubeDL.py
Available options:

  username:          Username for authentication purposes.
  password:          Password for authentication purposes.
  videopassword:     Password for accessing a video.
  ap_mso:            Adobe Pass multiple-system operator identifier.
  ap_username:       Multiple-system operator account username.
  ap_password:       Multiple-system operator account password.
  usenetrc:          Use netrc for authentication instead.
  netrc_location:    Location of the netrc file. Defaults to ~/.netrc.
  netrc_cmd:         Use a shell command to get credentials
  verbose:           Print additional info to stdout.
  quiet:             Do not print messages to stdout.
  no_warnings:       Do not print out anything for warnings.
  forceprint:        A dict with keys WHEN mapped to a list of templates to
                     print to stdout. The allowed keys are video or any of the
                     items in utils.POSTPROCESS_WHEN.
                     For compatibility, a single list is also accepted
  print_to_file:     A dict with keys WHEN (same as forceprint) mapped to
                     a list of tuples with (template, filename)
  forcejson:         Force printing info_dict as JSON.
  dump_single_json:  Force printing the info_dict of the whole playlist
                     (or video) as a single JSON line.
  force_write_download_archive: Force writing download archive regardless
                     of 'skip_download' or 'simulate'.
  simulate:          Do not download the video files. If unset (or None),
                     simulate only if listsubtitles, listformats or list_thumbnails is used
  format:            Video format code. see "FORMAT SELECTION" for more details.
                     You can also pass a function. The function takes 'ctx' as
                     argument and returns the formats to download.
                     See "build_format_selector" for an implementation
  allow_unplayable_formats:   Allow unplayable formats to be extracted and downloaded.
  ignore_no_formats_error: Ignore "No video formats" error. Usefull for
                     extracting metadata even if the video is not actually
                     available for download (experimental)
  format_sort:       A list of fields by which to sort the video formats.
                     See "Sorting Formats" for more details.
  format_sort_force: Force the given format_sort. see "Sorting Formats"
                     for more details.
  prefer_free_formats: Whether to prefer video formats with free containers
                     over non-free ones of same quality.
  allow_multiple_video_streams:   Allow multiple video streams to be merged
                     into a single file
  allow_multiple_audio_streams:   Allow multiple audio streams to be merged
                     into a single file
  check_formats      Whether to test if the formats are downloadable.
                     Can be True (check all), False (check none),
                     'selected' (check selected formats),
                     or None (check only if requested by extractor)
  paths:             Dictionary of output paths. The allowed keys are 'home'
                     'temp' and the keys of OUTTMPL_TYPES (in utils/_utils.py)
  outtmpl:           Dictionary of templates for output names. Allowed keys
                     are 'default' and the keys of OUTTMPL_TYPES (in utils/_utils.py).
                     For compatibility with youtube-dl, a single string can also be used
  outtmpl_na_placeholder: Placeholder for unavailable meta fields.
  restrictfilenames: Do not allow "&" and spaces in file names
  trim_file_name:    Limit length of filename (extension excluded)
  windowsfilenames:  Force the filenames to be windows compatible
  ignoreerrors:      Do not stop on download/postprocessing errors.
                     Can be 'only_download' to ignore only download errors.
                     Default is 'only_download' for CLI, but False for API
  skip_playlist_after_errors: Number of allowed failures until the rest of
                     the playlist is skipped
  allowed_extractors:  List of regexes to match against extractor names that are allowed
  overwrites:        Overwrite all video and metadata files if True,
                     overwrite only non-video files if None
                     and don't overwrite any file if False
  playlist_items:    Specific indices of playlist to download.
  playlistrandom:    Download playlist items in random order.
  lazy_playlist:     Process playlist entries as they are received.
  matchtitle:        Download only matching titles.
  rejecttitle:       Reject downloads for matching titles.
  logger:            Log messages to a logging.Logger instance.
  logtostderr:       Print everything to stderr instead of stdout.
  consoletitle:      Display progress in console window's titlebar.
  writedescription:  Write the video description to a .description file
  writeinfojson:     Write the video description to a .info.json file
  clean_infojson:    Remove internal metadata from the infojson
  getcomments:       Extract video comments. This will not be written to disk
                     unless writeinfojson is also given
  writeannotations:  Write the video annotations to a .annotations.xml file
  writethumbnail:    Write the thumbnail image to a file
  allow_playlist_files: Whether to write playlists' description, infojson etc
                     also to disk when using the 'write*' options
  write_all_thumbnails:  Write all thumbnail formats to files
  writelink:         Write an internet shortcut file, depending on the
                     current platform (.url/.webloc/.desktop)
  writeurllink:      Write a Windows internet shortcut file (.url)
  writewebloclink:   Write a macOS internet shortcut file (.webloc)
  writedesktoplink:  Write a Linux internet shortcut file (.desktop)
  writesubtitles:    Write the video subtitles to a file
  writeautomaticsub: Write the automatically generated subtitles to a file
  listsubtitles:     Lists all available subtitles for the video
  subtitlesformat:   The format code for subtitles
  subtitleslangs:    List of languages of the subtitles to download (can be regex).
                     The list may contain "all" to refer to all the available
                     subtitles. The language can be prefixed with a "-" to
                     exclude it from the requested languages, e.g. ['all', '-live_chat']
  keepvideo:         Keep the video file after post-processing
  daterange:         A utils.DateRange object, download only if the upload_date is in the range.
  skip_download:     Skip the actual download of the video file
  cachedir:          Location of the cache files in the filesystem.
                     False to disable filesystem cache.
  noplaylist:        Download single video instead of a playlist if in doubt.
  age_limit:         An integer representing the user's age in years.
                     Unsuitable videos for the given age are skipped.
  min_views:         An integer representing the minimum view count the video
                     must have in order to not be skipped.
                     Videos without view count information are always
                     downloaded. None for no limit.
  max_views:         An integer representing the maximum view count.
                     Videos that are more popular than that are not
                     downloaded.
                     Videos without view count information are always
                     downloaded. None for no limit.
  download_archive:  A set, or the name of a file where all downloads are recorded.
                     Videos already present in the file are not downloaded again.
  break_on_existing: Stop the download process after attempting to download a
                     file that is in the archive.
  break_per_url:     Whether break_on_reject and break_on_existing
                     should act on each input URL as opposed to for the entire queue
  cookiefile:        File name or text stream from where cookies should be read and dumped to
  cookiesfrombrowser:  A tuple containing the name of the browser, the profile
                     name/path from where cookies are loaded, the name of the keyring,
                     and the container name, e.g. ('chrome', ) or
                     ('vivaldi', 'default', 'BASICTEXT') or ('firefox', 'default', None, 'Meta')
  legacyserverconnect: Explicitly allow HTTPS connection to servers that do not
                     support RFC 5746 secure renegotiation
  nocheckcertificate:  Do not verify SSL certificates
  client_certificate:  Path to client certificate file in PEM format. May include the private key
  client_certificate_key:  Path to private key file for client certificate
  client_certificate_password:  Password for client certificate private key, if encrypted.
                      If not provided and the key is encrypted, yt-dlp will ask interactively
  prefer_insecure:   Use HTTP instead of HTTPS to retrieve information.
                     (Only supported by some extractors)
  enable_file_urls:  Enable file:// URLs. This is disabled by default for security reasons.
  http_headers:      A dictionary of custom headers to be used for all requests
  proxy:             URL of the proxy server to use
  geo_verification_proxy:  URL of the proxy to use for IP address verification
                     on geo-restricted sites.
  socket_timeout:    Time to wait for unresponsive hosts, in seconds
  bidi_workaround:   Work around buggy terminals without bidirectional text
                     support, using fridibi
  debug_printtraffic:Print out sent and received HTTP traffic
  default_search:    Prepend this string if an input url is not valid.
                     'auto' for elaborate guessing
  encoding:          Use this encoding instead of the system-specified.
  extract_flat:      Whether to resolve and process url_results further
                     * False:     Always process. Default for API
                     * True:      Never process
                     * 'in_playlist': Do not process inside playlist/multi_video
                     * 'discard': Always process, but don't return the result
                                  from inside playlist/multi_video
                     * 'discard_in_playlist': Same as "discard", but only for
                                  playlists (not multi_video). Default for CLI
  wait_for_video:    If given, wait for scheduled streams to become available.
                     The value should be a tuple containing the range
                     (min_secs, max_secs) to wait between retries
  postprocessors:    A list of dictionaries, each with an entry
                     * key:  The name of the postprocessor. See
                             yt_dlp/postprocessor/__init__.py for a list.
                     * when: When to run the postprocessor. Allowed values are
                             the entries of utils.POSTPROCESS_WHEN
                             Assumed to be 'post_process' if not given
  progress_hooks:    A list of functions that get called on download
                     progress, with a dictionary with the entries
                     * status: One of "downloading", "error", or "finished".
                               Check this first and ignore unknown values.
                     * info_dict: The extracted info_dict

                     If status is one of "downloading", or "finished", the
                     following properties may also be present:
                     * filename: The final filename (always present)
                     * tmpfilename: The filename we're currently writing to
                     * downloaded_bytes: Bytes on disk
                     * total_bytes: Size of the whole file, None if unknown
                     * total_bytes_estimate: Guess of the eventual file size,
                                             None if unavailable.
                     * elapsed: The number of seconds since download started.
                     * eta: The estimated time in seconds, None if unknown
                     * speed: The download speed in bytes/second, None if
                              unknown
                     * fragment_index: The counter of the currently
                                       downloaded video fragment.
                     * fragment_count: The number of fragments (= individual
                                       files that will be merged)

                     Progress hooks are guaranteed to be called at least once
                     (with status "finished") if the download is successful.
  postprocessor_hooks:  A list of functions that get called on postprocessing
                     progress, with a dictionary with the entries
                     * status: One of "started", "processing", or "finished".
                               Check this first and ignore unknown values.
                     * postprocessor: Name of the postprocessor
                     * info_dict: The extracted info_dict

                     Progress hooks are guaranteed to be called at least twice
                     (with status "started" and "finished") if the processing is successful.
  merge_output_format: "/" separated list of extensions to use when merging formats.
  final_ext:         Expected final extension; used to detect when the file was
                     already downloaded and converted
  fixup:             Automatically correct known faults of the file.
                     One of:
                     - "never": do nothing
                     - "warn": only emit a warning
                     - "detect_or_warn": check whether we can do anything
                                         about it, warn otherwise (default)
  source_address:    Client-side IP address to bind to.
  sleep_interval_requests: Number of seconds to sleep between requests
                     during extraction
  sleep_interval:    Number of seconds to sleep before each download when
                     used alone or a lower bound of a range for randomized
                     sleep before each download (minimum possible number
                     of seconds to sleep) when used along with
                     max_sleep_interval.
  max_sleep_interval:Upper bound of a range for randomized sleep before each
                     download (maximum possible number of seconds to sleep).
                     Must only be used along with sleep_interval.
                     Actual sleep time will be a random float from range
                     [sleep_interval; max_sleep_interval].
  sleep_interval_subtitles: Number of seconds to sleep before each subtitle download
  listformats:       Print an overview of available video formats and exit.
  list_thumbnails:   Print a table of all thumbnails and exit.
  match_filter:      A function that gets called for every video with the signature
                     (info_dict, *, incomplete: bool) -> Optional[str]
                     For backward compatibility with youtube-dl, the signature
                     (info_dict) -> Optional[str] is also allowed.
                     - If it returns a message, the video is ignored.
                     - If it returns None, the video is downloaded.
                     - If it returns utils.NO_DEFAULT, the user is interactively
                       asked whether to download the video.
                     - Raise utils.DownloadCancelled(msg) to abort remaining
                       downloads when a video is rejected.
                     match_filter_func in utils/_utils.py is one example for this.
  color:             A Dictionary with output stream names as keys
                     and their respective color policy as values.
                     Can also just be a single color policy,
                     in which case it applies to all outputs.
                     Valid stream names are 'stdout' and 'stderr'.
                     Valid color policies are one of 'always', 'auto', 'no_color' or 'never'.
  geo_bypass:        Bypass geographic restriction via faking X-Forwarded-For
                     HTTP header
  geo_bypass_country:
                     Two-letter ISO 3166-2 country code that will be used for
                     explicit geographic restriction bypassing via faking
                     X-Forwarded-For HTTP header
  geo_bypass_ip_block:
                     IP range in CIDR notation that will be used similarly to
                     geo_bypass_country
  external_downloader: A dictionary of protocol keys and the executable of the
                     external downloader to use for it. The allowed protocols
                     are default|http|ftp|m3u8|dash|rtsp|rtmp|mms.
                     Set the value to 'native' to use the native downloader
  compat_opts:       Compatibility options. See "Differences in default behavior".
                     The following options do not work when used through the API:
                     filename, abort-on-error, multistreams, no-live-chat, format-sort
                     no-clean-infojson, no-playlist-metafiles, no-keep-subs, no-attach-info-json.
                     Refer __init__.py for their implementation
  progress_template: Dictionary of templates for progress outputs.
                     Allowed keys are 'download', 'postprocess',
                     'download-title' (console title) and 'postprocess-title'.
                     The template is mapped on a dictionary with keys 'progress' and 'info'
  retry_sleep_functions: Dictionary of functions that takes the number of attempts
                     as argument and returns the time to sleep in seconds.
                     Allowed keys are 'http', 'fragment', 'file_access'
  download_ranges:   A callback function that gets called for every video with
                     the signature (info_dict, ydl) -> Iterable[Section].
                     Only the returned sections will be downloaded.
                     Each Section is a dict with the following keys:
                     * start_time: Start time of the section in seconds
                     * end_time: End time of the section in seconds
                     * title: Section title (Optional)
                     * index: Section number (Optional)
  force_keyframes_at_cuts: Re-encode the video when downloading ranges to get precise cuts
  noprogress:        Do not print the progress bar
  live_from_start:   Whether to download livestreams videos from the start

  The following parameters are not used by YoutubeDL itself, they are used by
  the downloader (see yt_dlp/downloader/common.py):
  nopart, updatetime, buffersize, ratelimit, throttledratelimit, min_filesize,
  max_filesize, test, noresizebuffer, retries, file_access_retries, fragment_retries,
  continuedl, xattr_set_filesize, hls_use_mpegts, http_chunk_size,
  external_downloader_args, concurrent_fragment_downloads.

  The following options are used by the post processors:
  ffmpeg_location:   Location of the ffmpeg/avconv binary; either the path
                     to the binary or its containing directory.
  postprocessor_args: A dictionary of postprocessor/executable keys (in lower case)
                     and a list of additional command-line arguments for the
                     postprocessor/executable. The dict can also have "PP+EXE" keys
                     which are used when the given exe is used by the given PP.
                     Use 'default' as the name for arguments to passed to all PP
                     For compatibility with youtube-dl, a single list of args
                     can also be used

  The following options are used by the extractors:
  extractor_retries: Number of times to retry for known errors (default: 3)
  dynamic_mpd:       Whether to process dynamic DASH manifests (default: True)
  hls_split_discontinuity: Split HLS playlists to different formats at
                     discontinuities such as ad breaks (default: False)
  extractor_args:    A dictionary of arguments to be passed to the extractors.
                     See "EXTRACTOR ARGUMENTS" for details.
                     E.g. {'youtube': {'skip': ['dash', 'hls']}}
  mark_watched:      Mark videos watched (even with --simulate). Only for YouTube

  The following options are deprecated and may be removed in the future:

  break_on_reject:   Stop the download process when encountering a video that
                     has been filtered out.
                     - `raise DownloadCancelled(msg)` in match_filter instead
  force_generic_extractor: Force downloader to use the generic extractor
                     - Use allowed_extractors = ['generic', 'default']
  playliststart:     - Use playlist_items
                     Playlist item to start at.
  playlistend:       - Use playlist_items
                     Playlist item to end at.
  playlistreverse:   - Use playlist_items
                     Download playlist items in reverse order.
  forceurl:          - Use forceprint
                     Force printing final URL.
  forcetitle:        - Use forceprint
                     Force printing title.
  forceid:           - Use forceprint
                     Force printing ID.
  forcethumbnail:    - Use forceprint
                     Force printing thumbnail URL.
  forcedescription:  - Use forceprint
                     Force printing description.
  forcefilename:     - Use forceprint
                     Force printing final filename.
  forceduration:     - Use forceprint
                     Force printing duration.
  allsubtitles:      - Use subtitleslangs = ['all']
                     Downloads all the subtitles of the video
                     (requires writesubtitles or writeautomaticsub)
  include_ads:       - Doesn't work
                     Download ads as well
  call_home:         - Not implemented
                     Boolean, true iff we are allowed to contact the
                     yt-dlp servers for debugging.
  post_hooks:        - Register a custom postprocessor
                     A list of functions that get called as the final step
                     for each video file, after all postprocessors have been
                     called. The filename will be passed as the only argument.
  hls_prefer_native: - Use external_downloader = {'m3u8': 'native'} or {'m3u8': 'ffmpeg'}.
                     Use the native HLS downloader instead of ffmpeg/avconv
                     if True, otherwise use ffmpeg/avconv if False, otherwise
                     use downloader suggested by extractor if None.
  prefer_ffmpeg:     - avconv support is deprecated
                     If False, use avconv instead of ffmpeg if both are available,
                     otherwise prefer ffmpeg.
  youtube_include_dash_manifest: - Use extractor_args
                     If True (default), DASH manifests and related
                     data will be downloaded and processed by extractor.
                     You can reduce network I/O by disabling it if you don't
                     care about DASH. (only for youtube)
  youtube_include_hls_manifest: - Use extractor_args
                     If True (default), HLS manifests and related
                     data will be downloaded and processed by extractor.
                     You can reduce network I/O by disabling it if you don't
                     care about HLS. (only for youtube)
  no_color:          Same as `color='no_color'`
  no_overwrites:     Same as `overwrites=False`

参考

https://github.com/yt-dlp/yt-dlp/blob/master/yt_dlp/YoutubeDL.py

Discussion