ネット配信番組を予約録画するスクリプト第二弾【Mac】

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

先日シェアしたネット配信動画(showroom等)をMacで予約録画する方法。

少し改良して「予約リスト」と「録画実行アプリ」に分け、
リストを読み込むことで録画するよう変えてみました。

スケジューラは前回と同じくカレンダーを使用します。

スポンサーリンク

録画予約リストの作成

前回は録画コマンドが書かれたアプリを番組毎に作成、カレンダーイベントで起動するという形をとりました。

【Mac】カレンダーを使って指定した時間(定期的)にコマンドを実行する
前回はSHOWROOMでライブ配信されているストリーミング動画を youtube-dl や ffmpeg を使ってダウンロード(保存)する方法を紹介しました。 無事に配信動画を保存できるようになりましたが、 そのためには毎回ターミナ...

それだと単発の配信でもわざわざファイルを作り分けなければならず・・・少々野暮ったい。というか面倒臭い。

なので今回は「予約リスト」をテキストファイルで作成、
それを読み込むことで録画できるかたちに変えてみます。

フォーマットとしてはこのような感じに。

w Thu 12:00 https://www.showroom-live.com/aaa
w Wed 01:00 https://www.showroom-live.com/bbb
d 2020/04/09 16:00 https://www.showroom-live.com/ccc
d 2020/04/10 20:00 https://www.showroom-live.com/ddd

行頭で「w」か「d」、それぞれweek(毎週)とday(1日のみ)という分類。
次に録画したい曜日か日付、と時間、
最後に録画したいURLとしてみました。

テキストファイル「rec-sche.txt」として保存しておきます。

~/mytools/rec-sche.txt

録画実行ファイルの作成

今回もカレンダーイベントで開くためにAutomatorでアプリケーションを作成します。

拡張子.sh ではテキストエディタで開いてしまうし(関連付けしなおせばいいかもだけど)、
.command では「開発元不明」アラートが出てしまう。(これまた承認しとけばいいっちゃいいんだけど)

ま、前回の延長線ということで今回もこのままいきます。

スポンサーリンク

アプリケーション > Automator.app を起動、

アプリケーション」を選んだら、
「アプリケーション」を選択

ライブラリから「シェルスクリプトを実行」を選び、右側へドラッグ&ドロップ。
以下のコードを記述します。

export PATH=$PATH:/usr/local/bin
DAY=(`date "+%Y/%m/%d%H:%M"` `LANG=C date "+%a%H:%M"`)
cat ~/mytools/rec-sche.txt | sed '/^$/d' | while read LINE; do
	LIST=(${LINE})
	if [ ${LIST[0]} = "w" ] && [ ${DAY[1]} = "${LIST[1]}${LIST[2]}" ]; then
		youtube-dler "${LIST[3]}"
	elif [ ${LIST[0]} = "d" ] && [ ${DAY[0]} = "${LIST[1]}${LIST[2]}" ]; then
		youtube-dler "${LIST[3]}" && sed -i '' -e "\@${LINE}@d" ~/mytools/rec-sche.txt
	fi
done

やってることは単純で

  1. 現在の日時を取得
  2. 予約リストを読み込んで
  3. リストの日時と比較
  4. 一致していれば指定されているURLから録画開始、
  5. d(1日限り)の予定については正常終了後に予約リストから削除

これだけ。

スポンサーリンク

コード

ちなみに予約リストの構文チェックなどはしていません。
自分でわかれば良い用なので。

できたら保存します。
仮に名前は「stream_rec.app」としておきます。

~/mytools/stream_rec.app

保存したら1度開きます。ダブルクリックでもメニューから開くでもなんでもOK。
当然何もおきませんが、とにかく1度実行しておくことが肝要。

実行していないままだと初回起動時に「未使用のアプリケーションを開こうとしています」と言われ、自動的に録画が開始されません。

カレンダーイベントに登録

新規イベントから、
開始時刻、繰り返しを設定、
通知の カスタム > ファイルを開く、その他を選び、
今回作成した「stream_rec.app」を選択し、
「イベント開始時刻」を選んでok。

注意点としては
必ず予約リストの日時とイベント開始時刻(通知時刻)を合わせること。

1分前とかにするとスクリプトで取得している現在時刻と予約リストの日時がずれるために録画が開始されません。

スポンサーリンク

まとめ

ということで予約リスト化してみました。

前回の方法でも問題なく動くのですが、想定していたのは毎週決まった時間に配信される番組。

単発で急遽配信されるものについてはわざわざその為の設定ファイルを作る必要があるなど、ちょっと使い勝手が悪いことに気がつきました。

今回のものでも全体を通して2回日時を設定する必要があるのでまだ冗長な印象。
そのあたりも含めて次期バージョンで改良しているのですがそれはまた後日。

最後に改めて申し上げておきますが、
ここで紹介したものはあくまでも個人の知的好奇心から個人で利用するために素人がお勉強もかねて作ってみたもの、です。
その辺はよくご理解いただいた上で参考にしていただいたり遊んでいただいたり・・・なさってください。
つまりもろもろ自己責任でどうぞ。

それでは。

コメント

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