iCalデータの解析
そういえばこれまでiCalフォーマットというのを扱ったことなかったので、少し調べてた。
https://tools.ietf.org/html/rfc5545
試しにlivedoorで配信されてるiCal形式のお天気情報をローカルに保存。
http://weather.livedoor.com/weather_hacks/
$ wget http://weather.livedoor.com/forecast/ical/13/63.ics
ググって見つけた良さげなパッケージをインストール。
http://sabre.io/vobject/install/
$ composer require sabre/vobject ~3.3.3
ドキュメント見ながら、適当にスクリプトを書く。
<?php require_once 'vendor/autoload.php'; use Sabre\VObject; function puts($str) { echo $str . PHP_EOL; } $data = file_get_contents('./63.ics'); $vcalendar = VObject\Reader::read($data); puts($vcalendar->{'X-WR-CALNAME'}->getValue()); puts('------'); foreach ($vcalendar->VEVENT as $event) { puts($event->DESCRIPTION->getValue()); puts($event->SUMMARY->getValue()); puts('---'); }
実行結果
東京の天気 - livedoor weather ------ http://weather.livedoor.com/area/forecast/130010?r=ical20141014 [ 東京 ] 14日の天気は晴時々曇、最高気温は26℃ 最低気温は22℃でしょう。 晴時々曇 26℃/22℃ --- http://weather.livedoor.com/area/forecast/130010?r=ical20141015 [ 東京 ] 15日の天気は曇のち雨、最高気温は21℃ 最低気温は17℃でしょう。 曇のち雨 21℃/17℃ --- http://weather.livedoor.com/area/forecast/130010?r=ical20141016 [ 東京 ] 16日の天気は雨のち曇、最高気温は21℃ 最低気温は14℃でしょう。 雨のち曇 21℃/14℃ --- http://weather.livedoor.com/area/forecast/130010?r=ical20141017 [ 東京 ] 17日の天気は晴時々曇、最高気温は24℃ 最低気温は16℃でしょう。 晴時々曇 24℃/16℃ --- http://weather.livedoor.com/area/forecast/130010?r=ical20141018 [ 東京 ] 18日の天気は晴時々曇、最高気温は22℃ 最低気温は15℃でしょう。 晴時々曇 22℃/15℃ --- http://weather.livedoor.com/area/forecast/130010?r=ical20141019 [ 東京 ] 19日の天気は晴時々曇、最高気温は22℃ 最低気温は15℃でしょう。 晴時々曇 22℃/15℃ --- http://weather.livedoor.com/area/forecast/130010?r=ical20141020 [ 東京 ] 20日の天気は晴時々曇、最高気温は22℃ 最低気温は15℃でしょう。 晴時々曇 22℃/15℃ ---