# This script is for weather, based on zip code.
#
# To use, try the following commands:
#
# !weather zipcode
#
# This returns current weather as reported on wutherground.com
#
# !temp zipcode
#
# This returns current temperature as reported on wutherground.com
#
# This script was originally written as an addon for another bot, that uses !
# as it's trigger.
#
#
# Revision 10.10.03 - Now requires LWP::UserAgent to run. Now uses
# wutherground.com instead of weather.com for weather reports, no longer
# supports "forecast"
#
# Revision 08.26.03 - No longer requires Geo::Weather Module to run
#
# Originally Created On 08.04.03
#
# Thanks to b2s (bored2sleep@hotmail.com) for telling me about
# wutherground.com's raw format weather pages and sending me his xchat weather
# script, this one has many similarities
#
use Irssi;
use LWP::UserAgent;
$VERSION = "2.0";
%IRSSI = (
author => 'PrincessLeia2',
contact => 'lyz\@princessleia.com ',
name => 'weatherbot',
description => 'a weatherbot that provides weather and forecast based on zip code',
license => 'GNU GPL v2 or later',
url => 'http://www.princessleia.com'
);
sub event_privmsg {
my ($server, $data) =@_;
my ($target, $text) = $data =~ /^(\S*)\s:(.*)/;
return if ( $text !~ /^!/i );
if ( $text =~ /^!weather (\d\d\d\d\d)/i )
{
my ($zip) = $text =~ /!weather (.*)/;
my $ua = new LWP::UserAgent;
$ua->timeout(10);
my $results = $ua->get("http://www.wunderground.com/auto/raw/$zip");
my @badarray = split(/\n/, $results->content);
if ( ! $results->is_success ) {
$server->command ( "msg $target Sorry, no weather available for your location, please try !weather zipcode");
}
elsif ( $badarray[1] =~ /<center><b>Search not found:/ ) {
$server->command ( "msg $target Sorry, no weather available for your location, please try !weather zipcode");
}
else {
my @goodarray = split(/[|]\s*/, $results->content);
$server->command ( "msg $target \002Current Conditions for $goodarray[18], $goodarray[19] at $goodarray[0]:\002 $goodarray[8] \002Temp:\002 $goodarray[1] F \002Humidity:\002 $goodarray[4] \002Barometer:\002 $goodarray[7] \002Wind:\002 $goodarray[6] mph");
}
}
elsif ( $text =~ /^!weather (.*)/i )
{
$server->command ( "msg $target Please type !weather zipcode");
}
elsif ( $text =~ /^!temp (\d\d\d\d\d)/i )
{
my ($zip) = $text =~ /!temp (.*)/;
my $ua = new LWP::UserAgent;
$ua->timeout(10);
my $results = $ua->get("http://www.wunderground.com/auto/raw/$zip");
my @badarray = split(/\n/, $results->content);
if ( ! $results->is_success ) {
$server->command ( "msg $target Sorry, no temperature available for your location, please try !temp zipcode");
}
elsif ( $badarray[1] =~ /<center><b>Search not found:/ ) {
$server->command ( "msg $target Sorry, no temperature available for your location, please try !temp zipcode");
}
else {
my @goodarray = split(/[|]\s*/, $results->content);
$server->command ( "msg $target \002Current Temperature for $goodarray[18], $goodarray[19]:\002 $goodarray[1] F");
}
}
elsif ( $text =~ /^!temp (.*)/i )
{
$server->command ( "msg $target Please type !temp zipcode");
}
}
Irssi::signal_add('event privmsg', 'event_privmsg');