先ほどのエントリー( http://d.hatena.ne.jp/Akkiesoft/20110325/1301026377 )で作ったボットの、東京電力の電力使用状況を取得するスクリプトを公開します。MITライセンスでご自由にどうぞ。
電力使用状況は毎時15分〜30分ごろに更新されるとのことなので、35分ぐらいに実行されるようにすると良いでしょう。
しかしなんだ、東京電力電力供給状況API( http://tepco-usage-api.appspot.com/ )というイマドキ風なベンリモノが登場したようなので、(ただでさえ薄いはずの)需要は薄そうですな(笑)。
スクリプト(2011/3/26 3:00版)
(2011/3/26 3:00追記)東電のHTMLとCSVが変更されたため、スクリプトを更新しました。
古いスクリプトはこちら: http://d.hatena.ne.jp/Akkiesoft/20000111
/* warningが出るので宣言する */ $time = ''; $tstart = ''; $tend = ''; $tstat = ''; $data = getFile('http://www.tepco.co.jp/forecast/index-j.html'); $cnt = 0; foreach($data as $line) { if ($line) { if (strstr($line, 'class="heading-04"') !== FALSE) { if (strstr($data[$cnt-1], '-->') === FALSE) { /* このheading-04クラスはコメントアウトされている */ $cnt++; continue; } $time = strip_tags($line); $time = mb_convert_kana($time, 'ns'); if (preg_match_all('/([0-9]+)\:([0-9]+)/', $time, $match)) { $tstart = $match[0][0]; $tend = $match[0][1]; $tstat = $tstart.'〜'.$tend."\n停電実施グループの確認は東京電力ホームページを確認して下さい。"; } else if (strstr($time, '実施いたしません') !== FALSE) { $tstat = '実施されません'; } else { $tstat = '取得に失敗しました'; } break; } } $cnt++; } $time = strftime('%H', strtotime("-1 hour")); $time = intval($time); $csv = getFile('http://www.tepco.co.jp/forecast/html/images/juyo-j.csv'); /* ピーク時供給力 */ $peakData = explode(',', $csv[2]); $peak = $peakData[0]; $peakTime = $peakData[1]; $peakUpdate = '('.$peakData[2].' '.$peakData[3].'現在)'; /* 次のパースに邪魔になるので消えてもらう */ array_splice($csv, 0, 4); /* 電力実績取得 */ foreach($csv as $line) { if (preg_match('/'.$time.'\:00/', $line)) { $param = explode(',', $line); break; } } /* 使用率計算 */ $parcent = round($param[2] / $peak * 100, 2); if ($param[2] == '0') { print $time.'時台の使用量はまだCSVに記録されていないようです'; exit; } print <<<EOM {$time}時台の使用量: {$param[2]}万kW (昨日の同時間帯: {$param[3]}万kW) 本日のピーク時供給力{$peakUpdate}: {$peakTime}に{$peak}万kW供給可能 使用率: {$parcent}% 本日の計画停電実施予定: {$tstat} EOM; function getFile($url) { /* URLのファイルを取得→UTF-8に変換→行ごとに配列にして返す 取得失敗は考慮していない */ $data = file_get_contents($url); $data = mb_convert_encoding($data, 'utf-8', 'shift_jis'); $data = preg_replace('/(\r\n|\r|\n)/', "\n", $data); $data = explode("\n", $data); return $data; }
23時台の結果を反映したCSVはどうなるか
こちらは別件で、個人的に23時台の更新時(0:30ごろ更新)のCSVがどうなるのか気になっていたのですが、全ての項目が埋まる形になるようです。この次はきっと前日実績が消えて、当日実績が右にシフトするんではないかと思います。
2011/3/25 23:30 UPDATE DATE,TIME,当日実績(万kW),前日実績(万kW) 2011/3/25,0:00,2990,2920 2011/3/25,1:00,2850,2780 2011/3/25,2:00,2770,2690 2011/3/25,3:00,2710,2630 2011/3/25,4:00,2700,2610 2011/3/25,5:00,2830,2750 2011/3/25,6:00,3100,3060 2011/3/25,7:00,3350,3290 2011/3/25,8:00,3500,3540 2011/3/25,9:00,3580,3730 2011/3/25,10:00,3490,3720 2011/3/25,11:00,3440,3670 2011/3/25,12:00,3220,3440 2011/3/25,13:00,3330,3530 2011/3/25,14:00,3320,3480 2011/3/25,15:00,3300,3410 2011/3/25,16:00,3390,3420 2011/3/25,17:00,3450,3480 2011/3/25,18:00,3480,3590 2011/3/25,19:00,3280,3430 2011/3/25,20:00,3340,3490 2011/3/25,21:00,3260,3440 2011/3/25,22:00,3240,3410 2011/3/25,23:00,3080,3230