RadikoPad ver.1.0.6 から、コマンドモードが装備されました。コマンドモードの良いところは、バッチファイルやPowershellなどのスクリプトから呼び出して使えるところです。
Radikaのように自動録音ツールとして使用したいというユーザーがいることは理解していますので、サポートはしませんが、一度簡単なサンプルを紹介しようと思っていました。
昨年12月のRadiko.jp がサイト仕様変更した影響で作業時間が取れなくなっていましたが、ようやく少し時間を取れたので、一番シンプルなDOSのバッチファイルにより、当日の番組を録音する手順を作りましたので紹介します。エリアフリーはサポートしません。
RadikoPadで決まった番組を自動録音したい人の参考になればと思います。
考え方
自動録音の考え方は、録音したい番組が終わって10分後にRadikoPadを自動起動するというものです。
RadikoPadのコマンドモードは、
- RadikoPad.exe <局ID> <YY/MM/DD>+<HH:MM>
- RadikoPad.exe <番組URL>
例)Radikopad.exe https://radiko.jp/#!/ts/FMT/20210211215500
という二通りありますが、このメモで使うのは前者の書式。
以下は、RadikoPadを初めて使用するPC(またはアカウント)で行った場合の手順です。
1. RadikoPadの初期設定を行う
まずはRadikoPadの初期設定を行い、聴取エリアやffmpegへのパス、保存フォルダーを正しく設定したあと、録音が正しく行えるかテストを行っておきます。
その後、RadikoPadを終了させます。(コマンドモードは、RadikoPad停止状態でないと動かない)
2. バッチファイルの作成
以下の例は、TBSラジオ、昼1時の番組を録音するバッチファイルです。
radikopad は、自分のOneDriveに、Radikoフォルダー → RadikoPad フォルダーという階層構造を作り、そこに置いています。
まず、RadikoPadフォルダーにcdコマンドで移動し、そのあとで RadikoPadのコマンドモードを起動します。
(1)TBSの(2)2021/02/11 13:00 から始まる番組を録音したい場合は、以下の通り。
.\radikopad.exe (1)TBS (2)2021/02/11+13:00
このコマンドをバッチファイルにしても、毎回日付を手動で変更しないとならないのでバッチファイルの中身としては意味がありません。問題は、日付の部分。
日付の部分を、自動で目的の日付に置き換えられれば、バッチファイルとして使用できます。日付部分を「%DATE%」とすれば、バッチファイルの中で自動的に当日の日付書式に置き換えられます。
>echo %DATE% 2021/02/12
と言うわけで、RadikoPad のコマンドモード本体は、
.\radikopad.exe TBS %DATE%+13:00
となります。「test.bat」 という名前で保存。
3.バッチファイルの動作確認
保存できたら実験。test.bat をダブルクリックするか、「開く」で実行します。TBS当日13:00からの番組が録音されるはずです。
以下のように、ffmpeg が実行開始され、録音ファイルが出来ればバッチファイルは成功。
テストが完了したら、バッチファイルを本番名に変更して置きます。
test.bat → tama.bat
4. タスクスケジューラへの登録
Unix の cron に相当するのが、Windowsのタスクスケジューラ。
タスクスケジューラは、Windowsメニューで「task」とタイプすれば検索できます。
見つかったらこれを起動。
ここからが、慣れるまでは一番面倒くさい作業。
タスクスケジューラを起動できたら、ウィンドウ右側の「基本タスクの作成」で、基本タスク作成ウィザードを開きます。
名前の登録ですが、TBSの平日13:00からは、たまむすび という番組なので、わかりやすいように、そのままたまむすび と入力します。
RadikoPad コマンドモードですが、番組終了後すぐにタイムフリー番組ダウンロードしようとすると失敗するので、10分経過後に実行されるようにセットします。(10分経過後なら、当日中いつでもOK。)たまむすび は15:30までの番組なので、実行は15:40 にセットします。
たまむすびは、月-金 週5日の番組ですが、タスクスケジューラには平日のみという設定はありません。
週1回のタスクを5個登録するか、毎日録音して土日分を捨てるかというやり方が簡単です。
以下の例は、2021/02/11以降、毎日 を録音対象にしようとしています。土日の録音分は不要なら消します。
次の操作は、そのまま次へ。
先ほどテストして名前を変えたバッチファイルをここで選択して、登録します。
以下のように登録。
登録したタスクの内容を確認して「完了」。
この時パスワードを聞かれたら、自分のパスワードを入力します。
5.動作確認
完了すると、最初の画面に戻って「アクティブなタスク」の中に、自分が登録したタスク名を探します。
登録タスクをダブルクリックして以下のように表示させます。
そして、タスクスケジューラから実際にタスクが起動するかどうか、「実行」ボタンをクリックして確認します。
ffmpeg実行画面が表示され、保存フォルダーに指定した場所にファイルが作成されれば、テストも完了。
あとは、毎日実際に設定した時間になった後、番組が録音フォルダーに自動で出来上がることを確認します。
本番動作確認
さて、テストは無事に完了したバッチファイルですが、本当にPCを放置しておいて自動録音されるか?
ここまで準備して、本番になったら失敗!ということはよくあること。
ドキドキしながら録音フォルダーを確認してみたところ、15:30終了番組が15:50に完了していました!
バッチファイル1個とタスクスケジューラ設定1個で1番組録音するというのは、以上の手順で出来ることが確認できました。
PCの状態に関して、私はPCを自宅に置いているので、画面のロックなどは行っておらず、デスクトップが表示された状態で放置しています。
6.保存フォルダーの工夫
保存フォルダーをOneDriveに設定しておけば、録音が終われば自動的にOneDriveと同期され、外出先でもスマホで番組を聴けるようになります。
radiko.jp のタイムフリーで良いじゃない?まったくその通り。ただし、聴取開始後、3時間以内 という制限は無くなりますので、途中で一旦停止させて、好きなタイミングで続きを聴くということができます。
7.バッチファイルの工夫
このページの例では、1番組を1タスクで録音しますが、録音したい番組が一日に数本あるなら、以下のように複数のコマンドを一つのバッチファイルに書き、一度に録音してしまうという手もあります。
.\radikopad.exe TBS %DATE%+13:00 .\radikopad.exe TFM %DATE%+16:00 .\radikopad.exe LFR %DATE%+17:30
ただし、テストを十分に行うこと。
また、24時を回ると、DATEコマンドの結果が翌日になるため、バッチファイルは失敗します。
このバッチファイルでは、24時をまたぐ番組には使用できません。
まとめ
RadikoPadのコマンドモードを使用しようとする場合、自動化できるかどうかは日付の与え方によります。
Excelシートの関数でコマンド作成すれば、日付計算が少しは楽になりますがExcelを起動しなくてはならないため、バッチファイルを作ることは出来るものの、自動化できないし、Excelを持っている人でないと使えません。
Powershell スクリプトにすればもっと書きやすくなるのですが、Powershell自体がハードルになってしまいそうです。
以上の理由から、Windows10上標準で使用できるものだけを使って、番組終了直後の当日だけ自動録音ができる方法を考えてみました。
プログラミング知識が必要になるため、録音したい番組によっては、今回紹介したバッチを作って実行してもうまくゆかないケースもあると思います。
以上は、RadikoPadを使用した自動録音の考え方の紹介であり、サポートはありません。
おはようございます。
radikopad の自動録音、思った以上にかんたんで驚きました。
これからは、復活したradikaと予約録音として使えるradikopad を組み合わせれば、今までと同じようにできるんだなあと感動しました。
radikoが、このまま平和に録音できる日々が続いてほしいです。
自動録音失敗のメモ
RadikoPadをタスクスケジューラから起動して自動録音するこの方法ですが、久しぶりに録音結果を確認してみたところ、なぜか 4/9(Fri) と 4/13(Tue) の録音ファイルが無いことに気付きました。
自動録音失敗していたようです。録音ファイルが全く存在しないので途中で異常終了したわけでもなさそう。
まだ、1週間圏内なのでダウンロードし直そうと思えば録音出来ますけど、面倒なので4/9分は放置。
本日4/13分はバッチファイルを再起動してみたところ、問題無く録音出来ましたのでバッチファイルの異常でもないみたいです。たまたま録音コマンドを発行した時刻にサーバーとの通信がうまくいかなかったのかな〜と思うことにします。
自動録音開始時刻にPCの画面を見ていれば、録音しているかどうかは気付くのですけど、今日は画面を見ていなかった模様。昨日4/12の録音は目の前でradikopadが起動したので見ていたのですが、いつもより録音時間が2分程度長かった印象です。(150分番組の録音時間がいつもだいたい10分。)
サーバー、混んでいるのかな〜?
追記
Radiko.JPの仕様変更によるものでした。RadikoPad v.1.0.9 で解決しました。
「7.バッチファイルの工夫」で複数番組を一気にバッチ録音するとありますが、いかにも非効率なので、次のようなやり方を試みてみました。
1.録音対象の番組をcsvファイルで一覧化する。
(例)ファイル名「radiko.csv」
LFR,01:00
FMT,13:00
QPR,22:00
2.バッチファイル内でfor構文で読み込み、radikoPadに引数として渡す。
for /f “tokens=1-2 delims=,” %%1 in (radiko.csv) do (
radikopad.exe %%1 %DATE%+%%2
)
構文自体に誤りはなく、radikopad.exeの部分をechoなどにして、csvからの要素の取り出しも
チェックしましたが結果は… 全くダウンロードが実行される気配もなく、実際ffmpegが起動もしていないようです(radikopadの設定でログを出力させる設定にしているが、何のログも出力されていない)。
一応サポートしないということは承知していますが、同様の事に挑戦を検討されるかたがいた場合、
FYIになればということで投稿しておきます。