バッチファイルを使いURLだけを入力して連続でyt-dlpを起動する(+バッチファイル作成時に有用なページ)
先日作ったバッチファイルでyt-dlpを概ね快適に使っているものの、いくつも動画を保存したい場合に1回ずつバッチファイルを起動することすらメンドウになってきた(面倒くさがりすぎ)
いっそのこと、動画閲覧時に最初にバッチファイルを起動しておき、保存したい動画に出会ったらURLだけコピペで実行できるようにならないかな…と思い、バッチファイルの改良版を作ることにした。
URLを入力しながらyt-dlpを連続実行するバッチファイル
やりたいことをまとめる。
最初にコマンドプロンプトの画面を開いたらあとはずっと同じ画面が開きっぱなしでyt-dlpを起動したい。(現在のバッチファイルはexitで終了しているため、毎回コマンドプロンプトの起動から必要になる。単発の場合には閉じる手間が省けて便利なのだけども。)
いっそのこと、毎回バッチ名を入力することすら面倒くさい。なので、一度起動したら、後はURLだけ入力して実行、URLだけ入力して実行…という風に連続入力できるようにしたい。
いちおう、終わるためのコマンド入力を受け付けられるようにする(×ボタンでコマンドプロンプトを閉じればいいだけではあるが、気分の問題)
cookieを使うかどうか、オプション的に入力できるようにしたい。
URLをコピペで入力できるよう、バッチファイルの中で入力を受け付けるには、「set /p 変数名="表示メッセージ"」を使う。
問題は第4項の「オプション的な入力」である。
イメージとしては、URLを入力する際に、「lg 」を前に付けて入力した場合にはcookieを使うようにしたい。
文字列処理が必要になるのでやり方を検索してみたところ、「%変数名:~開始位置,文字数%」という記述で実現可能っぽい。
上記引用で言う「m文字目から」というのは、感覚的には「m+1文字目から」となっている様子。具体的には、
「abcdefg」という文字列の2文字目は「b」であるが、「m文字目から、最後まで」である「:~2%」と指定すると、3文字目の「c」以降が結果として返されている。
つまりどちらかというと、「m文字目から」ではなく、「m文字を読み飛ばして」がニュアンスとして正しく感じる。
上記を踏まえ、完成したバッチファイルが次のとおり。
@echo off
REM 連続DL(Exit無し)
setlocal
:INPUT_CHECK
echo.
set d=
set tid=
set opt=
echo 終了する場合は"exit"と入力。ログイン情報を使用する場合は"lg"と入力し、空白区切りに続けてURLを入力。
set /p d="URLを入力:"
if "%d%"=="" goto :INPUT_CHECK
if "%d%"=="exit" goto :EXIT_GATE
set tid=%d%
if %d:~0,2%==lg set opt= --cookies cookies.txt
if %d:~0,2%==lg set tid=%d:~3%
echo.
echo OPTION = %opt%
echo URL = %tid%
echo.
yt-dlp --output "【ここにDL先を入力】\%%(title)s [%%(id)s](%%(uploader)s%%(uploader_id)s,%%(upload_date)s,%%(duration>%%Hh%%Mm%%Ss)s).%%(ext)s"%opt% --embed-thumbnail --format "bv*[ext=mp4]+ba[ext=m4a]/b[ext=mp4] / bv*+ba/b" --console-title "%tid%"
echo.
echo ------------------------------------------------------------
goto INPUT_CHECK
:EXIT_GATE
endlocal
これで「動画見ながら、気が向いたら保存」がだいぶ快適にできるようになったと思う。
ただ、やっぱりChrome拡張とかで実装できれば、もっとラクになるかなぁ。
バッチファイル作成時に有用なページ
バッチファイルを記述する際、細かいことは頭に入っていないので適宜調べながら作成するわけだが、そういう時に便利そうなページをここにまとめておく。(随時更新)
バッチファイルでよく使う書き方まとめ
.bat(バッチファイル)のifコマンド解説。
BATタグの一覧
バッチファイルでの試行錯誤を回避するためのメモ
この記事が気に入ったらサポートをしてみませんか?