0 LIKES
Snippet
Weather OnText 2.1
In Category Buzzen Posted by err0r On 09/06/10
This is an update to my weather script that I've had for awhile. I just noticed it in one of my scripts so I thought I would pass it on. It just includes the time as well as the weather. It will keep up with the users previous request so future requests can be made using .w only. As always feel free to edit this and use however you wish.
;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Weather v2.1 ;;; ;;; Created by err0r ;;; ;;; http://www.tg007.net ;;; ;;; use .w <location> ;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;; menu channel { $iif($istok(%Weatherstore.Log,$chan,44),$style(1)) Weather $chan : $iif($istok(%Weatherstore.Log,$chan,44),set %Weatherstore.Log $remtok(%Weatherstore.Log,$chan,1,44),set %Weatherstore.Log $addtok(%Weatherstore.Log,$chan,44)) Weather Settings .Clear Log : hfree weather | $iif($exists(weatherhash.txt),/remove -d weatherhash.txt) | hmake weather 50 .View Log : weatherlog - } on *:start: { hmake weather 50 | if ($exists(weatherhash.txt)) { hload weather weatherhash.txt } } on *:exit: { hfree weather } on *:text:*:#: { var %text $regsubex($1-, /\[(?:style\x20.*?|/style)\]/gi,$null) tokenize 32 %text if ($1 == .w) && (!%flood.ck) && ($istok(%Weatherstore.Log,$chan,44)) { set -u3 %flood.ck on if (!$2) && (!$hget(weather,$address($nick,1))) { raw notice $chan $nick Sorry $nick there is no weather infomation saved for you. Please use .w <location/zip> | halt } if (!$2) && ($hget(weather,$address($nick,1))) { unset %weather.* | set %weather.search $hget(weather,$address($nick,1)) } if ($2) { unset %weather.* | set %weather.search $2- | hadd -m weather $address($nick,1) $2- } hsave -o weather weatherhash.txt | set %weather.chan $chan | getweather } } alias getweather { unset %weather.searchtype | set %weather.searchtype weather+ | sockclose weather | set %weather.check 1 | sockopen weather search.yahoo.com 80 } alias converttemp { if ($right($1,1) == f) { return $round($calc((($remove($1,f) - 32) * 5) / 9),1) $+ C } else { return $round($calc(($remove($1),c) * 1.8) + 32),1) $+ F } } on *:sockopen:weather:{ write -c weather.txt if ($sockerr) { sockclose $sockname | halt } sockwrite -n $sockname GET /search?p= $+ %weather.searchtype $+ $replace(%weather.search,$chr(32),+,$chr(44),$chr(37) $+ 2C) HTTP/1.1 sockwrite -n $sockname HOST: search.yahoo.com sockwrite -n $sockname CONNECTION: Keep-alive sockwrite -n $sockname $str($crlf,2) } on *:sockread:weather: { if ($sockerr > 0) return var %weather if (!%weather.time) { sockread -f %weather } else { sockread -f %weather } if (!%weather.time) { if ($regex(%weather,/Extended <b>weather <\/b>forecast for (.*?)<\/a>/)) { set %weather.info $chr(91) $remove($regml(1),<b>,</b>) $chr(93) <timehere> | inc %weather.check } if ($regex(%weather,/<\/div><p>Currently: (.*?)<\/p><p>(.*?)<\/p><p>/)) { set %weather.info %weather.info $remove($regml(1),°) / $converttemp($remove($regml(1),°)) - $regml(2) | inc %weather.check } if ($regex(%weather,/<p>Tomorrow<\/p><p>(.*?)<\/p><p>(.*?) \| (.*?)<\/p>/)) { set %weather.info %weather.info -- Tomorrow: $regml(1) - High: $remove($regml(2),°) / $converttemp($remove($regml(2),°)) - Low: $remove($regml(3),°) / $converttemp($remove($regml(3),°)) | inc %weather.check } } if (%weather.time) { if ($regex(%weather,/<b>Time<\/b> is <b>(.*?)<\/b>/)) { set %weather.info $replace(%weather.info,<timehere>,Currently: $regml(1) <timehere> ) | inc %weather.check } if ($regex(%weather,/ \((.*?)\) on (.*?) -/)) { set %weather.info $replace(%weather.info,<timehere>,$regml(1) $regml(2) - ) | inc %weather.check } } if (%weather == 0) || (%weather.check) { if (%weather.time) && (%weather.check == 3) { sockclose $sockname .msg %weather.chan $iif(%weather.info,$v1,Search for $replace(%weather.search,$chr(37) $+ 20,$chr(32)) was not successful. Please refine your search.) unset %weather.* } if (!%weather.time) && (%weather.check == 4) { set %weather.searchtype time+ | set %weather.time on | sockclose weather | set %weather.check 1 | sockopen weather search.yahoo.com 80 } } } on *:sockclose:weather: { if (%weather.time) || (!%weather.info) { .msg %weather.chan $iif(%weather.info,$remove($v1,<timehere>),Search for $replace(%weather.search,$chr(37) $+ 20,$chr(32)) was not successful. Please refine your search.) unset %weather.* } } alias weatherlog { if (!$window(@weatherlog)) { /window -blk -t2,21 +benstx @weatherlog verdana 11 } clear @weatherlog | aline @weatherlog $chr(9) Address $chr(9) Weather Search | aline @weatherlog $chr(160) %hh = 1 | %hhn = $hget(weather, 0).item while (%hh <= %hhn) { aline -p @weatherlog $+(%hh,.) $chr(9) $hget(weather,%hh).item $chr(9) $hget(weather,%hh).data | inc %hh } }
Comments 0
You must be logged in to comment.