アニメの放送が遅れたら自分にリプライを飛ばす

  • 1
    Like
  • 0
    Comment

自宅のレコーダーは番組延長に対応しておらず、延長した場合は自分で再度設定をする必要がありました。
以前卒業研究で研究室に篭っていた頃、遅れていることに気が付かなかったため「ご注文はうさぎですか?」の一部エピソードを逃してしまうという大変痛い事件があったため、放送が遅れたら遅れていることを知らせるプログラムを書きました。

内部でしょぼいカレンダーとTwistOAuthを使用しています。

program.php
<?php
//ファイルを用意してトークンを準備する
require __DIR__ . '/vendor/autoload.php';
$to = new TwistOAuth('CK', 'CS', 'AT', 'TS');
//チャンネルID
$ChID = "128";
//番組ID
$TID = "3893";
//あなたのTwitterID
$screen_name = "@MATTENN";
//通常の放送時間を設定。(月日は自動的に設定されます。25:30であれば01:30のように記述)
$onair_time = "01:00";
$station_array = json_decode(file_get_contents('https://gist.githubusercontent.com/MATTENN/c3bc9947d06e7b64a1eb827d182af04f/raw/e1d391ddf113d4614b9966deb4ca5df90ed6dd2c/tv'),true);
$count_once = false;
$xml = simplexml_load_file('http://cal.syoboi.jp/db.php?Command=ProgLookup&TID='.$TID.'&ChID='.$ChID);
$sta_xml = simplexml_load_file('http://cal.syoboi.jp/db.php?Command=TitleLookup&TID='.$TID.'&ChID='.$ChID);
foreach($xml->ProgItems->ProgItem as $anime_prog){
    $anime_date = new DateTime($anime_prog->StTime);
    if(strtotime($anime_date->format('Y/m/d H:i:s')) > time()){
        //放送されていないエピソード
        if($anime_date->format('H:i') != $onair_time){
            $to->post('statuses/update', 'status='.$screen_name.' '.$station_array[$ChID]."で放送予定の「".$sta_xml->TitleItems->TitleItem->Title."」".$anime_prog->Count."話は放送時間が通常と異なっています。");
        }else{
            $to->post('statuses/update', 'status='.$screen_name.' '.$station_array[$ChID]."で放送予定の「".$sta_xml->TitleItems->TitleItem->Title."」".$anime_prog->Count."話は通常通り放送されます。");
        }
        if ($count_once == true) {
            break;
        }
    }
    $count_once = true;
}
?>

あとはcronなどで放送時間前に叩いておけば、その都度チェックが走り自分にリプライが飛びます。
書いた後に気づいたのですが、追従対応のレコーダに買い換えれば不要な気がします。