Wetterbericht

oenone schrieb:
vielen dank, dass es nicht mehr funktioniert hat, ist mir auch schon aufgefallen :)
HTML parsen ist doof. :belehren:
Vor allem, wenn es eine XML-Schnittstelle gibt.

Ohne grossartige Pfuscherei in 42 Zeilen, die sich bestimmt auf eine einzige kuerzen lassen... :)
Code:
#!/usr/bin/perl -w
# vim: set sw=4 ts=4
use strict;
use warnings;
use XML::Simple;
use LWP::Simple;
use Getopt::Std;

my $opt = {};
Getopt::Std::getopts("hi:u:", $opt);

if($opt->{'h'}) {
        help();
} elsif($opt->{'i'} && $opt->{'u'}) {
        my $url = 'http://xml.weather.yahoo.com/forecastrss?';
        $url .= 'p='.$opt->{'i'}.'&';
        $url .= 'u='.$opt->{'u'};

        my $xml = get($url);
        my $ref = XMLin($xml)->{'channel'};

        print $ref->{'item'}->{'title'}, ":\n",
                  $ref->{'item'}->{'yweather:condition'}->{'temp'}, " Degrees, ",
                  $ref->{'item'}->{'yweather:condition'}->{'text'}, "\n\n",
                  "Sunrise: ", $ref->{'yweather:astronomy'}->{'sunrise'}, "\n",
                  "Sunset:  ", $ref->{'yweather:astronomy'}->{'sunset'}, "\n";
} else {
        help();
}


sub help
{
        print "$0 [OPTIONS]\n",
                  "     -h      ya lookin at me, baby ;-)\n",
                  "     -i      your location code from http://weather.yahoo.com/\n",
                  "     -u      your degree unit [c=celsius,f=fahrenheit]\n\n",
                  "Example:\n",
                  "     $0 -i GMXX1541 -u c\n";
        exit(0);
}
 
Zurück
Oben