On *:START: {
if (!$hget(feelslike)) { hmake feelslike 20 }
if ($isfile(feelslike.hsh)) { hload -s feelslike feelslike.hsh }
}
on *:LOAD: {
if (!$hget(feelslike)) { hmake feelslike 20 }
if ($isfile(feelslike.hsh)) { hload -s feelslike feelslike.hsh }
}
;====================
; Add or Remove Users
;====================
on *:TEXT:!fladd *:#: {
hadd -m feelslike $nick $2
.notice $nick You've been added to the hash table with code $2
hsave -s feelslike feelslike.hsh
msg # Added, use !fl
}
on *:TEXT:!fldel *:#: {
if (($nick == $2) || ($nick == CriminalMind)) {
hdel feelslike $nick $2
msg # User deleted successfully.
}
else { msg # Permission Denied. }
}
;==============================
; Main Trigger, set search vars
;==============================
on *:TEXT:!fl*:#:{
.ignore -cu5 $nick 2
if ($sock(feelslike)) sockclose feelslike
if ($1 == !flx) {
set %fl.trig extra
}
if ($1 == !fl) {
set %fl.trig fl
}
if ($1 == !flf) {
set %fl.trig cond
}
if ($2) {
if ($hget(feelslike,$2) == $null) {
msg # No location specified for $2 $+ .
}
else {
set %userloc $hget(feelslike,$2)
sockopen feelslike www.intellicast.com 80
sockmark feelslike msg #
set %fl.nick $2
}
}
if (!$2) {
if ($hget(feelslike,$nick) == $null) {
msg # No location specified for $nick $+ .
}
else {
set %userloc $hget(feelslike,$nick)
sockopen feelslike www.intellicast.com 80
sockmark feelslike msg #
set %fl.nick $nick
}
}
}
;===============================
; Open socket, retrieve the info
;===============================
on *:SOCKOPEN:feelslike: {
sockwrite -nt $sockname GET /Local/Weather.aspx?location= $+ %userloc HTTP/1.1
sockwrite -nt $sockname Host: www.intellicast.com
sockwrite -nt $sockname Connection: close
sockwrite -nt $sockname $crlf
}
on *:SOCKREAD:feelslike: {
if ($sockerr) { $sock(feelslike).mark Socket Error: $sock(feelslike).wsmsg }
var %sockreader
sockread %sockreader
;==================
; Set the info vars
;==================
if (%fl.trig == fl) {
if (*Feels Like:* iswm %sockreader) {
set %fl.t $remove($gettok(%sockreader,7,32),°,) $+ °
set %fl.tc $round($calc(($remove(%fl.t,°) - 32) * (5/9)), 2) $+ °C
set %fl.r $round($calc($remove($gettok(%sockreader,7,32),°) + 459.66), 2) $+ °
}
if (*Weather Report in* iswm %sockreader) {
set %fl.locmsg $remove($gettok(%sockreader,2-,32),Weather Report in, -)
}
if (*Heat Index: * iswm %sockreader) {
sockread %sockreader
set %fl.hi $replace($remove(%sockreader,
, | ),°,°)
set %fl.hic $round($calc(($remove(%fl.hi,°) - 32) * (5/9)), 2) $+ °C
}
if (*Visibility* iswm %sockreader) {
sockread %sockreader
set %fl.vis $replace($remove(%sockreader,, | ),°,°)
set %fl.visk $round($calc($remove(%fl.vis,mi)*1.61), 2) $+ km
}
if (*Dew Point* iswm %sockreader) {
sockread %sockreader
set %fl.dew $replace($remove(%sockreader,, | ),°,°)F
set %fl.dewc $round($calc(($remove(%fl.dew,°) - 32) * (5/9)), 2) $+ °C
}
if (*Wind: * iswm %sockreader) {
sockread %sockreader
set %fl.wind $remove(%sockreader,, | )
set %fl.windk $round($calc($remove(%fl.wind,mph)*1.61), 2) $+ km/h
}
if (*Direction: * iswm %sockreader) {
sockread %sockreader
set %fl.dir $replace($remove(%sockreader,, | ),°,°)
}
if (*Humidity: * iswm %sockreader) {
sockread %sockreader
set %fl.hum $remove(%sockreader,, | )
}
if (*Pressure: * iswm %sockreader) {
sockread %sockreader
set %fl.pre $remove(%sockreader,, | )
set %fl.prek $round($calc($remove(%fl.pre,") * 33.86), 2) $+ mb
}
if (*Gusts: * iswm %sockreader) {
sockread %sockreader
set %fl.gusts $remove(%sockreader,, | )
set %fl.gustsk $round($calc($remove(%fl.gusts,mph)*1.61), 2) $+ km/h
}
if (*As of* iswm %sockreader) {
set %fl.time $remove($left(%sockreader,16),As of)
}
if (** iswm %sockreader) {
sockread %sockreader
set %fl.conditions $nohtml(%sockreader)
}
}
if (%fl.trig == extra) {
if (*UV Index:* iswm %sockreader) {
set %fl.uvindex %sockreader
}
if (*Relative Humidity:* iswm %sockreader) {
set %fl.relhum %sockreader
}
if (*Precipitation:* iswm %sockreader) {
set %fl.precip %sockreader
}
if (*Snow:* iswm %sockreader) && ($right(%sockname,1) == %) {
set %fl.snow %sockreader
}
if (*Cloud Coverage:* iswm %sockreader) {
set %fl.clco %sockreader
}
if (** iswm %sockreader) {
set %fl.desc $remove(%sockreader,,,)
}
if (*Sunrise:* iswm %sockreader) {
set %fl.sunr $remove(%sockreader,,, )
}
if (*Sunset:* iswm %sockreader) {
set %fl.suns $remove(%sockreader,,)
}
if (*Moonrise:* iswm %sockreader) {
set %fl.moonr $remove(%sockreader,,, )
}
if (*Moonset:* iswm %sockreader) {
set %fl.moons $remove(%sockreader,,)
}
if (*Moonphase: * iswm %sockreader) {
sockread %sockreader
set %fl.moonp $remove(%sockreader,,, )
}
}
if (%fl.trig == cond) {
if (id="detail0" isin %sockreader) {
sockread %sockreader
sockread %sockreader
sockread %sockreader
sockread %sockreader
sockread %sockreader
if (evening isin %sockreader) {
sockread %sockreader
set %fl.condi $regsubex($nohtml(%sockreader),/( -?(\d+)F)/g,$+(\1,$chr(32),$chr(40),$round($calc((\2 - 32)*(5/9)),2),C,$chr(41)))
}
sockread %sockreader
set %fl.condi $regsubex($nohtml(%sockreader),/( -?(\d+)F)/g,$+(\1,$chr(32),$chr(40),$round($calc((\2 - 32)*(5/9)),2),C,$chr(41)))
sockread %sockreader
if (evening isin %sockreader) {
set %fl.condie $regsubex($nohtml(%sockreader),/( -?(\d+)F)/g,$+(\1,$chr(32),$chr(40),$round($calc((\2 - 32)*(5/9)),2),C,$chr(41)))
}
}
}
}
;===================================
; Close the socket, message the info
;===================================
on *:SOCKCLOSE:feelslike: {
if (%fl.trig == fl) {
$sock(feelslike).mark 7Currently for %fl.nick $+ : %fl.conditions & %fl.tc ( $+ %fl.t $+ F $+ ) :: 7Heat Index: %fl.hic ( $+ $remove(%fl.hi,$chr(32)) $+ F $+ ) :: 7Humidity: %fl.hum :: 7Wind: %fl.dir at %fl.windk ( $+ $remove(%fl.wind,$chr(32)) $+ ) :: $iif($left(%fl.gustsk,1) == 0,,7Gusts: %fl.gustsk ( $+ $remove(%fl.gusts,$chr(32)) $+ ) ::) 7Visibility: %fl.visk ( $+ $remove(%fl.vis,$chr(32)) $+ ) :: 7Dew Point: %fl.dewc ( $+ $remove(%fl.dew,$chr(32)) $+ F $+ ) :: 7Pressure: %fl.prek ( $+ $remove(%fl.pre,$chr(32)) $+ ) :: 7Updated: %fl.time
;unset %fl.*
unset %userloc
}
if (%fl.trig == extra) {
$sock(feelslike).mark 7Currently for %fl.nick $+ : %fl.uvindex :: %fl.relhum :: %fl.precip :: %fl.snow :: %fl.clco :: %fl.sunr :: %fl.suns :: %fl.moonr :: %fl.moons : Moonphase: %fl.moonp
unset %fl.*
unset %userloc
}
if (%fl.trig == cond) {
if (%fl.condie == $null) {
$sock(feelslike).mark Forecast: %fl.condi
}
if (%fl.condie != $null) {
$sock(feelslike).mark Forecast: %fl.condi %fl.condie
}
unset %fl.*
unset %f.x
unset %userloc
}
}
;===================================
; Aliases
;===================================
alias -l nohtml {
var %x, %i = $regsub($1-,/(^[^<]*>|<[^>]*>|<[^>]*$)/g,$null,%x), %x = $remove(%x, )
return %x
}
on *:EXIT: {
if ($hget(feelslike))
hfree feelslike
}
|