見出し画像

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」というワークフローを作成できるアプリケーションがあります。

というわけで、これを用いていちいちコマンドなんか入力せず、右クリックからパパッとダウンロードできるサービスを作成していきましょう。

完成したもの

スクリーンショット 2021-03-31 17.49.57

YouTubeで動画を見ているときに、URLを全選択して右クリック→サービス→YouTube-DL(今回作成したもの)を選択します。

スクリーンショット 2021-03-31 17.51.59

ダウンロードする際のフォーマットを表示します。

スクリーンショット 2021-03-31 17.52.45

先程表示されていたフォーマットの中から、自分がほしい形式のフォーマットコードを入力して「OK」を押します。

スクリーンショット 2021-03-31 17.53.29

ダウンロードされます。

(著作権違反の動画はダウンロードしないでください。また、ダウンロードした動画は私的使用に留めてください)

(引用元:お金無限で兄弟でクレーンゲームしまくったらとれすぎたw【鬼滅の刃】【ヒカキン&セイキン】/https://www.youtube.com/watch?v=mDlzYe3KFvk by HikakinTV)

作り方

1.Automatorを起動

あ、Automatorのアイコンがわからない場合はLaunchpadで検索すれば出てきます。

以下が起動画面です。

スクリーンショット 2021-03-31 17.27.53

右クリックのサービスを追加したいので、「クイックアクション」を選択します。

スクリーンショット 2021-03-31 17.29.07

はい、するとこんな画面になると思います。ならなかった人はなにか間違えています。

2.初期設定

さて、まずは「ワークフローが受け取る現在の項目」を「URL」に設定します。そして、「入力」を「URLのみ」としましょう。

スクリーンショット 2021-03-31 17.30.56

3.アクションを設定

いちいち説明していると長くなるので、まずは完成図を貼ります。

スクリーンショット 2021-03-31 18.23.04

これを模写しろというのも効率が悪いので、成果物だけ欲しい方は以下からどうぞ。

使用する際に、シェルスクリプト内の「/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くんなにげに便利なんで使ってみてね。


この記事が気に入ったらサポートをしてみませんか?