87fafa5891f306ca7c239c3c64f472ab69aa74f9
[chrisu/seepark.git] / wetter.at.pl
1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5 use 5.010;
6
7 use Web::Scraper;
8 use HTTP::Tiny;
9 use utf8::all;
10
11 my $url      = 'http://www.wetter.at/wetter/oesterreich/tirol/obsteig';
12 my $response = HTTP::Tiny->new->get($url);
13
14 # don't die. the server returns 500 _and_ a valid content.
15 # die "Failed to get '$url'.\n" unless $response->{success};
16
17 my $body = $response->{content};
18
19 my $s = scraper {
20     process "div.dayInfo",  "dayInfo" => "TEXT";
21     process "span.sunUp",   "sunUp"   => "TEXT";
22     process "span.sunDown", "sunDown" => "TEXT";
23     process "div.boxNow",   "boxNow"  => scraper {
24         process "div.title",    "title"    => "TEXT";
25         process "div.temp",     "temp"     => "TEXT";
26         process "div.icontext", "icontext" => "TEXT";
27         process "div.rain",     "rain"     => "TEXT";
28     };
29
30 };
31
32 my $res = $s->scrape($body);
33
34 my $timeregexp = qr/^.*?([0-9:]+).*?$/;
35
36 ( my $date    = $res->{dayInfo} ) =~ s/^.*, (\d+)\.(\d+)\.(\d+)$/$3-$2-$1/;
37 ( my $time    = $res->{boxNow}->{title} ) =~ s/$timeregexp/$1/;
38 ( my $sunup   = $res->{sunUp} ) =~ s/$timeregexp/$1/;
39 ( my $sundown = $res->{sunDown} ) =~ s/$timeregexp/$1/;
40 ( my $temp    = $res->{boxNow}->{temp} )
41     =~ s/Â?°//;    # real °, and "something" before?!
42 my ( $weather, $clouds )
43     = $res->{boxNow}->{icontext} =~ m|^([\w\s]+)\((\d+)% .*$|;
44 my ( $rain, $wind )
45     = $res->{boxNow}->{rain} =~ m|Niederschlag: (.+)Wind: (.+)|;
46
47 say 'Wetter in Obsteig (von wetter.at)';
48 say '---------------------------------';
49 say "Datum:\t$date";
50 say "Zeit:\t$time";
51 say "Sonne↑:\t$sunup";
52 say "Sonne↓:\t$sundown";
53 say "Temp:\t$temp°C";
54 say "Nied.:\t$rain";
55 say "Wind:\t$wind";
56 say "Wetter:\t$weather";
57 say "Bewölk:\t$clouds%";
58
59 say '';
60 say "$date;$time;$sunup;$sundown;$temp;$rain;$wind;$weather;$clouds";
61
62 __END__
63
64 =head1 NAME
65
66 wetter.at.pl - show weather information about Obsteig from wetter.at
67
68 =head1 COPYRIGHT AND LICENSE
69
70 Copyright 2017-2018, gregor herrmann <gregor@toastfreeware.priv.at>
71
72 Released under the same terms as Perl 5.
73