【お知らせ】
 「radiko.jp」番組表の変更後の形式仕様を基にし、プログラムを修正・差し替えいたしました(4/20)。

【お知らせ】
 3/24現在、「radiko.jp」番組表の形式仕様が変更になったため、番組表の解析部分(18、27-38行目)を修正しないと動作しません。
 Webサイトのデータを使うというプログラムの性質上、このような状況は起こりえます。申し訳ありませんが、修正版の掲載までしばらくお待ちください。

 2010年3月15日より「radiko.jp」のWebサイトでラジオ局のサイマル放送が試験的に聴けるようになりました(参照記事)。手元にラジオがなくても、好きなラジオ放送が聴けるのでとても便利です。さらに、このサイトでは番組表も見ることができます。今回は、この番組表を利用して、好きなパーソナリティやゲストのアーティストが出演する時間を即座にメールで通知してくれるというプログラムを作ります。

プログラム~ラジオ出演者をメールで通知してくれるツール

 このプログラムは、「radiko.jp」の番組表を定期的にチェックして、指定したパーソナリティやアーティストが出演していることが分かったなら、番組と出演者をメールしてくれるというものです。メールの送信には、Gmailを使っているので、Gmailのアカウントが必要です。送信先のアドレスは携帯電話のメールなど任意のものを指定できます。

「radiko.jp」の番組表。地域限定なのが少し残念
「radiko.jp」の番組表。地域限定なのが少し残念
[画像のクリックで拡大表示]

 以下のなでしこのプログラムの一部を書き換えて、定期的に実行するように設定します。設定の方法は次のページ(プログラムの後)に詳細がありますので手順に沿ってやってみてください。

#-----------------------------------------------------------------------
# 好きなラジオ番組をメールで通知してくれるツール
#-----------------------------------------------------------------------
# 送信設定
メール宛先=「***@docomo.ne.jp」#アラートメールの送信先
GMAIL_ID=「***@gmail.com」GMAIL_PW=「***」
確認出演者=「オードリー,ゆず,大竹まこと,ジャニ」
事前アラート分=30 # 何分後の情報を調べるか
#-----------------------------------------------------------------------
# 番組表のダウンロード(24時から27時なら前日の番組表を参照する)
確認時刻=今に「0:{事前アラート分}:0」を時間加算。# N分後の内容をチェック
確認時刻を「:」で区切って「確認時」へ変数分配。確認時=INT(確認時)%24。
もし、(0<=確認時)かつ(確認時<=4)ならば
  昨日の「/」を「」に置換して、Dに代入。
違えば
  今日の「/」を「」に置換して、Dに代入。
番組URL=「http://radiko.jp/epg/newepg/epgapi.php?area_id=JP13&mode=today」
保存DIR=「{母艦パス}番組表キャッシュ\」。保存DIRにフォルダ作成。
キャッシュ=「{保存DIR}{D}.xml」
もし(キャッシュが存在?=いいえ)ならば
  番組URLをキャッシュへHTTPダウンロード
キャッシュを開いてSJIS変換して表XMLに代入。
#-----------------------------------------------------------------------
# 番組表の解析
結果=空。
表XMLから「prog」のタグ切り出して反復
  情報=空。
  番組名=XML要素復号処理(対象から「title」のタグ切り出し)。
  開始時刻=対象の「prog」から「ftl」をタグ属性取得してトリム。
  終了時刻=対象の「prog」から「tol」をタグ属性取得してトリム。
  出演者=XML要素復号処理(対象から「pfm」のタグ切り出し)。
  解説=XML要素復号処理(対象から「desc」のタグ切り出し)。
  #「{番組名}:{開始時刻}:{終了時刻}:{出演者}:{解説}」をメモ記入。
  開始時刻から終了時刻で時刻確認処理。
  もし、それならば
    確認出演者を「,」で区切って反復
      もし((出演者&解説)で対象が何文字目>0)ならば
        結果=結果&「{番組時刻}>{番組名}({対象})」&改行。
●XML要素復号処理(S)
  Sのタグ削除
  HTMLエンティティ復号
  英数半角変換
  空白除去
#-----------------------------------------------------------------------
# アラートの送信
もし、結果≠空ならば
  メール件名=「ラジオアラート:{今日} {今}」
  メール本文=結果。
  GMAIL_IDのGMAIL_PWでGMAIL送信
終わる。
#-----------------------------------------------------------------------
●時刻確認処理(開始時刻から終了時刻で)
  抽出文字列を「開始時,__,終了時,__」へ変数分配。
  開始時=開始時刻の0から2文字抜き出す
  終了時=終了時刻の0から2文字抜き出す
  開始時=INT(開始時)%24 # 24時を超えた時間を普通の時刻に直す
  終了時=INT(終了時)%24
  もし、開始時>終了時ならば # 例) 23:00-02:00
    終了時=終了時+24
    もし、確認時<12ならば、確認時=確認時+24
  それは((開始時≦確認時)かつ(確認時≦終了時))
#-----------------------------------------------------------------------