2007年1月20日土曜日

[Perl] Livedoor Weather Web Service

WebService::Livedoor::Weather をインストールして使ってみた。

ソース
#!/usr/bin/perl -w
use WebService::Livedoor::Weather;

my $lwws = WebService::Livedoor::Weather->new();
my $ret = $lwws->get('63','today'); # tokyo
print "Content-Type: text/html\n\n";
print "location-city: $ret->{location}{city}";
print "title: $ret->{title}";
print "telop: $ret->{telop}";
print "forecastdate: $ret->{forecastdate}";
print "link: $ret->{link}";
print "publictime: $ret->{publictime}";
print "max: $ret->{temperature}{max}{celsius}";
print "min: $ref->{temperature}{min}{celsius}";
print "description: $ret->{description}";
print "pinpoint: $ret->{pinpoint}{location}[9]{title}";
print "image-title: $ret->{image}{title}";
print "{image}{url} width=$ret->{image}{width} height=$ret->{image}{height}>";
exit;

これをブラウザで実行するとこんな感じ。

画像

これは utf8 で出力されているが、Encode::from_to で他の文字コードに変換しようとすると、Unicode フラグが立っているので
Cannot decode string with wide characters at /usr/local/lib/perl5/5.8.4/mach/Encode.pm line 184.
となる。utf8::encode で Unicode フラグを落として Encode::from_to すればOK。
use WebService::Livedoor::Weather;
use Encode;
my $lwws = WebService::Livedoor::Weather->new();
my $ret = $lwws->get('63','today');
my $tokyo = "$ret->{location}{city} : $c_ret->{telop}";
utf8::encode($tokyo);
Encode::from_to( $tokyo, "utf-8", "sjis" );

降水確率が取得できると、うれしいなぁ

参考)
Livedoor Weather Web Service / LWWS
WebService::Livedoor::Weather - blog.nomadscafe.jp
Perl 5.8.x Unicode関連

0 件のコメント: