WebService::Livedoor::Weather
Perl
概要
Livedoor Weather Web ServiceのPerlモジュール。
一応公式サイト?はここ?
※重要
2013/04/04 より XML による配信が終了したため、下記の情報は基本的には古い情報となっています。
詳細は JSON 対応の項を参照。
インストール
CPANから取得可能。
特別なことは何もないです。
使用方法
とても簡単です。
以下のような感じ。
use WebService::Livedoor::Weather; my $lwws = WebService::Livedoor::Weather->new; my $ret = $lwws->get($city_code, $day);
$retにLivedoor Weather Web Serviceで取得可能なXML要素が格納されて返ってきます。
XML要素の詳細はLivedoor Weather Web Serviceを参照。
上記の $city_code には都市を指定するコードが入ります。
都市とコードの対応は、http://weather.livedoor.com/forecast/rss/forecastmap.xmlを参照。
$day で、取得したい天気予報の日を指定します。
現状で指定可能なのは、today(今日)/tomorrow(明日)/dayaftertomorrow(明後日)です。
なお、WebService::Livedoor::Weatherではutf-8フラグが立ってしまうようなので、utf-8フラグを明示的に落としてやる必要があります。
$ret以下の全ての値に対して一々フラグを落とす処理をするのは面倒なので、何も考えずに以下の処理を入れておくのがおすすめです。
Unicode::RecursiveDowngrade->new->downgrade($ret);
詳細は、utf-8フラグ、Unicode::RecursiveDowngradeを参照。
JSON対応
2013/04/05 現在、XML による配信が終了し、JSON のみの配信となったようです。
WebService::Livedoor::Weather は、XML による配信が前提として作られていましたので、作動しなくなってしまいました(◞‸◟)
しかし、以下の github で早速 JSON 対応のモジュールがブランチされているので、これを使えば JSON 形式の配信に対応することが可能です。
https://github.com/kazeburo/WebService-Livedoor-Weather
が、JSON 形式にすると構造やフィールド名が微妙に変わってしまっているのと、city_idが全面的には変更となったため、WebService::Livedoor::Weather を入れ替えただけでは動きません。
関連する箇所を全て修正する必要があります。
参考
WebService::Livedoor::Weatherを使って遊びで作ったページ。
天気予報