JR西日本の1分以上の遅れを通知するPHP
カテゴリ:Code Archives, PHP, サーバー 投稿日:2017年4月29日お久しぶりです。
昨日始発より、JR西日本のリアルタイム列車走行位置表示機能が始まりました。
こちら
1分単位の遅れや列車の駅間の走行位置を1分毎に表示できます。残念ながら自動更新には対応していないので1分毎に更新ボタンを押さねばなりません。
でもやはり新しいサービスとあって、デザインはシンプルで好感が持てます。
さて、この遅れ情報、Chromeの開発者ツールで見てみると、
JSONで提供されていました。
これじゃこっちでもカンタンに遅れ情報出せるやんと思って、とりあえず1分以上遅れていたらメールを送るPHPを書いてみました。
$jsonのURLは、調べたい路線のページアドレスに対して
環状線ならhttps://www.train-guide.westjr.co.jp/osakaloop.htmlの
osakaloopが路線名なのでJSONは
https://www.train-guide.westjr.co.jp/api/v1/osakaloop.json
です。
また、列車番号は、冊子型の時刻表を見たり、えきから時刻表の路線名から検索したりすれば調べられます。
<?php $json="https://www.train-guide.westjr.co.jp/api/v1/kobesanyo.json"; $obj=json_decode(file_get_contents($json)); //時刻 $update=$obj->update; //時刻データを日本語にする。substrを使うのはデータにミリ秒まで含まれていてstrtotimeが上手く働かないから $strtime=date("m月d日 H時i分",strtotime(substr($update,0,-5))); //列車番号 $targetid="152B"; //メールアドレス $mail="[email protected]"; $trains=$obj->trains; for($i=0;$i<count($trains);$i++){ $train=$trains[$i]; $trainid=$train->no; if($trainid==$targetid){ //遅れを取得 $delay=$train->delayMinutes; if($delay>0){ //種別・行き先取得 $type=$train->displayType; $dest=$train->dest; $dest=$dest->text; //メール文章 $text=$strtime."現在".$type." ".$dest."行きは".$delay."分遅れています。"; } break; } } if(isset($text)){ //mb_send_mail(メアド,件名,文章)の順番 mb_send_mail($mail, "JR遅れメール", $text); }
これをCRONなどで毎日乗る電車の発車時刻の数分前などに実行すれば、JRの発表よりもより細かく遅れを知ることができます。