yt-dlp
このページ古いな~書き直して~
最近なんかDenoとかなんらかのJSエンジンを導入するのが推奨になったらしいな…
EJS · yt-dlp/yt-dlp Wiki https://github.com/yt-dlp/yt-dlp/wiki/EJS
Denoをインストールすればとりあえずそのまま最新版yt-dlpも追加の設定不要で動作するっぽいな?
Announcement External JavaScript runtime now required for full YouTube support · Issue #15012 · yt-dlp/yt-dlp https://github.com/yt-dlp/yt-dlp/issues/15012
https://github.com/yt-dlp/yt-dlp
https://github.com/yt-dlp/yt-dlp-nightly-builds/releases
nightly版、通常の更新が遅い場合こっち、ていうかこっちがオススメかも
サイトの変更でダウンロード出来なくなったりした後、直る時は当然nightly版が直るの早いから
だいぶ前に適当に書いたままだから注意ね
yt-dlp使い方(Windows向け解説)
メモ:これたぶんyt-dlpがうまく動作する為にはffmpegもいるな、俺先に入れてて気付かんかったけど
いや、いらんと思う
どっちだよ
とりあえず試せばいい
yt-dlpダウンロードする
「yt-dlp.exe」をダウンロードする
ダウンロード時に「一般的にダウンロードされていない…」みたいな警告が出る場合は、「…」とかを押して「保持する」->「詳細」->「保持する」とかを押して保存
作業しやすいようにyt-dlp.exeを任意のフォルダに移動させる
ファイルを選択してCtrl+Xで切り取り、任意フォルダにフォーカスしてCtrl+Vで貼り付け、で移動するとファイル移動が簡単
yt-dlp.exeがあるフォルダを開いているエクスプローラーのアドレスバーにcmdと入力してEnterでそのフォルダをカレントディレクトリにした状態でコマンドプロンプトを起動出来ます
コマンドプロンプトにyt-dlp --versionと入力してEnterでyt-dlpのバージョンが表示されたらOK
半角で入力してください、特に空白に注意
なんかうまくいかん場合、yt-dlp.exeを右クリック→プロパティで全般の下の「セキュリティ:このファイルは他のコンピューター…」とか書いてる所の「許可する」にチェック入れて適用させてみて
yt-dlp https://www.nicovideo.jp/watch/sm9などと入力してEnterで動画のダウンロードが出来ます
コマンドプロンプトへのテキスト貼り付けはコマンドプロンプトを右クリックすると貼り付けになります、不思議な動作
ffmpegが見つからなかった場合、エラー(ERROR)出るか注意(WARNING)出るかするかも
ffmpegをダウンロードしてyt-dlpに認識させる
yt-dlp用ffmpegビルド
ffmpeg-n7.0-latest-win64-gpl-7.0.zipとかをダウンロードして解凍(n7.0の部分はffmpegのバージョン更新されて変わったら変わってるかも)
中身のbinフォルダ内にffmpeg.exeとかffprobe.exeがある
それら全部をyt-dlp.exeと同じ位置に移動
yt-dlp.exeと同じ位置にffmpeg.exeとかffprobe.exeとか置くだけでそのffmpeg使ってくれるっぽい!!!これだけでいいっぽい!!
コマンドプロンプトについて
コマンドプロンプトはコマンドを入力して実行する事が出来ます
yt-dlpをだけ入力して実行すれば、ただyt-dlpを実行するというコマンドになります
yt-dlpの後に続けて、半角スペース区切りでオプションをyt-dlpに渡して実行出来ます
オプションを渡す事で、yt-dlpはそのオプションに従って動作します
--versionというオプションを渡せばyt-dlpは自身のバージョンを返す動作をします(先程のyt-dlp --versionコマンドです)
オプション一覧はyt-dlp --helpというコマンドを入力するか、で確認出来ます、非常に大量にあります
オプション1つの項目で半角スペースを含む文字列を渡したい時や一部の記号類など文字を含む文字列を渡したい時は「"」←二重引用符で囲う(重要)
特殊な文字は「&」とかその他色々、よくわかんない場合とりあえず二重引用符で囲っとけば大体なんとかなる
例えばyt-dlp -o "%(uploader)s [%(uploader_id)s] - %(title)s [%(id)s] (%(upload_date>%Y-%m-%d)s) (%(height)sp).%(ext)s" https://www.nicovideo.jp/watch/sm9など
↑この例は保存されるファイル名を投稿者 [投稿者ID] - タイトル [動画ID] (投稿年-月-日) (動画高さp).拡張子 にします
使えるフィールドはに載ってます
あと、キーボードのCtrl+Cを押して現在の処理中断出来る
↑↓キーで前に使ったコマンド遡ったり出来る
Escキーでコマンド入力欄空に出来る
改行を含むコマンドをコマンドプロンプトに貼り付けると改行でそのままコマンド実行されるので注意(貼り付けただけで実行されちゃう)
今のコマンドプロンプト(Win11の奴)だとそのような改行を含むテキストを貼り付けようとすると「コマンドが実行されるけど本当に貼り付けて良いの?」って感じの確認してくれたわ
ダウンロードするフォーマットの選択方法
動画サイトでは1つの動画に対して複数の画質やファイル形式を配信しています
yt-dlpはフォーマット選択オプションを提供しています、フォーマット選択オプションを使わなかった時はデフォルトでなるべく最高品質の動画がダウンロードされます
フォーマット選択オプションはf FORMAT(または--format FORMAT)です
FORMATにダウンロードしたいフォーマットを入力します
フォーマットには、bestvideo*、bestaudioなどの品質指定やmp4などのファイル拡張子指定、さらに映像と音声の組み合わせやフィルタ機能があってbv*[height<=?720]+ba/b[height<=?720]などといった指定なども出来て
それと、後述する--list-formatsで取得したフォーマット直接指定があります
フォーマット記述
デフォルト(何も指定しない時)は-f bestvideo*+bestaudio/bestと同じ、これは最高品質の映像と最高品質の音声の組み合わせ、または最高品質の動画、みたいな感じの指定です
bestvideo*という風にvideo系の後に「*」が付いているのは、音声があってもいいという意味です、video系の後に「*」が付いていない時は音声が無い映像のみのフォーマットを選択の対象にする為、意図しない結果に注意してください
逆にbestaudioという風にaudio系の後には「*」を付けないでください、公式で「Do not use!」と言われています、付けると仕様上、yt-dlpは映像付きのフォーマットをより良い品質だと判断する為に、実際に高音質な音声ではなく、ただ映像が付いているフォーマットの音声を優先して選択してしまうらしいです
video系には*を付けて、audio系には*を付けない!
もしも、音声をダウンロードしたくない!映像最高品質でなくても良い!そんな映像のみのダウンロードがしたい!という奇特な場合は-f bestvideoと*を付けずに選択すればいいんじゃないかな(適当)
音声のみダウンロードしたい場合に-f bestaudioまたは-f baが便利です、opusとかaacがダウンロード出来ます(拡張子はwebmとかm4aとかだったりするけど)
特に便利なオプション紹介
--list-formats
yt-dlp --list-formats URLでURLから現在ダウンロード出来るフォーマット一覧が表示出来ます
一番左端のIDをフォーマット選択オプションに渡す事で、そのフォーマットをダウンロード出来ます
欲しい映像が614で欲しい音声が251だった場合、yt-dlp -f "614+251" URLとかで、その映像と音声をダウンロードし組み合わせた動画ファイルが出来ます
--cookies-from-browser
--cookies-from-browser BROWSERを使ってログイン状態をyt-dlpに渡そう
これしなかったら
bilibiliは720pとかがダウンロード出来ない
ニコニコはプレミアム会員ログイン状態じゃないと1080pダウンロード出来ない(今現在は一般会員と非ログインは同じ状態になったと思うのでプレミアム会員じゃないなら非ログインとたぶん同じ?だと思う)
たとえばEdgeで各サイトログインしてある状態で--cookies-from-browser edgeとオプションに加える
ただ、そのブラウザが起動中にこれ実行するとクッキー取得出来ないってエラー出て動作しない、解決策アリ
解決策→https://github.com/yt-dlp/yt-dlp/issues/7271#issuecomment-1584404779
要するにそのブラウザ(のショートカット)の起動オプションに--disable-features=LockProfileCookieDatabaseを加えて、いつもそこからブラウザ起動するようにすれば良い
例えばタスクトレイにEdgeのショートカットがあるなら、それ右クリック→「Microsoft Edge」って項目を右クリック→プロパティ押す→リンク先って書いてる所の横の入力欄の末尾に半角スペースと--disable-features=LockProfileCookieDatabaseを加えて適用OK
これやって他に特に副作用みたいな問題も起きないし便利なのでやった方が良い
もちろんChtome使ってるならChromeで同様にすればいい
たぶんfirefoxはこの問題起きない?と思う、Chrome系(chromium)ベースのブラウザで発生するらしいので
ブラウザ閉じてもクッキー取得出来ないってエラー出る時ある、内部ではまだブラウザのプロセス残ってる(起動してる)からの場合が多い、タスクマネージャーからブラウザのプロセス探して完全に全部終了すれば良い
1つのブラウザで複数プロファイル使ってる場合はプロファイルの選択もいる--cookies-from-browser edge:defaultとか--cookies-from-browser "edge:profile 1"とか
--download-sections
特定の区間だけダウンロード出来る
ffmpegが必要っぽい、ていうかyt-dlpをちゃんと動作させるのにffmpeg重要っぽいからffmpeg入れ方最初に書いた
例:yt-dlp --download-sections *26:04-26:37 https://www.youtube.com/watch?v=87U3lgDpBRoとか
フォーマット記述に%(section_start& [{:.0f}-|)s%(section_end&{:.0f}]|)s←こんな感じの入れるとdownload-sections指定した時だけ [1564-1597]って感じに秒数が出るように出来る
一つの動画の複数の部分をそれぞれダウンロードしたい時、いちいちファイル名変えたりする手間省けるね
--simulate
実際にダウンロードしない、どんな感じか確認用
一部の機能(アウトプットフォーマット、-o TEMPLATEとかはsimulateで確認出来ないっぽい)
--no-mtime
なんかデフォルトだとファイルの更新日時が投稿日時に勝手に合わせられるんだけど、それしないようにする
--embed-thumbnail
なんかダウンロードしたファイルににサムネイル埋め込む
--embed-metadata  または --add-metadata
なんかチャプター情報とか埋め込まれるらしいです、よく分からんけど、いいんじゃないですかね
--embed-subs
なんか動画に字幕埋め込むらしいっす
アップデート
yt-dlp -Uでyt-dlpを最新版にアップデート出来ます
現在nightlyじゃない人はyt-dlp --update-to nightlyでnightly版にアップデート出来るらしい、たぶんnightly版の方がいいよ(適当)
バッチファイル(bat)について
毎回長いコマンド打つのめんどい、って時にbatファイルが使えます
batファイルにコマンドプロンプトに入力するコマンドを記述する事で、そのコマンドが入力されます
例えば、以下のようなテキストをメモ帳とかで作成して、拡張子をbatにしてyt-dlp.exeと同じ位置にファイル保存、そのファイル実行すると、SET /P url=まで実行されるので、そこでURLを入力して改行するとその次のyt-dlpでダウンロード始まる
code:bat
SET url=
SET /P url=
yt-dlp -o "%%(uploader)s %%(uploader_id)s - %%(title)s %%(id)s (%%(upload_date>%%Y-%%m-%%d)s) (%%(height)sp).%%(ext)s" --cookies-from-browser edge --add-metadata --embed-subs --embed-thumbnail "%url%"
↑バッチファイルでは二重引用符で囲っても「%」はエスケープする必要があるらしく、「%」自体を記述するのに「%%」と書かないといけないっぽい(コマンドプロンプトに直接入力する時は%でもいけたのでなんでバッチファイルに描く時は%%にしないといけないのかよくわからん)
このスクリプト今適当に書いた奴なので注意
----- ここまで、以下下書きとゴミ
小ネタ
--yes-playlist --skip-download --write-sub --sub-langs "live_chat,ja" --sub-format "srt/best"
でyoutube再生リスト突っ込んで再生リストのライブ配信動画の字幕と日本語字幕をsrt形式で保存や
--yes-playlist
なんかプレイリストまとめてダウンロード出来る
例:yt-dlp --yes-playlist "https://www.youtube.com/watch?v=zww0xYfAFww&list=PLldmuvxa6KCoEtYs4fobOeP28uoCr4R81&index=1"
これでその動画だけでなくプレイリスト全部もダウンロードされる
--yes-playlist指定しなくてもプレイリスト全部ダウンロード出来るやん、逆に--no-playlist の方が使い所あるのでは?
ffmpegのパス通ってない場合、yt-dlpに直接ffmpegのパス指定する--ffmpeg-location PATHというオプションもあるらしい、知らんけど
ていうかyt-dlp用ffmpegビルドってあるんだな、いくつかの問題が改善される部分あるらしい、これ使ったほうがええんかな
ffmpeg
yt-dlp用ffmpegビルドをダウンロードして--ffmpeg-location PATHを使うぞ!
ffmpeg-n7.0-latest-win64-gpl-7.0.zipとかをダウンロードして解凍
中身のbinフォルダ内にffmpeg.exeとかffprobe.exeがある
これらを分かりやすいフォルダに移動…yt-dlp.exeと同じ位置とするか
yt-dlp.exeと同じ位置にffmpeg.exeとかffprobe.exeとか置くだけでそのffmpeg使ってくれるっぽい!!!これだけでいいっぽい!!
便利なオプション
--list-formats
ダウンロード可能なフォーマット一覧を表示します
際に、最初yt-dlpの後に
--list-formats
yt-dlp 2024.02.29以降のバージョン使おう、このバージョン以降から現在のニコニコの形式がダウンロード可能に修正されている
yt-dlp nightlyを使うのが良い、通常版はなんか滅多に更新されなくて、いくつかのサイトが動かなくなっても更新されないので
ブラウザ、便利技、Ctrl+Fでページ内検索
これ知らん奴人生損してる
Ctrlを押して、Ctrlを押したままFキーを押す ←キー名+キー名の入力方法
#PC便利
#使い方解説
#俺が今使ってる
#音スタダ