on *:text:!weather *:#:{
if $sock(weather) { msg # A weather search is already in progress. | return }
set %weather.zip $2
set %weather.chan $chan
weather
}
alias weather {
write -c E:\weather.txt
sockopen weather weatherforyou.com 80
}
on *:sockread:weather:{
if $sockerr { echo -a * $!sockerr ( $+ $sockname $+ ): $sock($sockname).wsmsg | return }
sockread -f &weather
bwrite E:\weather.txt -1 -1 &weather
}
on *:sockclose:weather:{
if $file(E:\weather.txt) { weather.parse }
}
alias weather.parse {
var %loc,%tmp,%hum,%dew
.fopen w E:\weather.txt
.fseek -w w *was not found*
if !$feof { msg %weather.chan * Weather: Location $+([,%weather.zip,]) not found. | .fclose w | return }
else .fseek w 0
.fseek -w w *Reported at*
%loc = $gettok($gettok($gettok($fread(w),2,62),1,60),3-,32)
.fseek -w w *°f*
%tmp = $replace($gettok($gettok($fread(w),3,62),1,60),°,°)
.fseek -w w *Humidity:* | .echo -q $fread(w)
%hum = $gettok($gettok($fread(w),2,62),1,60)
.fseek -w w *Dewpoint* | .echo -q $fread(w)
%dew = $replace($gettok($gettok($fread(w),2,62),1,60),°,°)
.fclose w
msg %weather.chan * Weather for %loc Current: %tmp Humidity: %hum Dewpoint: %dew
unset %weather.*
}
on *:sockopen:weather:{
if $sockerr { echo -a * $!sockerr ( $+ $sockname $+ ): $sock($sockname).wsmsg | return }
sockwrite -n $sockname GET /cgi-bin/hw3/hw3.cgi?forecast=zandh&pands= $+ %weather.zip $+ &Submit=Get+Forecast HTTP/1.1
sockwrite -n $sockname Host: weatherforyou.com $+ $crlf $+ $crlf
}