【Mac】カレンダーを使って指定した時間(定期的)にコマンドを実行する

コンピュータ関連
スポンサーリンク

前回はSHOWROOMでライブ配信されているストリーミング動画を youtube-dl や ffmpeg を使ってダウンロード(保存)する方法を紹介しました。

無事に配信動画を保存できるようになりましたが、
そのためには毎回ターミナルを開き、手動でコマンドを入力し、録画を開始しなければなりません。

毎週何曜日の何時からと決まっているのならやはり自動でやってほしいところ。

ということで今回はスケジューラに組み込んで決まった時間に録画を開始させる方法を紹介してみます。

スポンサーリンク

カレンダーアプリを使って決まった時間に録画を開始

スケジューラとして使うのはMacの標準アプリである「カレンダー

カレンダーイベントとして設定すれば指定した時刻に「通知」するとともに任意のファイルを開くこともできるので、今回はそれを利用してシステムを組んでみます。

他にも実現する方法はあるようですが、
今回のようなケースではカレンダーを使った方が予定として目に見える上、何よりもわかりやすいかなと。

ということで重要な点は3つ

  1. 録画実行ファイル(アプリケーション)の作成
  2. カレンダーイベントの新規登録
  3. イベントが実行される前のスリープ、おやすみモード解除設定

これらを順に説明していきます。

録画実行ファイル(アプリケーション)の作成

まずは録画を開始するためのアプリケーション(スクリプト)を作成します。

中身は前記事で用意したコマンドを書いただけのものですが、保存するURL部分を変えることで番組毎の別に対応します。

Macでライブ配信を(予約)録画して保存 youtube-dl/ffmpeg【SHOWROOM】
実はちょっと前からShowroomで同時配信しているラジオ番組を視聴するようになりました。 しかしながら、 ふと気がつけば開始時間が過ぎてる! ちょっと席を外したい! 途中で寝落ちした! などなど、 「あぁ録画して保存できれば楽なのになぁ」...

作成には標準アプリである「Automator」を使います。

アプリケーション > Automator.app

Automatorを起動したら「アプリケーション」を選択します。
「アプリケーション」を選択

「カレンダーアラーム」でもいいのですが、保存した瞬間に即実行されてしまう謎仕様なので若干扱いづらいのです。
今回はイベントに紐づけて開くものなので「アプリケーション」で問題ありません。

スポンサーリンク

シェルスクリプトを実行する

左の項目から「シェルスクリプトを実行」を選択し、右側へドラッグ&ドロップ。

そこに前回作成したコマンドと保存したい番組のURLを記述します。
ただし今の時点では youtube-dler の行頭に #(シャープ) をつけてコメントアウトしておいてください。
理由は後ほど説明します。

export PATH=$PATH:/usr/local/bin
#youtube-dler https://www.showroom-live.com/test_url

シェルスクリプトを実行

あとは保存するだけ。
仮に名前は「radio_sr.app」とし、フォーマットは「アプリケーション」、
保存先は ~/mytools としておきます。
保存

さて、なぜコメントアウトしたのかと言いますと、
macOSのセキュリティの仕様で初めて起動するアプリケーションについては

「未使用のアプリケーション”xxx”を開こうとしています。開いてもよろしいですか?」
という確認ウインドウが出てしまうのです。
未使用のアプリケーション”xxx”を開こうとしています。開いてもよろしいですか?

スポンサーリンク

つまりこのままでは指定した時刻になっても確認ウインドウが表示されてしまい、ユーザが「開く」を選択しなければ録画を始めることができません
なので事前に1度実行しておく必要があるのですが、
実際にダウンロードする必要はないのでコメントアウトしておくというわけです。

ちなみにテキストファイルにスクリプトを書いて「.command」という拡張子を付け、実行権限を与えてやれば実は普通に動くのですが、カレンダーイベントで開こうとすると今度は「開発元が不明のアプリケーション」として引っかかってしまいます。なので今回はAutomatorを使っています。

では作業を続けます。
保存した「radio_sr.app」をダブルクリックか右クリックから開いて実行しましょう。
何もおこりませんがこれで実行したアプリという位置付けになりました。

再びAutomatorに戻り(閉じていたら「既存の書類を開く」)、行頭の#(シャープ)を削除します。

export PATH=$PATH:/usr/local/bin
youtube-dler https://www.showroom-live.com/test_url

編集したら保存

編集したら保存し直してください。

ちなみにわざわざ /usr/local/bin へのパスを記述しているのはパスが通っていないため。
じゃぁなんで自作コマンドのシンボリックリンクを /usr/local/bin に置いたの!?
と言われそうですがすいません、まったくもっておっしゃる通りで…

しかしながら自作コマンドは /usr/local/bin に置くのが一般的らしいですし、Automatorからでは

/usr/bin:/bin:/usr/sbin:/sbin

にしかパスが通っていません。
Automator パス

なので /usr/bin にシンボリックリンクを置くか、おとなしくパスを記述するかということになります。
どちらを取るかはお好みで。

とりあえずこれで録画を開始するアプリケーションは作成できました。

スポンサーリンク

カレンダーイベントの新規登録

次にカレンダーイベントを登録します。

カレンダーを開き、登録したい曜日を
右クリック > 新規イベント
新規イベント

あとは適当に名前を入力、
開始時刻は配信開始の時間、この例では「21:00」、
終了時刻は開始時刻と同じにして大丈夫です。
繰り返しは「毎週
通知は「カスタム」>「ファイルを開く」、「その他」を選び、
ファイル選択画面が開かれるので先ほど作ったアプリケーション「radio_sr.app」を選択、
イベントの開始時刻」を選んだらOKを押しましょう。
イベント詳細

これで毎週金曜日に予定が入れられました。

他にも録画したい番組があれば同じように録画実行ファイルを作り、登録していけばOKです。

イベントが実行される前のスリープ解除設定

さて重要な設定がもう一つ。

実はこのカレンダーイベント、Macがスリープ状態になっていると実行してくれません。
ディスプレイがオフになっていても同様です。

なので録画開始時間のちょっと前にスリープを解除しておく必要があります。

システム環境設定 > 省エネルギー > スケジュール

「起動またはスリープ解除」にチェックを入れ、
上記の例でいうと「金曜日」「20:57(開始時間の3分ほど前)」に起こしてあげましょう。
起動またはスリープ解除

スポンサーリンク

さらに
システム環境設定 > 通知 > おやすみモード

ディスプレイがスリープ中はオンにする」のチェックを外します。
ディスプレイがスリープ中はオンにする

これでディスプレイがオフになっていても通知される、つまり設定したカレンダーイベントが実行されます。

まとめ

さぁ準備は万端です。
ワクテカしながら指定時刻を待ってください。嘘です、待たなくていいです。

これで夜中に配信している番組なら寝ている間に録画してくれるはずですし、
そんな時間仕事中で見れないよ〜という配信に関しても録画しておいてくれるはずです。

また、スケジューラですから今回のようなライブ配信のみならず、
使い方によっては様々な場面で使えるかと。

あと前回に続き重ねて申し上げておきますが、
くれぐれも公衆送信などせずに個人で楽しむだけに留めてください。

ということで今回は以上です。
では。

追記

少し内容を変えて改善しました。詳しくはこちらから。

ネット配信番組を予約録画するスクリプト第二弾【Mac】
先日シェアしたネット配信動画(showroom等)をMacで予約録画する方法。 少し改良して「予約リスト」と「録画実行アプリ」に分け、 リストを読み込むことで録画するよう変えてみました。 スケジューラは前回と同じくカレンダーを使用します。

コメント

タイトルとURLをコピーしました