youtube-dlの開発が止まっておりfork版のyt-dlpに移る事にした。yt-dlpはyoutube-dlのforkであるyoutube-dlcのそのまたforkになる。オリジナルであるyoutube-dlのオプション解説はyoutube-dl オプション一覧及びそのメモ。
OPTIONS
- -h, --help
- ヘルプを表示する。
- --version
- プログラムのVerを表示する。
- -U, --update
- プログラムのupdateを実行する。
- -i, --ignore-errors
- ダウンロードエラーを無視する。プレイリストごとダウンロードするような時に使う。エラーで失敗してもダウンロードは成功したとみなされる。
- --no-abort-on-error (default)
--abort-on-error - ダウンロードエラー発生時に処理を中止するかどうか。--ignore-errorsは成功したとみなすが--no-abort-on-errorはスキップするだけ。--abort-on-errorのエイリアスとして--no-ignore-errors。
- --dump-user-agent
- userAgentを表示する。
- --list-extractors
- extractor一覧を表示する。
- --extractor-descriptions
- extractor一覧を説明付きで表示する。が、説明なしの物が殆ど。
- --force-generic-extractor
- 汎用extractorでのダウンロードを強制する。
- --default-search PREFIX
- URLでない値をURLとして与えられた場合の処理方法。"auto"を指定したらyoutube-dlが適当に推測して処理しようとするが大抵巧くいかない。"error"を指定したらただエラーを返すだけ。"fixup_error"を指定したらURLとして与えられた引数を修正しようとするが巧くいかなかったらやっぱりエラーを返す。"gvsearch2:"を指定したらGoogleVideoでの検索結果から2つの動画をダウンロードする。1つでいいなら"gvsearch1:"となる。つまり数字部分がダウンロード数となる。
- --ignore-config, --no-config
- --config-locationで指定された設定ファイル以外を無視する。設定ファイル内で指定された場合はそれ以上の設定ファイルのロードを無視する。
- --config-location PATH
- 設定ファイルもしくはフォルダPATHを指定する。
- --flat-playlist
--no-flat-playlist - プレイリスト展開をするかどうか。
- --mark-watched
--no-mark-watched (default) - youtubeのみ。要するに再生履歴に残すか残さないかの事。当然ユーザ名パスワードを一緒に指定しないと意味ない。
- --no-color
- 出力にカラーコードを生成しない。
- --compat-options OPTS
- yt-dlpでの各オプションのデフォルト動作の違いを元に戻す。
Network Options
Geo Restriction
- --geo-verification-proxy URL
- --proxyと違うのはサイトへのアクセス時のみの適用で動画のダウンロード時は未適用と言う点。ChinaのProxyは回線が不安定な物が多いのでそういうときはこれを使う。
- --geo-bypass
--no-geo-bypass - X-Forwarded-Forヘッダ偽装による地域制限回避をするかしないか。
- --geo-bypass-country CODE
- ISO 3166-2で規定されたコードを指定して地域制限を回避する。
- --geo-bypass-ip-block IP_BLOCK
- CIDR表記で指定されたIPレンジを地域制限を回避する。
Video Selection
- --playlist-start NUMBER
--playlist-end NUMBER - 例えば2を指定するとプレイリスト内の2番目の動画から処理を開始もしくは処理を終える。
- --playlist-items ITEM_SPEC
- --playlist-items 1-3,7,10-13のように処理するプレイリスト内の番号を指定する。
- --match-title REGEX 非推奨
--reject-title REGEX 非推奨 - 正規表現にマッチした物をダウンロードするかもしくは除外してダウンロードする。
- --max-downloads NUMBER
- 最大ダウンロード数を指定する。
- --min-filesize SIZE
--max-filesize SIZE - 最大最小ファイルサイズをそれぞれ指定する。
- --date DATE
- 動画のアップロード日時を指定する。YYYYMMDD形式または
(now|today)[+-][0-9](day|week|month|year)(s)?
のようなフォーマットを指定する。 - --datebefore DATE
--dateafter DATE - 指定した日時より以前もしくは以後の物をそれぞれ処理する。フォーマットは--dateと同様。
- --min-views COUNT 非推奨
--max-views COUNT 非推奨 - 最大最小視聴回数をそれぞれ指定する。
- --match-filter FILTER
--no-match-filter (default) - ダウンロードする動画をフィルタするかどうか。単純にfield名を指定すればそのfieldが存在するかどうか。!fieldとすれば反転。「~=」を使用してpython互換の正規表現を使用する事も出来る。
!is_live & like_count>?100 & description~="(?i)\bcats \& dogs\b"
はis_live が存在しないつまり生放送ではない、like_countが100以上、descriptionが「\bcats & dogs\b」と一致する動画がヒットする。 - --no-playlist
--yes-playlist - プレイリストを無視するかどうかのフラグ。
- --age-limit YEARS
- 年齢制限の事。
- --download-archive FILE
--no-download-archive (default) - ダウンロードした動画のIDを自動で記録するかどうか。そして記録された動画は次回実行時にダウンロードをスキップする。
- --break-on-existing
--break-on-reject - ほぼ同じ機能だがexistingはarchiveにヒットしたらrejectはfilterにヒットしなかったらダウンロードを停止する。
- --skip-playlist-after-errors N
- 指定されたエラー数を超えるとプレイリスト自体がスキップされる。
- --include-ads 非サポート
- 広告もダウンロードする。
Download Options
- -N, --concurrent-fragments N
- fragmentの同時ダウンロード数。デフォルトは1。
- -r, --limit-rate RATE
- 最大ダウンロード速度を指定する(例 50K, 4.2M)。
- --throttled-rate RATE
- 最低ダウンロード速度を指定しこれを下回ると再ダウンロードする。
- -R, --retries RETRIES
- リトライ数を指定する。infiniteという値も一応用意されているがこんな値使うな。
- --fragment-retries RETRIES
- fragmentのリトライ数。
- --skip-unavailable-fragments (default)
- 有効でないfragmentをskipする。エイリアスとして--no-abort-on-unavailable-fragment。
- --abort-on-unavailable-fragment
- 有効でないfragmentがあるときダウンロード処理を中断する。エイリアスとして--no-skip-unavailable-fragments。
- --keep-fragments
--no-keep-fragments (default) - ダウンロード後fragmentを残すかどうか。
- --buffer-size SIZE
- ダウンロードバッファを指定する。
- --resize-buffer (default)
--no-resize-buffer - ダウンロードバッファを自動調整するかどうか。
- --http-chunk-size SIZE 実験的
- チャンクサイズを指定する。サーバー側で指定されている帯域制限回避に役立つかもしれない。
- --playlist-reverse
--no-playlist-reverse (default) - プレイリスト上の動画のダウンロード順を逆からにするかどうか。
- --playlist-random
- プレイリスト上の動画をランダムにダウンロードする。
- --xattr-set-filesize
- 拡張ファイル属性に予想されるファイルサイズを書き込む。
- --hls-prefer-native 非推奨
--hls-prefer-ffmpeg 非推奨 - HLSの処理方法のオプション。nativeは自前で処理する。HLSというのはHttp Live Streamingの事でストリーミング配信用のプロトコル。
- --hls-use-mpegts
--no-hls-use-mpegts - HLSでMPEG TSを使うかどうか。
- --downloader [PROTO:]NAME
- PROTOはプロトコル。要はプロトコルごとに使用する外部ダウンローダーを指定することが出来る。PROTOで使用出来るのはhttp、 ftp、m3u8、dash、rstp、rtmp、mms。NAMEで使用できるのはnative、aria2c、avconv、axel、curl、ffmpeg、httpie、wget。例えば
--downloader aria2c --downloader "dash,m3u8:native"
のようにプロトコルごとに複数指定してもよい。エイリアスとして--external-downloader。 - --downloader-args NAME:ARGS
- 外部ダウンローダーに引数を渡す。エイリアスとして --external-downloader-args。
Filesystem Options
- -a, --batch-file FILE
- 動画URLを記述したファイルを指定してまとめてダウンロードする。
- --id 削除
- ファイル名を動画IDのみとする。後述の-oと併用するとconflictで停止する。
- -P, --paths [TYPES:]PATH
- ファイルのダウンロード先を指定する。--outputで絶対パスが指定された時は無効となる。TYPESでファイルタイプを指定する事も出来るので-Pオプションを複数指定してタイプごとに振り分ける事も可能。サポートされているタイプはsubtitle、thumbnail、description、infojson、pl_thumbnail、pl_description、pl_infojson、chapter。homeとtempを指定する事も出来る。「temp:PATH」で指定したフォルダに一時ファイルを展開し「home:PATH」に最終ファイルを格納する。
- -o, --output [TYPES:]TEMPLATE
- ファイル名を指定する。TYPESの使い方は--pathsと一緒。使用できる変数は後述のOUTPUT TEMPLATEを参照。
- --output-na-placeholder TEXT
- OUTPUT TEMPLATEの各変数はサイトによっては当然存在しない物も多い。その時は「NA」が出力されるがこのオプションでそれを書き換えることが出来る。
- --autonumber-start NUMBER 非推奨
- %(autonumber)sの初期値を指定する。
- --restrict-filenames
--no-restrict-filenames (default) - ファイル名をASCIIコードに制限するかどうか。
- --windows-filenames
--no-windows-filenames (default) - Windows互換のファイル名に置き換える。要は駄目文字対策。--windows-filenamesは使ってるOSに関係なく実行されるが--no-windows-filenamesはWindowsの場合のみでこれがデフォルト。Windowsユーザーには関係ないオプション。
- --trim-filenames LENGTH
- 拡張子を除いたファイル名の文字数を指定値に制限する。
- -w, --no-overwrites
- どんなファイルも上書きしないというオプション。
- --force-overwrites
--no-force-overwrites (default) - --force-overwritesは動画とメタデータファイルを上書きし、それに対して--no-force-overwritesは動画は上書きしないがメタデータファイルは上書きする。
- -c, --continue (default)
--no-continue - ダウンロードのリジュームをするかどうか。
- --part (default)
--no-part - .partファイルを使わないというからメモリ上に読み込むとかそんな事かと思ったら単にpart拡張子の話。
- --mtime (default)
--no-mtime - HTTPのLast-Modifiedヘッダをファイルの更新日時に使うかどうか。
- --write-description
--no-write-description (default) - descriptionファイルを別途作成するかどうか。
- --write-info-json
--no-write-info-json (default) - メタデータを記述したJSONファイルを別途作成するかどうか。
- --write-playlist-metafiles (default)
--no-write-playlist-metafiles - --write-info-jsonや--write-descriptionを指定する場合、プレイリストのメタデータを追記するかどうか。
- --clean-infojson (default)
--no-clean-infojson - JSONファイルからファイル名のようなプライベートな項目を削除する。このオプションを使ったからと言ってプライベートな項目を全て削除したとは限らない事に注意する事。
- --write-comments
--no-write-comments - 動画コメントを取得しJSONファイルに書き込む。エイリアスとして--get-commentsまたは--no-get-comments。
- --write-annotations 非サポート
- アノテーションをxmlで作成する。
- --load-info-json FILE
- JSONファイルから動画情報をロードする。書き込みは--write-info-jsonで行う。
- --cookies FILE
--no-cookies (default) - ファイルからcookieをロードするかどうか。
- --cookies-from-browser BROWSER[:PROFILE]
--no-cookies-from-browser (default) - ブラウザのプロファイルからcookieを取得するかどうか。サポートしているブラウザはbrave、chrome、chromium、edge、firefox、opera、safari、vivaldi。PROFILEにはPROFILE名またはPROFILEのPathを指定する。指定されてない場合は最後に使用されたPROFILEを使う。
- --cache-dir DIR
- キャッシュディレクトリを変更する。
- --no-cache-dir
- キャッシュファイルを作成しない。
- --rm-cache-dir
- youtube-dlの作成したキャッシュファイルを全て消す。
Thumbnail images
- --write-thumbnail
--no-write-thumbnail (default) - サムネイルを作成するかどうか。
- --write-all-thumbnails
- サムネイルを全てのフォーマットで作成する。
- --list-thumbnails
- 利用可能なサムネイルを表示する。
Internet Shortcut Options
Verbosity / Simulation Options
- -q, --quiet
- コマンドプロンプトにおける表示を最小限にする。別にコマンドプロンプトの起動自体を抑制する訳ではない。
- --no-warnings
- 警告を無視する。
- -s, --simulate
--no-simulate - 実行のシミュレートのみにするかどうか。
- --ignore-no-formats-error 実験的
--no-ignore-no-formats-error (default) - 「No video formats」エラーを無視するかどうか。メタデータ取得に役立つ。
- --skip-download
- 動画のダウンロードを行わないが関連ファイルの書き込みは行う。エイリアスは--no-download。
- -g, --get-url 非推奨
-e, --get-title 非推奨
--get-id 非推奨
--get-thumbnail 非推奨
--get-description 非推奨
--get-duration 非推奨
--get-filename 非推奨
--get-format 非推奨 - 指定の物を表示するだけで実行はしない。
- -O, --print TEMPLATE
- --quietで実行かつシミュレートするだけだがTEMPLATEで指定された動画ごとの諸情報を表示する。
- -j, --dump-json 非推奨
- --quietで実行かつシミュレートするだけだが動画ごとの諸情報をJSON形式で表示する。しかしせめて整形ぐらいしてから表示してほしい。
- -J, --dump-single-json
- --quietで実行かつシミュレートするだけだがURLごとの諸情報をJSON形式で表示する。でも表示される情報は--dump-jsonと別に変らない。
- --print-json 非推奨
- --quietで実行かつ動画情報をJSONで表示。
- --force-write-archive
- シミュレート実行の場合でもエラーが起きない限りarchiveに追記する。エイリアスは--force-download-archive。
- --newline
- ダウンロードの進行状況を逐次表示。やってみれば分かる。
- --no-progress
- ダウンロードの進行状況を表示しない。
- --console-title
- コンソールのタイトルバーに現在の処理内容を表示する。
- -v, --verbose
- デバッグ用の諸情報を表示する。
- --dump-pages
- デバッグ用にリクエスト結果をbase64でエンコードして表示する。でも長過ぎてデバッグにならない。
- --write-pages
- デバッグ用の中間処理をカレントディレクトリ内に書き込む。公式にもカレントディレクトリと単純に書かれているが動画のダウンロードPathの事ではなく文字通りの意味でyt-dlpをscriptから呼び出しているとそのscriptのディレクトリにあったりする。
- --print-traffic
- HTTPトラフィックを表示する。
- -C, --call-home 非サポート
--no-call-home 非サポート - デバッグ時にyoutube-dlサーバーにアクセスするかどうか。
Workarounds
- --encoding ENCODING 実験的
- 使用する文字コードを指定する。
- --no-check-certificate
- 暗号化通信のデジタル証明書をチェックしない。
- --prefer-insecure
- 動画情報の取得に非暗号化通信を使用する。現在サポートしてるのはyoutubeのみ。
- --user-agent UA
- userAgentを指定する。
- --referer URL
- refererを指定する。
- --add-header FIELD:VALUE
- カスタムHTTPヘッダを指定する。このオプションは複数回指定できる。
- --bidi-workaround
- 双方向性テキスト。つまりアラビア語などは文章を右から左へと書くが数字は左から右へと書かねばならない。このような言語を扱うときに指定する。
- --sleep-requests SECONDS
- データリクエスト間のインターバルを秒で指定する。
- --sleep-interval SECONDS
- 単独で使用された時はそれぞれのダウンロード前に指定された秒数のインターバルを入れる。--max-sleep-intervalとセットで使われた時は--min-sleep-intervalとして機能する。互換性を考えたんだろうけどなにこの変な実装。エイリアスは--min-sleep-interval。
- --max-sleep-interval SECONDS
- それぞれのダウンロード前に指定された秒数を上限としたランダムな秒数のインターバルを入れる。ただし必ず--sleep-intervalとセットで使う事。
- --sleep-subtitles SECONDS
- 字幕のダウンロード前のインターバルを秒で指定する。
Video Format Options
- -f, --format FORMAT
- Video format codeを指定する。詳細はFORMAT SELECTIONを参照。
- --all-formats 非推奨
- 利用可能な全てのフォーマットをダウンロードする。
- -S, --format-sort SORTORDER
- bestとみなされるformatの判定基準を指定する。詳細はSorting Formatsを参照。
- --S-force, --format-sort-force
--no-format-sort-force (default) - bestとみなされるformatの判定基準を強制するかどうか。詳細はSorting Formatsを参照。
- --video-multistreams
--no-video-multistreams (default) - 複数の映像ストリームを追加するかどうか。
- --audio-multistreams
--no-audio-multistreams (default) - 複数の音声ストリームを追加するかどうか。
- --prefer-free-formats
--no-prefer-free-formats (default) - 同じ品質のフリーのフォーマットを優先するかどうか。品質に関わりなく優先する場合は「--format-sort ext」を指定する。
- --check-formats
--no-check-formats - 選択されたフォーマットが実際にダウンロード可能かどうかのチェックをするかどうか。
- -F, --list-formats
- 利用可能な全てのフォーマットを表示する。
- --youtube-skip-dash-manifest 非推奨
- youtubeにおいてDASH manifestsを無視する。
- --merge-output-format FORMAT
- 結合が必要な場合にコンテナフォーマットを指定する。使用可能なのはmkv、mp4、ogg、webm、flv。
Subtitle Options
- --write-sub
--no-write-subs (default) - 字幕ファイルを生成するかどうか。
- --write-auto-sub
--no-write-auto-subs (default) - youtubeで字幕ファイルを自動で生成するかどうか。
- --all-subs 非推奨
- 使用可能な全ての字幕をダウンロードする。
- --list-subs
- 使用可能な全ての字幕を表示する。
- --sub-format FORMAT
- 字幕のフォーマットを指定する。
- --sub-lang LANGS
- 字幕の言語を指定する。
Authentication Options
- -u, --username USERNAME
- ログイン時のユーザー名を指定する。
- -p, --password PASSWORD
- ログイン時のパスワードを指定する。
- -2, --twofactor TWOFACTOR
- auth codeを指定する。
- -n, --netrc
- netrcファイルを使う。
- --netrc-location PATH
- netrcファイルのPathまたはフォルダを指定する。
- --video-password PASSWORD
- そのまんま動画のパスワード。どうも必要なサイトが複数あるらしい。
- --ap-mso MSO
- Adobe Pass(今はAdobe Primetimeという名称になっている)という配信プラットフォームの話でこのOptionはTV providerのidを指定する。有効なidは--ap-list-msoを見る事。
- --ap-username USERNAME
- Adobe Passのユーザー名を指定する。
- --ap-password PASSWORD
- Adobe Passのパスワードを指定する。
- --ap-list-mso
- Adobe PassのTV providerのid一覧を表示する。
Post-processing Options
- -x, --extract-audio
- 動画を音声のみに変換する。
- --audio-format FORMAT
- --extract-audioが指定された時の音声フォーマットを指定する。指定できるのはbest, aac, vorbis, mp3, m4a, opus, wavのいずれか。
- --audio-quality QUALITY
- 音声変換時のクオリティを指定。VBRなら0-9、CBRなら128Kなど
- --remux-video FORMAT
- コンテナをmuxし直す。ルールは複数設定でき
aac>m4a/mov>mp4/mkv
だとaacならm4aにmovならmp4にその他はmkvとなる。 - --recode-video FORMAT
- 映像フォーマットを指定のフォーマットに変換する。構文は--remux-videoと同様。
- --postprocessor-args NAME:ARGS
- 実行するポストプロセッサを指定する。有効なポストプロセッサは
Merger, ModifyChapters, SplitChapters, ExtractAudio, VideoRemuxer, VideoConvertor, Metadata, EmbedSubtitle, EmbedThumbnail, SubtitlesConvertor, ThumbnailsConvertor, FixupStretched, FixupM4a, FixupM3u8, FixupTimestamp and FixupDuration
有効なexeはAtomicParsley, FFmpeg and FFprobe
さらにffmpegまたはffprobeの場合プレフィックスに「_i」または「_o」を番号付きで追加して入出力ファイルの前に引数を渡すことが出来る。--ppa "Merger+ffmpeg_i1:-v quiet"
エイリアスは--ppa。 - -k, --keep-video
--no-keep-video (default) - ダウンロードした変換前のファイルを残すかどうか。
- --post-overwrites (default)
--no-post-overwrites - ダウンロード後処理された後のファイルを上書きするかどうか。
- --embed-subs
--no-embed-subs (default) - ファイルに字幕を埋め込むかどうか。
- --embed-thumbnail
--no-embed-thumbnail (default) - ファイルにサムネイルを埋め込むかどうか。
- --embed-metadata
--no-embed-metadata (default) - ファイルにメタデータを埋め込むかどうか。エイリアスは--add-metadata及び--no-add-metadata。
- --embed-chapters
--no-embed-chapters (default) - ファイルにchapterを埋め込むかどうか。エイリアスは --add-chapters及び--no-add-chapters。
- --metadata-from-title FORMAT 非推奨
- 動画タイトルからtitle, artistのようなメタデータを取得する。使用できる変数は--output同様にOUTPUT TEMPLATEを参照。
- --parse-metadata FROM:TO
- FROMで指定されたfieldをparseしてTO で指定されたfieldに書き込む。
--parse-metadata "title:%(artist)s - %(title)s"
- --replace-in-metadata FIELDS REGEX REPLACE
- 正規表現でメタデータを書き換える。このオプションは複数回設定可能。
- --xattrs
- 拡張ファイル属性にメタデータを書き込む。
- --fixup POLICY
- 既知のエラーを自動で修正する。
- --prefer-avconv 非推奨
--prefer-ffmpeg 非推奨 - avconvとffmpegの指定された方を優先して使用する。
- --ffmpeg-location PATH
- ffmpeg/avconvのPATHを指定する。
- --exec CMD
--no-exec - ダウンロード後にコマンドを実行するかどうか。ダウンロードファイルのPathを「filepath」fieldで取得する事も出来る。このオプションは複数回設定可能。
- --exec-before-download CMD
--no-exec-before-download - ダウンロード前にコマンドを実行するかどうか。
- --convert-subs FORMAT
- 字幕フォーマットを変換する。サポートしてるのはsrt、ass、vtt、lrc。エイリアスは --convert-subtitles。
- --convert-thumbnails FORMAT
- サムネイルの形式を変換するのだがサポートされているのは現在jpg及びpngのみ。
- --split-chapters
--no-split-chapters (default) - chapterを使用してファイルを分割するかどうか。
- --remove-chapters REGEX
--no-remove-chapters (default) - 指定された正規表現にタイトルが一致したchapterを削除するかどうか。
- --force-keyframes-at-cuts
--no-force-keyframes-at-cuts (default) - chapterを追加または削除する際chapter周りにkeyframeを設定し直すかどうか。当然再エンコになる。
SponsorBlock Options
そもそもこれは何をする物なのだということだがその辺りはAbout - SponsorBlockに書かれている。元々はyoutubeの広告等のパートをスキップしようというAPIらしい。
- --sponsorblock-mark CATS
- SponsorBlock APIを利用してchapterを書き込む。指定できるcategoryはall、sponsor、intro、outro、selfpromo、interaction、preview、music_offtopic。頭に-を付けて除外する事も出来る。categoryの説明はSegment Categoriesを参照。
- --sponsorblock-remove CATS
- 指定したcategoryを削除するとサラッと書かれているが当然再エンコになるんだが具体的にどうするんだろうか。それともchapterの事なんだろうか。しかしそれは--sponsorblock-markで除外指定できるし。
- --sponsorblock-chapter-title TEMPLATE
- --sponsorblock-markで設定されたchapterのタイトルテンプレート。使用可能なfieldはstart_time、end_time、category、categories、name、category_names。
- --no-sponsorblock
- --sponsorblock-markと--sponsorblock-removeを無効化する。
- --sponsorblock-api URL
- SponsorBlock APIのURLを指定する。
Extractor Options
- --extractor-retries RETRIES
- extractorごとのリトライ数を指定する。infiniteも一応ある。ただし既知のextractorのみ。--retriesは全体のリトライ数なのでたぶんこちらが優先されるんだろう。
- --allow-dynamic-mpd (default)
--ignore-dynamic-mpd - dynamic mpdを許可するかどうか。dynamicって何のこっちゃと思ったらどうもライブストリーミングの話らしい。エイリアスは--no-ignore-dynamic-mpd及び--no-allow-dynamic-mpd。
- --hls-split-discontinuity
--no-hls-split-discontinuity (default) - 直訳すると「HLS形式の動画を広告などの不連続部分で異なるフォーマットに分割する」になるんだがそんな事にはならない。どこのサイトの話なんだろうか。
- --extractor-args KEY:ARGS
- extractorごとに予め設定されている引数を指定する。
CONFIGURATION
oオプション等のいつも使うオプションを設定ファイルとしてまとめておく事が出来る。便利っちゃ便利だがサイト毎に設定を振り分ける事が出来る訳でもなくscriptから実行させていると無用の長物ではある。認識する場所にはいくつかある
- Main Configuration
- --config-locationで指定された物。
- Portable Configuration
- バイナリと同フォルダに置かれたyt-dlp.conf。pythonで実行してる場合は「root /yt_dlp/__main__.py」のroot。
- Home Configuration
- --paths "home:path"で指定されたフォルダまたはカレントフォルダに置かれたyt-dlp.conf。
- User Configuration
- ユーザー領域に置かれた物。LinuxおよびmacOSなら「%XDG_CONFIG_HOME%/yt-dlp/config」、Windowsなら「%APPDATA%/yt-dlp/config」。
- System Configuration
- 「/etc/yt-dlp.conf」
-x --no-mtime --proxy 127.0.0.1:3128 -o ~/Movies/%(title)s.%(ext)s # Lines starting with # are comments
#から始まる行はコメントとして扱われる。ところでCONFIGURATIONの項目には
You can use --ignore-config if you want to disable all configuration files for a particular yt-dlp run.
と書いてあるが--ignore-configオプションの説明の方が正しい。このオプションを設定しようとも--config-locationは有効となる。
.netrcにもちょっとだけ触れておこう。これはログインのユーザー名とパスワードをまとめておく物。中の書式は
machine <extractor> login <login> password <password>
となるので
machine youtube login myaccount@gmail.com password my_youtube_password machine twitch login my_twitch_account_name password my_twitch_password
みたいに書けば良い。そもそもなんでこんな機能があるかと言うとコマンドラインの履歴にplane textでログイン情報を残すのが嫌という事らしい。
OUTPUT TEMPLATE
- field名の書式設定が出来る。詳しくは「python 文字列 format」辺りで検索する事。
%(NAME)05d
- サイトから得られるメタデータ内のList及びDictionaryを「.」で展開出来る。「:」でsliceも出来る。
%(tags.0)s
%(subtitles.en.-1.ext)s
%(id.3:7:-1)s
%(formats.:.format_id)s - 数値fieldの加算減算が出来る。
%(playlist_index+10)03d
%(n_entries+1-playlist_index)d - 日時時刻の書式設定も出来る。
%(duration>%H-%M-%S)s
%(upload_date>%Y-%m-%d)s
%(epoch-3600>%H-%M-%S)s - fieldが空の場合のDefault値を設定出来る。--output-na-templateと同じ事ではあるがあちらは全fieldに効いてくる。
%(uploader|Unknown)s
- 代替fieldを設定することが出来る。
%(release_date>%Y,upload_date>%Y|Unknown)s
これの意味は「release_date>%Y」がなければ「upload_date>%Y」を使いそれもなければ仕方ないから「Unknown」を表示という事。 - 追加で「B, j, l, q」という書式が使える。これはBytes、json、list、quotedの意味。Bytesとjsonはいいだろう。listはいわゆる配列で「,」区切りで展開される。ただし「#」flagがある場合は改行で展開する。quotedは単に文字列をクオートで囲むだけの話。
- NFCユニコードが扱える。ただし「#」flagがある場合はNFDとなる。
%(title)+.100U
断っておくが以下の物が全て使える訳ではない。特定のサイトに特化したような物も多い。
- id
- 動画ID
- title
- 動画タイトル
- url
- 動画URL
- ext
- 拡張子
- alt_title
- secondary titleってサブタイトルでいいんだろうか
- description
- 動画概要
- display_id
- 動画IDと何が違うのか不明
- uploader
- 動画upload者のフルネーム
- license
- 動画のライセンス
- creator
- 動画の制作者
- upload_date
- YYYYMMDDで表される動画のupload日時
- release_date
- YYYYMMDDで表される動画のrelease日時
- timestamp
- 動画が利用可能になったUNIXタイム
- release_timestamp
- 動画がリリースされたUNIXタイム
- uploader_id
- 動画upload者のIDもしくはニックネーム
- channel
- チャンネルのフルネーム
- channel_id
- チャンネルID
- location
- 動画が撮影された場所
- duration
- 動画の長さ
- duration_string
- HH:mm:ssで表される動画の長さ
- view_count
- 動画の閲覧数
- like_count
- 動画のポジティブな評価数
- dislike_count
- 動画のネガティブな評価数
- repost_count
- 動画のrepostつまり引用の数
- average_rating
- 動画の平均評価数
- comment_count
- 動画のコメント数
- age_limit
- 動画の制限年齢
- live_status
- is_live、was_live、is_upcoming、not_liveの内いずれか
- is_live
- live streamつまり生放送なのかどうか
- was_live
- live streamだったかどうか
- playable_in_embed
- 動画が他サイトへの埋め込みを許可しているかどうか
- availability
- private、premium_only、subscriber_only、needs_auth、unlisted、publicの内いずれか
- start_time
- URLで指定されている再生開始時間とあるがyoutubeでたまに見る奴の事だろうか。
- end_time
- URLで指定されている再生終了時間。
- format
- 動画フォーマット
- format_id
- 動画フォーマットコード
- format_note
- 動画フォーマットの追加情報
- width
- 動画解像度の幅
- height
- 動画解像度の高さ
- resolution
- 動画解像度
- tbr
- 音声と映像の平均bitrate
- abr
- 音声の平均bitrate
- acodec
- 音声codec
- asr
- 音声のサンプリングレート
- vbr
- 映像の平均bitrate
- fps
- 映像のFPS
- vcodec
- 映像codec
- container
- 動画のコンテナフォーマット
- filesize
- ファイルサイズ
- filesize_approx
- 概算ファイルサイズ
- protocol
- http等のプロトコル
- extractor
- 要はyoutube等のドメイン
- extractor_key
- 上記と似ているがこっちはextractorのkey名で微妙に違う
- epoch
- ファイル作成したUINX TIME
- autonumber
- ダウンロードごとに振られる連番
- n_entries
- プレイリストにおいて抽出されたアイテム数
- playlist
- プレイリスト名もしくはID
- playlist_index
- プレイリスト内動画のindex
- playlist_autonumber
- プレイリス内におけるダウンロード順の位置
- playlist_id
- プレイリストID
- playlist_title
- プレイリストタイトル
- playlist_uploader
- プレイリストupload者のフルネーム
- playlist_uploader_id
- プレイリストupload者のID
- webpage_url
- 動画ページのURL
- original_url
- 与えられたURL
チャプターもしくはセクションを持っているときに使用可能
- chapter
- チャプターのタイトル
- chapter_number
- チャプターの数
- chapter_id
- チャプターのID
シリーズもしくはエピソードを持っているときに使用可能
- series
- シリーズのタイトル
- season
- シーズンのタイトル
- season_number
- シーズンの数
- season_id
- シーズンのID
- episode
- エピソードのタイトル
- episode_number
- エピソードの数
- episode_id
- エピソードのID
音楽アルバム等で使用可能
- track
- タイトル
- track_number
- track number
- track_id
- トラックID
- artist
- Artist
- genre
- ジャンル
- album
- アルバム名
- album_type
- アルバムタイプ
- album_artist
- Album Artist
- disc_number
- Disc Number
- release_year
- YYYYで表される発売年
--split-chaptersのprefixとして使用可能
- section_title
- chapterタイトル
- section_number
- chapter番号
- section_start
- chapterの開始秒数
- section_end
- chapterの終了秒数
--printでのみ使用可能
--sponsorblock-chapter-titleでのみ使用可能
- start_time
- chapterの開始秒数
- end_time
- chapterの終了秒数
- categories
- SponsorBlockカテゴリのLIST
- category
- SponsorBlockカテゴリ
- category_names
- FriendlyなSponsorBlockカテゴリのLIST
- name
- FriendlyなSponsorBlockカテゴリ
#例えばこんな感じで使う -o "%(title)s-%(id)s.%(ext)s" #Windowsのbatch fileで使う場合は%をエスケープする -o "%%(title)s-%%(id)s.%%(ext)s" #任意の階層パスを含めることも出来る -o "%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s" #標準出力にストリーミングする -o -
FORMAT SELECTION
formatオプションで使用する。使用可能なformat codeは--list-formatsで確認できる。
format codeを指定する。
-f 22
こんな指定の仕方も出来る。使用できる値は下記。
-f best
- all
- 全てのformat。
- mergeall
- 全formatをコンテナにマージする。当然--audio-multistreamsと--video-multistreamsが必要。
- b*, best*
w*, worst* - 映像音声のどれが含まれているかは考慮しない。
- b, best
w, worst - 映像と音声両方を含む。
best*[vcodec!=none][acodec!=none]
とそれぞれ同値。
worst*[vcodec!=none][acodec!=none] - bv, bestvideo
wv, worstvideo best*[acodec=none]
とそれぞれ同値。
worst*[acodec=none]- bv*, bestvideo*
wv*, worstvideo* best*[vcodec!=none]
とそれぞれ同値。
worst*[vcodec!=none]- ba, bestaudio
wa, worstaudio best*[vcodec=none]
とそれぞれ同値。
worst*[vcodec=none]- ba*, bestaudio*
wa*, worstaudio* best*[acodec!=none]
とそれぞれ同値。
worst*[acodec!=none]
拡張子を指定する事も出来る。使用できる値は3gp、aac、flv、m4a、mp3、mp4、ogg、wav、webm。
-f webm
2番目にbestな物を指定する。
-f best.2
優先順位を指定する。22がなければ17、それもなければ18をダウンロードする。
-f 22/17/18
複数の形式をダウンロードする。この場合存在するならば22,17,18の全てをダウンロードする。
-f 22,17,18
映像と音声のformat codeを別々に指定する事も可能。指定方法はvideo format + audio format。ただしffmpegが必要。
-f bestvideo + bestaudio
Filtering Formats
細かく絞り込む事も出来る。使用できる値は下記。通常は値が不明な場合はその条件は除外されるが演算子に「?」を付けると除外されずに有効となる。つまり値が不明でもダウンロードされる。
-f "best[height = 720]" -f "[filesize > 10M]" -f "[height <=? 720][tbr>500]"
数値fieldに使う比較演算子は<、<=、>、>=、=、!=
- filesize
- ファイルサイズ
- width
- 動画幅
- height
- 動画高
- tbr
- 動画全体の平均ビットレート
- abr
- 音声の平均ビットレート
- vbr
- 映像の平均ビットレート
- asr
- 音声のサンプリングレート
- fps
- フレームレート
文字列fieldに使う比較演算子は=、^=(で始まる)、$=(で終わる)、*=(含む)
- ext
- 拡張子
- acodec
- 音声コーデック
- vcodec
- 映像コーデック
- container
- 動画コンテナ
- protocol
- 実際のダウンロードの際のプロトコル
- format_id
- フォーマットの説明
- language
- 言語
Sorting Formats
--format-sortを指定して--format-sort field1,field2...の様にbestの判断基準を指定することが出来る。
使用できるfieldは下記。
- hasvid
- 映像のあるフォーマットを優先する
- hasaud
- 音声のあるフォーマットを優先する
- ie_pref
- extractorに指定されたフォーマット設定
- lang
- extractorに指定された言語設定
- quality
- extractorに指定されたフォーマット品質
- source
- extractorに指定されたsourceの優先度。
- proto
- ダウンロードのプロトコル。(https/ftps > http/ftp > m3u8_native/m3u8 > http_dash_segments> websocket_frag > other > mms/rtsp > unknown > f4f/f4m)
- vcodec
- 映像のコーデック。(av01 > vp9.2 > vp9 > h265 > h264 > vp8 > h263 > theora > other > unknown)
- acodec
- 音声のコーデック。(opus > vorbis > aac > mp4a > mp3 > ac3 > dts > other > unknown)
- codec
- vcodec,codecと同じ。
- vext
- 映像の拡張子。(mp4 > webm > flv > other > unknown)
- aext
- 音声の拡張子。 (m4a > aac > mp3 > ogg > opus > webm > other > unknown)
- ext
- vext,extと同じ。
- filesize
- 正確なファイルサイズ。m3u8とDASH形式では使用不可。
- fs_approx
- マニフェストから計算されたおおよそのファイルサイズ。
- size
- 正確なファイルサイズ。分からない場合はおおよそのファイルサイズ。
- height
- 映像の高さ。
- width
- 映像の幅。
- res
- 映像の解像度。
- fps
- 映像のフレームレート。
- hdr
- 映像のHDR。(DV > HDR12 > HDR10+ > HDR10 > SDR)
- tbr
- 合計の平均ビットレート。
- vbr
- 映像のビットレート。
- abr
- 音声のビットレート。
- br
- tbr,vbr,abrと同じ。
- asr
- 音声のサンプリングレート。
- ソートは降順だがfieldの前に「+」を付けると昇順となる。+resとすれば最小解像度を優先する。
- res:720とすれば720p以下での最大解像度もしくはない場合は最小の解像度を優先する。codecとextは映像と音声の2つの値を取り得る。+codec:avc:m4aとすれば映像codecではavcを音声codecではm4aを優先の上で昇順となる。
- filesize~1Gとすればfilesizeが1GBに最も近い物を優先する。
- hasvidとie_prefは無条件で最優先となっている。これは--format-sort-forceで変更可能。
- デフォルトではcodec:vp9.2が有効つまりav1は優先ではない。同様にhdr:12が有効でありDVは優先ではない。これはAV1及びDVはまだ一般的ではない為。
EXTRACTOR ARGUMENTS
一部のextractorは追加の引数が設定されている。
- youtube
-
- skip
- manifestのダウンロードをskipする。hlsもしくはdashのいずれかを指定する。
- player_client
- 動画情報を抽出するクライアントを指定する。値はweb、android、ios、mwebがあり、_music、_embedded、_agegate、_creator、_agegateの接尾語を持つ。ただし_agegateはmwebのみ。
web_embedded
- player_skip
- 抽出に必要ないくつかのネットワークリクエストをskipする。configs、webpage、jsの内一つもしくは複数を指定する。
- include_live_dash
- live dash formatを含める。
- comment_sort
- コメントのソート順としてtopもしくはnewのいずれか指定する。
- max_comments
- ダウンロードするコメントの最大数を指定する。
- max_comment_depth
- 後で書く
- youtubetab(playlists、channels、feeds等)
-
- skip
- webpage(webpageのダウンロードをskip)、authcheck(認証が必要なplaylistのダウンロードを許可)の内一つもしくは両方。
- funimation
-
- language
- 言語を指定する。
--extractor-args "funimation:language=english,japanese"
- version
- 動画のversionとしてuncutもしくはsimulcastのいずれかを指定する。
--extractor-args "funimation:version=uncut"
- vikichannel
-
- video_types
- ダウンロードする動画の種類を指定する。episodes、movies、clips、trailersの内一つもしくは複数。