View difference between Paste ID: KrMZqmpu and m2sDpKw9
SHOW: | | - or go back to the newest paste.
1
On *:START: {
2
  if (!$hget(feelslike)) { hmake feelslike 20 }
3
  if ($isfile(feelslike.hsh)) { hload -s feelslike feelslike.hsh }
4
}
5
6
on *:LOAD: {
7
  if (!$hget(feelslike)) { hmake feelslike 20 }
8
  if ($isfile(feelslike.hsh)) { hload -s feelslike feelslike.hsh }
9
}
10
11
;====================
12
; Add or Remove Users
13
;====================
14
15
on *:TEXT:!fladd *:#: {
16
  hadd -m feelslike $nick $2
17
  .notice $nick You've been added to the hash table with code $2
18
  hsave -s feelslike feelslike.hsh
19
  msg # Added, use !fl
20
}
21
22
on *:TEXT:!fldel *:#: {
23
  if (($nick == $2) || ($nick == CriminalMind)) {
24
    hdel feelslike $nick $2
25
    msg # User deleted successfully.
26
  }
27
  else { msg # Permission Denied. }
28
} 
29
30
;==============================
31
; Main Trigger, set search vars
32
;==============================
33
34
on *:TEXT:!fl*:#:{
35
  .ignore -cu5 $nick 2
36
  if ($sock(feelslike)) sockclose feelslike
37
  if ($1 == !flx) {
38
    set %fl.trig extra
39
  }
40
  if ($1 == !fl) {
41
    set %fl.trig fl
42
  }
43
  if ($1 == !flf) {
44
    set %fl.trig cond
45
  }
46
  if ($2) {
47
    if ($hget(feelslike,$2) == $null) {
48
      msg # No location specified for $2 $+ .
49
    }
50
    else {
51
      set %userloc $hget(feelslike,$2)
52
      sockopen feelslike www.intellicast.com 80
53
      sockmark feelslike msg #
54
      set %fl.nick $2
55
    }
56
  }
57
  if (!$2) {
58
    if ($hget(feelslike,$nick) == $null) {
59
      msg # No location specified for $nick $+ .
60
    }
61
    else {
62
      set %userloc $hget(feelslike,$nick)
63
      sockopen feelslike www.intellicast.com 80
64
      sockmark feelslike msg #
65
      set %fl.nick $nick
66
    }
67
  }
