無機野

ここはお前の日記帳

youtube-dlでDL済み動画を回避しつつ動画を音声データにするっていうやつを自動実行するやつ

環境:win10

最近流行ってるVtuberというジャンルをよく見ている オタクなので
で、これがけっこうお歌うまうま勢が多い
オフライン環境でも快適に聴きたい、できれば面倒くしたくない、そんなtips

諸々の導入

pythonのインストール
おすすめはanacondaだけどyoutube-dlしか使わないのなら単体で適当にアレすればよいのではないでしょうか
macだとデフォで入ってたはず

youtube-dlのインストール
cmd開いてpip install youtube-dl
だと思うたぶん

ffmpegのインストール
これないと動画から音声を剥がせない たぶん
パス通ってるとこに置いとけばいいのかな よく分からん

atomic parslayのインストール
DLした音声にサムネとかタグとかいじるのに必要
使わないなら要らん
chocolatey使ってるならcinst atomicparsley

youtube-dlを使ってみる

ドス窓開いてyoutube-dl url
で大体の動画サイトはいける
もちろんurlはプレイリストでも可

youtube-dl -i -x url
で音声のみ剥がせる
iはエラー無視するおまじない
ただこのままだとopusまたはoggファイルが出力される

音質を考える

ただ動画を音声にするだけだと変換時の音質が気になる
まあyoutubeにアップされてる時点ですべて圧縮されてるのであまり拘っても仕方ないが…ベストはつくしたい所
例として以下の動画を考える
www.youtube.com
右クリックから統計情報を見ると
f:id:moppii:20180921011809p:plain
opus(251)というフォーマットであることが分かる
Youtubeで動画に使用されているコーデック(映像・音声それぞれ)の判別をする方法 - Yuichiro_S の Twitterでは文字数が足りないもの
を参考にするとopusの160kbpsらしい opusのことよく知らんけど携帯機で聴くには妥当な圧縮率だと思う
ただopusやoggスマホでは再生しづらいのですべてaacに変換してしまう

youtube-dl -f bestaudio https://www.youtube.com/watch?v=ZtTQ_pI-cCw
でDLすると映像なしのwebmがDLされる
mediainfoで確認するとやはり音声はopusであったがなぜかビットレートは表示されない
ファイルが237秒 3857KBなので3857*8/237≒130で128kbpsくらい?アレ?160kbpsじゃないのおかしくね?

まあいいや…結局aacにするので拡張子を指定すると
youtube-dl -f bestaudio[ext=m4a] https://www.youtube.com/watch?v=ZtTQ_pI-cCw
でDLされるファイルを確認すると126kbpsとなる
ファイルサイズは3.72MB
変な変換してファイルサイズが無駄にでかくなるとかもないのでこれで妥当っぽい

サムネとタグを付ける

youtube-dl -f bestaudio[ext=m4a] --embed-thumbnail --add-metadata "url"
これでサムネとタグが仕込まれる
先述の通りatomic parsleyとかいうよくわからんアレが入ってないとエラーが出るので注意

DL済み動画を回避する

youtube-dl --download-archive ほげほげ.txt "url"
というオプションでほげほげ.txtに保存済み動画がリストされる
つまり毎回同じプレイリストを指定しても保存済みは回避してDLできる
というわけで
youtube-dl --download-archive ほげほげ.txt -f bestaudio[ext=m4a] --embed-thumbnail --add-metadata "DLしたいプレイリストのurl"
あたりが妥当ではないでしょうか
リストを開くと
動画サイト 動画ID
みたいな感じで羅列されていく
例:
f:id:moppii:20180921032039p:plain

DLするプレイリストをまとめる

毎回URLを指定するのはクソ面倒なのでリストにまとめておきましょう
youtube-dl -a ふがふが.txt
でtxt内のurlが一度にDLされます
つまり追ってるチャンネルの再生リストのURLをテキストファイルにまとめてパス通ってるとこに置いておいてこのコマンド指定すればOK
youtube-dl -i --download-archive ほげほげ.txt -f bestaudio[ext=m4a] --embed-thumbnail --add-metadata -a ふがふが.txt
たまに何故かDLできない動画があるので-iは入れといたほうがいい

batファイルに書いておく

notepad開いて
youtube-dl -i --download-archive ほげほげ.txt -f bestaudio[ext=m4a] --embed-thumbnail --add-metadata -a ふがふが.txt
保存して拡張子を.batにすればクリックひとつで実行される
必要なら最初の行でディレクトリを変更しておく

まとめ

ふがふが.txtにDLしたいプレイリストのurlを羅列しておく
それをcmdを実行する場所に置いておく
cd 適当なディレクト
youtube-dl -i --download-archive ほげほげ.txt -f bestaudio[ext=m4a] --embed-thumbnail --add-metadata -a ふがふが.txt
をbatファイルにしておいて定期的に実行する

これでDLできない動画は知らん

追記:
youtube-dl最新版使ってもDLできないやつあったので以下参考に修正版のアレをpipでアレしたらDLできるようになった
https://github.com/rg3/youtube-dl/issues/17457
個別にインストールしなくても最新版に反映されてるはずじゃ・・・?よくわかんね