cronを使ってRadikoの番組を録音しているが、crontabのエントリを簡単に書けるようなブックマークレットを書いた。(ベースはChatGPTにお願いした)

Radikoのサイトで録音したい番組のページを開いてブックマークレットを実行すると、crontabのエントリが作成される。

例えば、Radikoのサイトで https://radiko.jp/#!/ts/LFR/20250206030000 を開いた状態で実行すると、

00 03 * * 4 /home/htakeuchi/bin/ripdiko.sh LFR

のようなエントリが出力される。

このブックマークレットは週一の番組を前提にしているため、月〜金で毎日放送している番組なら、

00 18 * * 1-5 /home/htakeuchi/bin/ripdiko.sh TBS

のように手で修正する必要がある。

(function () {
  // URL例: https://radiko.jp/#!/ts/LFR/20250206030000
  var url = window.location.href;
  var match = url.match(/#!\/ts\/([^\/]+)\/(\d{14})/);
  if (!match) {
    alert("URLから必要な情報が取得できませんでした。");
    return;
  }
  var station = match[1];
  var timestampStr = match[2];
 
  var year   = parseInt(timestampStr.substring(0, 4), 10);
  var month  = parseInt(timestampStr.substring(4, 6), 10); // 1~12
  var day    = parseInt(timestampStr.substring(6, 8), 10);
  var hour   = parseInt(timestampStr.substring(8, 10), 10);
  var minute = parseInt(timestampStr.substring(10, 12), 10);
 
  var date = new Date(year, month - 1, day, hour, minute);
 
  var dowNum = date.getDay();
 
  var formattedHour = (hour < 10 ? "0" : "") + hour;
  var formattedMinute = (minute < 10 ? "0" : "") + minute;
 
  var cronEntry = formattedMinute + " " + formattedHour + " * * " + dowNum +
                  " /home/htakeuchi/bin/ripdiko.sh " + station;
 
  prompt("crontabエントリ:", cronEntry);
})();