Macで右クリックからYouTube動画をダウンロードするワークフロー【Automator】
ハロー、エブリワン。
突然ですが、YouTube動画をダウンロードしたいときってありますよね。
僕の場合はスマホに保存して、ミュージックアプリで聞きたい場合とか。
仮にYouTube動画をダウンロードする場合、多くの場合は外部のサイトを使用したり、拡張機能を用いるのではないでしょうか。
まぁそれも良いのですが、中には音声だけほしいとか、低画質でほしいみたいなニーズも在ると思います。
そんな方にうってつけのツールがありまして、Pythonで作成された「youtube-dl」というものです。
Macをお使いの場合は、ターミナル.appを開き、以下のコマンドでインストールできます。
$ sudo curl -L https://yt-dl.org/downloads/latest/youtube-dl -o /usr/local/bin/youtube-dl
$ sudo chmod a+rx /usr/local/bin/youtube-dl
(引用元:http://ytdl-org.github.io/youtube-dl/download.html)
また、Homebrewというパッケージ管理ソフトをインストールしている場合は、以下のコマンドでも大丈夫です。
$ brew install youtube-dl
使用方法は公式サイトを見て欲しいのですが、コマンドを用いてYouTube動画をダウンロードする流れとなっています。
でもこれ、ちょっとめんどうですよね。
さて、Macにはそんな怠惰な人間に向けて、「Automator」というワークフローを作成できるアプリケーションがあります。
というわけで、これを用いていちいちコマンドなんか入力せず、右クリックからパパッとダウンロードできるサービスを作成していきましょう。
完成したもの
YouTubeで動画を見ているときに、URLを全選択して右クリック→サービス→YouTube-DL(今回作成したもの)を選択します。
ダウンロードする際のフォーマットを表示します。
先程表示されていたフォーマットの中から、自分がほしい形式のフォーマットコードを入力して「OK」を押します。
ダウンロードされます。
(著作権違反の動画はダウンロードしないでください。また、ダウンロードした動画は私的使用に留めてください)
(引用元:お金無限で兄弟でクレーンゲームしまくったらとれすぎたw【鬼滅の刃】【ヒカキン&セイキン】/https://www.youtube.com/watch?v=mDlzYe3KFvk by HikakinTV)
作り方
1.Automatorを起動
あ、Automatorのアイコンがわからない場合はLaunchpadで検索すれば出てきます。
以下が起動画面です。
右クリックのサービスを追加したいので、「クイックアクション」を選択します。
はい、するとこんな画面になると思います。ならなかった人はなにか間違えています。
2.初期設定
さて、まずは「ワークフローが受け取る現在の項目」を「URL」に設定します。そして、「入力」を「URLのみ」としましょう。
3.アクションを設定
いちいち説明していると長くなるので、まずは完成図を貼ります。
これを模写しろというのも効率が悪いので、成果物だけ欲しい方は以下からどうぞ。
使用する際に、シェルスクリプト内の「/opt/homebrew/bin/youtube-dl」の部分は、皆さんの環境に応じて書き換えてください。
以下のコマンドの結果をコピペしたら動くはずです。
$ which youtube-dl
では解説に移ります。
まず、最初にURLを受け取ることを明示しました。そのため、入力値のバリデーションはAutomatorが勝手に行ってくれるので、安心して"URL変数"へ代入します。
そしてシェルスクリプトを実行します。
$ /opt/homebrew/bin/youtube-dl -F $1
「$1」は先程設定した変数、つまりURLを引数として受け取っています。youtube-dlの"-Fオプション"は、利用可能なフォーマット一覧を出力するものです。出力結果の例をお見せします。
[youtube] xxxxxxxx: Downloading webpage
[info] Available formats for xxxxxxxx:
format code extension resolution note
249 webm audio only tiny 48k , webm_dash container, opus @ 48k (48000Hz), 1.15MiB
250 webm audio only tiny 64k , webm_dash container, opus @ 64k (48000Hz), 1.52MiB
251 webm audio only tiny 128k , webm_dash container, opus @128k (48000Hz), 3.02MiB
140 m4a audio only tiny 129k , m4a_dash container, mp4a.40.2@129k (44100Hz), 3.05MiB
160 mp4 256x144 144p 29k , mp4_dash container, avc1.4d400c@ 29k, 30fps, video only, 700.87KiB
394 mp4 256x144 144p 51k , mp4_dash container, av01.0.00M.08@ 51k, 30fps, video only, 1.21MiB
278 webm 256x144 144p 62k , webm_dash container, vp9@ 62k, 30fps, video only, 1.47MiB
133 mp4 426x240 240p 60k , mp4_dash container, avc1.4d4015@ 60k, 30fps, video only, 1.43MiB
395 mp4 426x240 240p 98k , mp4_dash container, av01.0.00M.08@ 98k, 30fps, video only, 2.32MiB
242 webm 426x240 240p 111k , webm_dash container, vp9@ 111k, 30fps, video only, 2.62MiB
134 mp4 640x360 360p 177k , mp4_dash container, avc1.4d401e@ 177k, 30fps, video only, 4.17MiB
396 mp4 640x360 360p 205k , mp4_dash container, av01.0.01M.08@ 205k, 30fps, video only, 4.84MiB
243 webm 640x360 360p 238k , webm_dash container, vp9@ 238k, 30fps, video only, 5.60MiB
397 mp4 854x480 480p 381k , mp4_dash container, av01.0.04M.08@ 381k, 30fps, video only, 8.96MiB
135 mp4 854x480 480p 432k , mp4_dash container, avc1.4d401f@ 432k, 30fps, video only, 10.18MiB
244 webm 854x480 480p 546k , webm_dash container, vp9@ 546k, 30fps, video only, 12.84MiB
18 mp4 640x360 360p 552k , avc1.42001E, 30fps, mp4a.40.2 (44100Hz), 13.00MiB (best)
このformat codeで、ダウンロードする際の形式を指定することが出来ます。
例えば、動画だけ欲しい人は244とか135を選べば良いです。音声だけ欲しい人は、250、251などですね。
さて、つまりフォーマットを指定するためには、まずこの"-Fオプション"による出力結果を確認しなければなりません。
なので、この出力結果を"message変数"へ入れます。
そして、それをダイアログで表示するのですが、Automatorにはダイアログなんていう高度な機能はありませんので、Apple Scriptを使用します。
on run {input, parameters}
set msg to ""
if (get count of input) > 1 then
repeat with oneLine in input
set msg to msg & oneLine & "
"
end repeat
end if
tell application "System Events"
display dialog msg with title "val1"
end tell
return input
end run
まず、受け取った引数は「input」に格納されているので、それを取り出せばよいのですが、これ一行ごとにリストで分割されているので、全てを取り出して文字列型に結合しなければならないんですよね。
というわけでループして一行ごと取り出し、最後に改行を付け加えて文字列型の変数「msg」に足していっています。
その後、System Eventsを呼び出し、display dialogでダイアログを表示します。構文について気になる方は調べてください。僕も見様見真似です。
ここまでで表示が完了しました。
次に、それを経てユーザーがどのフォーマットを選択するのかを聞かなければなりませんので、「テキストの入力を求める」でフォーマットコードの入力を待ちます。その結果を変数へ格納しましょう。
さて、これでダウンロードに必要な情報は全て揃いました。
最後にシェルスクリプトを実行します。
$ cd ~/Downloads
$ /opt/homebrew/bin/youtube-dl -f $1 $2
一行目の"cdコマンド"に関しては、適当に自分がファイルを保存したい場所を指定してもいいですし、消してもいいです。(消した場合はホームディレクトリにダウンロードされます)
$1と$2は、それぞれ引数として上から降ってきたフォーマットコードとURLです。
最後にcmd + sで保存したら終わり。
おわりに
YouTube以外のURLでも実行できてしまうので、何かしらのバリデーションは必要かと思います。適時改変してください。
Automatorくんなにげに便利なんで使ってみてね。
この記事が気に入ったらサポートをしてみませんか?