Youtube動画をコマンドでダウンロードする(ytdl)

Posted by     "roadman" on Saturday, October 12, 2019

TOC

Youtube動画をコマンドでダウンロードする(ytdl)

  • Youtube動画をダウンロードできるツールはいくつかある。
  • 今回はgolang版のytdlの方を紹介します。
  • なぜ数あるツールの中でこれを選んだかというと、自分がgolangが好きというのもあるんですが、golangは最終的にバイナリにビルドされたコマンドになるので可搬性がいいだろうという感じです。

インストール(mac)

  • ytdl(go)を使うにはgolangが必要です。golangを単体で入れるとバージョアップとかの手間が大変なので、goenvをインストールします。
    • リポジトリから入れたほうが最新に追随できる速度は早いのですが、今回は簡単なbrewでインストールします。
    • brewのインストールについては公式サイトをご覧ください。
  • brewが入っていればインストールは以下のコマンドのみ。

    brew install goenv
    
  • ~/.bash_profileに以下の行を追加します。普通はファイルの最後への追加で問題ないです。

    export PATH="$HOME/.goenv/bin:$PATH"
    eval "$(goenv init -)"
    
  • goenvでgolangをインストールします。インストールするversionはその時の最新版でいいと思いますが、最新版があまりにも直前にリリースされている場合などは、一つ前のメジャーバージョンの方が安全です。

    goenv install 1.12.9
    goenv global 1.12.9
    
  • golangをインストールした後、ytdlをインストールします。

    go get -u github.com/rylio/ytdl/...
    
  • インストールはこれで終わり。

使い方

  • 使い方は簡単です。以下のようにytdlコマンドの後ろにダウンロードしたいyoutube urlをつければOKです。(urlは仮です)

    ytdl "http://www.youtube.com/watch?v=aaabbbbccc"
    
  • ダウンロードされるファイル名は`動画タイトル.mp4`になるようです。

    • -oで独自に指定することもできる。動的に利用できる項目は-jで確認できます。例えば以下のように指定できる。

      ytdl -o "{{.DatePublished}}-{{.Title}}.{{.Ext}}" "http://www.youtube.com/watch?v=aaabbbb01"
      

終わりに

  • 機能的にはnode.js版ytdlの方が多いし、メンテナンスもちゃんとされている。
  • golangで色々ライブラリをいじってみたかったので、その副産物的に使いたかったので…
  • そのうち、ffmpegで自動変換してdropbox登録するとこまでやりたい。