68
}
69
70
;===============================
71
; Open socket, retrieve the info
72
;===============================
73
74
on *:SOCKOPEN:feelslike: {
75
  sockwrite -nt $sockname GET /Local/Weather.aspx?location= $+ %userloc HTTP/1.1
76
  sockwrite -nt $sockname Host: www.intellicast.com
77
  sockwrite -nt $sockname Connection: close
78
  sockwrite -nt $sockname $crlf
79
}
80
81
on *:SOCKREAD:feelslike: {
82
  if ($sockerr) { $sock(feelslike).mark Socket Error: $sock(feelslike).wsmsg }
83
  var %sockreader
84
  sockread %sockreader
85
86
  ;==================
87
  ; Set the info vars
88
  ;==================
89
90
  if (%fl.trig == fl) {
91
    if (*Feels Like:* iswm %sockreader) {
92
      set %fl.t $remove($gettok(%sockreader,7,32),&deg;</a>,</div>) $+ °
93
      set %fl.tc $round($calc(($remove(%fl.t,°) - 32) * (5/9)), 2) $+ °C
94
      set %fl.r $round($calc($remove($gettok(%sockreader,7,32),&deg;</a>) + 459.66), 2) $+ °
95
    }
96
    if (*Weather Report in* iswm %sockreader) {
97
      set %fl.locmsg $remove($gettok(%sockreader,2-,32),Weather Report in, -)
98
    }
99-
    if (*Heat Index* iswm %sockreader) {
99+
    if (*Heat Index: </a>* iswm %sockreader) {
100
      sockread %sockreader
101-
      set %fl.hi $replace($remove(%sockreader,<td>,</td>),&deg;,°F)
101+
      set %fl.hi $replace($remove(%sockreader,<td>,</td>),&deg;,°)
102
      set %fl.hic $round($calc(($remove(%fl.hi,°) - 32) * (5/9)), 2) $+ °C
103
    }
104
    if (*Visibility* iswm %sockreader) {
105
      sockread %sockreader
106
      set %fl.vis $replace($remove(%sockreader,<td>,</td>),&deg;,°)
107
      set %fl.visk $round($calc($remove(%fl.vis,mi)*1.61), 2) $+ km
108
    }
109
    if (*Dew Point* iswm %sockreader) {
110
      sockread %sockreader
111
      set %fl.dew $replace($remove(%sockreader,<td>,</td>),&deg;,°)F
112
      set %fl.dewc $round($calc(($remove(%fl.dew,°) - 32) * (5/9)), 2) $+ °C
113
    }
114
    if (*Wind: </a>* iswm %sockreader) {
115
      sockread %sockreader
116
      set %fl.wind $remove(%sockreader,<td>,</td>)
117
      set %fl.windk $round($calc($remove(%fl.wind,mph)*1.61), 2) $+ km/h
118
    }
119
    if (*Direction: </a>* iswm %sockreader) {
120
      sockread %sockreader 
121
      set %fl.dir $replace($remove(%sockreader,<td style="white-space:nowrap;">,</td>),&deg;,°)
122
    }
123
    if (*Humidity: </a>* iswm %sockreader) {
124
      sockread %sockreader
125
      set %fl.hum $remove(%sockreader,<td>,</td>)
126
    }
127
    if (*Pressure: </a>* iswm %sockreader) {
128
      sockread %sockreader
129
      set %fl.pre $remove(%sockreader,<td>,</td>)
130
      set %fl.prek $round($calc($remove(%fl.pre,") * 33.86), 2) $+ mb
131
    }
132
    if (*Gusts: </a>* iswm %sockreader) {
133
      sockread %sockreader
134
      set %fl.gusts $remove(%sockreader,<td>,</td>)
135
      set %fl.gustsk $round($calc($remove(%fl.gusts,mph)*1.61), 2) $+ km/h
136
    }
137
    if (*As of* iswm %sockreader) {
138
      set %fl.time $remove($left(%sockreader,16),As of)
139
    }
140
    if (*<td colspan="2" style="padding-bottom:10px;white-space:nowrap;">* iswm %sockreader) {
141
      sockread %sockreader
142
      set %fl.conditions $nohtml(%sockreader)
143
    }
144
  }
145
  if (%fl.trig == extra) {
146
    if (*UV Index:* iswm %sockreader) {
147
      set %fl.uvindex %sockreader
148
    }
149
    if (*Relative Humidity:* iswm %sockreader) {
150
      set %fl.relhum %sockreader
151
    }
152
    if (*Precipitation:* iswm %sockreader) {
153
      set %fl.precip %sockreader
154
    }
155
    if (*Snow:* iswm %sockreader) && ($right(%sockname,1) == %) {
156
      set %fl.snow %sockreader
157
    }
158
    if (*Cloud Coverage:* iswm %sockreader) {
159
      set %fl.clco %sockreader
160
    }
161
    if (*<table class="Gauge">* iswm %sockreader) {
162
      set %fl.desc $remove(%sockreader,<strong>,</strong>,<table class="Gauge">)
163
    }
164
    if (*<strong>Sunrise:</strong>* iswm %sockreader) {
165
      set %fl.sunr $remove(%sockreader,<strong>,</strong>,<br />)
166
    }
167
    if (*<strong>Sunset:</strong>* iswm %sockreader) {
168
      set %fl.suns $remove(%sockreader,<strong>,</strong>)
169
    }
170
    if (*<strong>Moonrise:</strong>* iswm %sockreader) {
171
      set %fl.moonr $remove(%sockreader,<strong>,</strong>,<br />)
172
    }
173
    if (*<strong>Moonset:</strong>* iswm %sockreader) {
174
      set %fl.moons $remove(%sockreader,<strong>,</strong>)
175
    }
176
    if (*<strong>Moonphase:</strong><br />* iswm %sockreader) {
177
      sockread %sockreader
178
      set %fl.moonp $remove(%sockreader,<strong>,</strong>,<br />)
179
    }
180
  }
181
  if (%fl.trig == cond) {
182
    if (id="detail0" isin %sockreader) {
183
      sockread %sockreader
184
      sockread %sockreader
185
      sockread %sockreader
186
      sockread %sockreader
187
      sockread %sockreader
188
      if (evening isin %sockreader) {
189
        sockread %sockreader
190
        set %fl.condi $regsubex($nohtml(%sockreader),/( -?(\d+)F)/g,$+(\1,$chr(32),$chr(40),$round($calc((\2 - 32)*(5/9)),2),C,$chr(41)))
191
      }
192
      sockread %sockreader
193
      set %fl.condi $regsubex($nohtml(%sockreader),/( -?(\d+)F)/g,$+(\1,$chr(32),$chr(40),$round($calc((\2 - 32)*(5/9)),2),C,$chr(41)))
194
      sockread %sockreader
195
      if (evening isin %sockreader) {
196
        set %fl.condie $regsubex($nohtml(%sockreader),/( -?(\d+)F)/g,$+(\1,$chr(32),$chr(40),$round($calc((\2 - 32)*(5/9)),2),C,$chr(41)))
197
      }
198
    }
199
  } 
200
}
201
202
;===================================
203
; Close the socket, message the info
204
;===================================
205
206
on *:SOCKCLOSE:feelslike: {
207
  if (%fl.trig == fl) {
208-
    $sock(feelslike).mark 7Currently for %fl.nick $+ : %fl.conditions & %fl.tc ( $+ %fl.t $+ ) :: 7Heat Index: %fl.hic ( $+ $remove(%fl.hi,$chr(32)) $+ ) :: 7Humidity: %fl.hum :: 7Wind: %fl.windk ( $+ $remove(%fl.wind,$chr(32)) $+ ) :: 7Wind Dir: %fl.dir :: 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)) $+ ) :: 7Pressure: %fl.prek ( $+ $remove(%fl.pre,$chr(32)) $+ ) :: 7Updated: %fl.time
208+
    $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
209
    ;unset %fl.*
210
    unset %userloc
211
  }
212
  if (%fl.trig == extra) {
213
    $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
214
    unset %fl.*
215
    unset %userloc
216
  }
217
  if (%fl.trig == cond) {
218
    if (%fl.condie == $null) {
219
      $sock(feelslike).mark Forecast: %fl.condi
220
    }
221
    if (%fl.condie != $null) {
222
      $sock(feelslike).mark Forecast: %fl.condi %fl.condie
223
    }
224
    unset %fl.*
225
    unset %f.x
226
    unset %userloc
227
  }
228
}
229
;===================================
230
; Aliases
231
;===================================
232
alias -l nohtml {
233
  var %x, %i = $regsub($1-,/(^[^<]*>|<[^>]*>|<[^>]*$)/g,$null,%x), %x = $remove(%x,&nbsp;)
234
  return %x
235
}
236
237
on *:EXIT: {
238
  if ($hget(feelslike))
239
  hfree feelslike
240
}