lita-onewheel-forecast-io 1.6.7 → 1.8.0
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 27b3ba92a9a63fb6741defc9fa4f9bf9ef5c0660f215910b3346040fb930abcd
|
4
|
+
data.tar.gz: ed5d1300563a6a2dd7801325aaf26b307b5e05293b93986a4188d81504591466
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9aeb956474f7f6835b577c4534656c7678abcbfe2ab8e83adb7fe9ead172fb4b070a120619036cd09e6da0ac9744ad275a725db7b67ebb35abf4361e48e635db
|
7
|
+
data.tar.gz: 79fa111425384b543b32e3605cf28b13ee5be779b899684a9e64b6bba350121d12e87a5dae6fccb50a106909938a9c080b56efce0c73db8403822267dc4d31e7
|
@@ -139,7 +139,20 @@ module ForecastIo
|
|
139
139
|
# }
|
140
140
|
# end
|
141
141
|
|
142
|
-
|
143
|
-
|
142
|
+
def get_uvindex_colors
|
143
|
+
{ 0..0 => :black,
|
144
|
+
1..1 => :royal,
|
145
|
+
2..2 => :brown,
|
146
|
+
3..3 => :purple,
|
147
|
+
4..4 => :green,
|
148
|
+
5..5 => :lime,
|
149
|
+
6..6 => :red,
|
150
|
+
7..7 => :orange,
|
151
|
+
8..8 => :yellow,
|
152
|
+
9..9 => :aqua,
|
153
|
+
10..10 => :pink,
|
154
|
+
11..11 => :white
|
155
|
+
}
|
156
|
+
end
|
144
157
|
end
|
145
158
|
end
|
@@ -132,6 +132,11 @@ module ForecastIo
|
|
132
132
|
"#{hours} hr temps: #{get_temperature temperature_data.first.round(1)} |#{str}| #{get_temperature temperature_data.last.round(1)} Range: #{get_temperature temperature_data.min.round(1)} - #{get_temperature temperature_data.max.round(1)}"
|
133
133
|
end
|
134
134
|
|
135
|
+
def ansi_windchill_forecast(forecast, hours = 24)
|
136
|
+
str, temperature_data = do_the_windchill_temp_thing(forecast, ansi_chars, hours)
|
137
|
+
"#{hours} hr windchill temps: #{get_temperature temperature_data.first.round(1)} |#{str}| #{get_temperature temperature_data.last.round(1)} Range: #{get_temperature temperature_data.min.round(1)} - #{get_temperature temperature_data.max.round(1)}"
|
138
|
+
end
|
139
|
+
|
135
140
|
def ascii_temp_forecast(forecast, hours = 24)
|
136
141
|
str, temperature_data = do_the_temp_thing(forecast, ascii_chars, hours)
|
137
142
|
"#{hours} hr temps: #{get_temperature temperature_data.first.round(1)} |#{str}| #{get_temperature temperature_data.last.round(1)} Range: #{get_temperature temperature_data.min.round(1)} - #{get_temperature temperature_data.max.round(1)}"
|
@@ -159,14 +164,43 @@ module ForecastIo
|
|
159
164
|
return dot_str, temps
|
160
165
|
end
|
161
166
|
|
167
|
+
def do_the_windchill_temp_thing(forecast, chars, hours)
|
168
|
+
temps = []
|
169
|
+
wind = []
|
170
|
+
data = forecast['hourly']['data'].slice(0,hours - 1)
|
171
|
+
key = 'temperature'
|
172
|
+
wind_key = 'windSpeed'
|
173
|
+
|
174
|
+
data.each_with_index do |datum, index|
|
175
|
+
temps.push calculate_windchill(datum[key], datum[wind_key])
|
176
|
+
break if index == hours - 1 # We only want (hours) 24hrs of data.
|
177
|
+
end
|
178
|
+
|
179
|
+
differential = temps.max - temps.min
|
180
|
+
|
181
|
+
# Hmm. There's a better way.
|
182
|
+
dot_str = get_dot_str(chars, data, temps.min, differential, key)
|
183
|
+
|
184
|
+
if config.colors
|
185
|
+
dot_str = get_colored_string(data, key, dot_str, get_temp_range_colors)
|
186
|
+
end
|
187
|
+
|
188
|
+
return dot_str, temps
|
189
|
+
end
|
190
|
+
|
191
|
+
# Temp must be F.
|
192
|
+
def calculate_windchill(temp, wind)
|
193
|
+
35.74 + (0.6215 * temp) - (35.75 * wind ** 0.16) + (0.4275 * temp * wind ** 0.16)
|
194
|
+
end
|
195
|
+
|
162
196
|
def ansi_wind_direction_forecast(forecast)
|
163
|
-
str,
|
164
|
-
"48h wind direction #{get_speed
|
197
|
+
str, wind_speed, wind_gust = do_the_wind_direction_thing(forecast, ansi_wind_arrows)
|
198
|
+
"48h wind direction #{get_speed wind_speed.first}|#{str}|#{get_speed wind_speed.last} Range: #{get_speed(wind_speed.min)} - #{get_speed(wind_speed.max)}, gusting to #{get_speed wind_gust.max}"
|
165
199
|
end
|
166
200
|
|
167
201
|
def ascii_wind_direction_forecast(forecast)
|
168
|
-
str,
|
169
|
-
"48h wind direction #{get_speed
|
202
|
+
str, wind_speed, wind_gust = do_the_wind_direction_thing(forecast, ascii_wind_arrows)
|
203
|
+
"48h wind direction #{get_speed wind_speed.first}|#{str}|#{get_speed wind_speed.last} Range: #{get_speed(wind_speed.min)} - #{get_speed(wind_speed.max)}, gusting to #{get_speed wind_gust.max}"
|
170
204
|
end
|
171
205
|
|
172
206
|
def do_the_wind_direction_thing(forecast, wind_arrows, hours = 48)
|
@@ -174,11 +208,13 @@ module ForecastIo
|
|
174
208
|
data = forecast['hourly']['data'].slice(0,hours - 1)
|
175
209
|
str = ''
|
176
210
|
data_points = []
|
211
|
+
gust_data = []
|
177
212
|
|
178
213
|
data.each_with_index do |datum, index|
|
179
214
|
wind_arrow_index = get_cardinal_direction_from_bearing(datum[key])
|
180
215
|
str << wind_arrows[wind_arrow_index].to_s
|
181
216
|
data_points.push datum['windSpeed']
|
217
|
+
gust_data.push datum['windGust']
|
182
218
|
break if index == hours - 1 # We only want (hours) of data.
|
183
219
|
end
|
184
220
|
|
@@ -186,7 +222,7 @@ module ForecastIo
|
|
186
222
|
str = get_colored_string(data, 'windSpeed', str, get_wind_range_colors)
|
187
223
|
end
|
188
224
|
|
189
|
-
return str, data_points
|
225
|
+
return str, data_points, gust_data
|
190
226
|
end
|
191
227
|
|
192
228
|
def do_the_sun_thing(forecast, chars)
|
@@ -579,5 +615,21 @@ module ForecastIo
|
|
579
615
|
}
|
580
616
|
end
|
581
617
|
end
|
618
|
+
|
619
|
+
def do_the_uvindex_thing(forecast)
|
620
|
+
uvs = []
|
621
|
+
forecast['hourly']['data'].each do |hour|
|
622
|
+
uvs.push hour['uvIndex']
|
623
|
+
end
|
624
|
+
|
625
|
+
data = forecast['hourly']['data']
|
626
|
+
str = get_dot_str(ansi_chars, data, uvs.min, uvs.max - uvs.min, key = 'uvIndex')
|
627
|
+
|
628
|
+
if config.colors
|
629
|
+
str = get_colored_string(data, 'uvIndex', str, get_uvindex_colors)
|
630
|
+
end
|
631
|
+
|
632
|
+
"#{uvs.first} |#{str}| #{uvs.last} max: #{uvs.max}"
|
633
|
+
end
|
582
634
|
end
|
583
635
|
end
|
@@ -45,6 +45,12 @@ module ForecastIo
|
|
45
45
|
response.reply location.location_name + ' ' + ansi_temp_forecast(forecast)
|
46
46
|
end
|
47
47
|
|
48
|
+
def handle_irc_ansiwindchill(response)
|
49
|
+
location = geo_lookup(response.user, response.match_data[1])
|
50
|
+
forecast = get_forecast_io_results(response.user, location)
|
51
|
+
response.reply location.location_name + ' ' + ansi_windchill_forecast(forecast)
|
52
|
+
end
|
53
|
+
|
48
54
|
def handle_irc_ieeetemp(response)
|
49
55
|
@scale = 'k'
|
50
56
|
location = geo_lookup(response.user, response.match_data[1])
|
@@ -235,5 +241,13 @@ module ForecastIo
|
|
235
241
|
windows_data = do_the_windows_data_thing(forecast)
|
236
242
|
response.write windows_data.to_json
|
237
243
|
end
|
244
|
+
|
245
|
+
def handle_irc_uvindex(response)
|
246
|
+
location = geo_lookup(response.user, response.match_data[1])
|
247
|
+
forecast = get_forecast_io_results(response.user, location)
|
248
|
+
str = do_the_uvindex_thing(forecast)
|
249
|
+
response.reply "UV Index for #{location.location_name} #{str} [48h forecast]"
|
250
|
+
end
|
251
|
+
|
238
252
|
end
|
239
253
|
end
|
@@ -82,6 +82,15 @@ module Lita
|
|
82
82
|
route(/^windows\s+(.+)/i, :handle_irc_windows, command: true,
|
83
83
|
help: { '!windows' => 'Tell me when to close my windows as it\'s warmer outside than in.'})
|
84
84
|
|
85
|
+
# SUN
|
86
|
+
route(/^uv$/i, :handle_irc_uvindex, command: true)
|
87
|
+
route(/^uv\s+(.+)$/i, :handle_irc_uvindex, command: true)
|
88
|
+
route(/^uvindex$/i, :handle_irc_uvindex, command: true)
|
89
|
+
route(/^uvindex\s+(.*)$/i, :handle_irc_uvindex, command: true)
|
90
|
+
route(/^ansiuvindex\s*(.*)$/i, :handle_irc_uvindex, command: true)
|
91
|
+
route(/^ansiuv\s*(.*)$/i, :handle_irc_uvindex, command: true,
|
92
|
+
help: { '!ansiuv' => 'Display the UV index forecast.' })
|
93
|
+
|
85
94
|
# State Commands
|
86
95
|
route(/^set scale (c|f|k)/i, :handle_irc_set_scale, command: true,
|
87
96
|
help: { '!set scale [c|f|k]' => 'Set the scale to your chosen degrees.'})
|
@@ -148,6 +157,9 @@ module Lita
|
|
148
157
|
route(/^ansiwind\s*$/i, :handle_irc_ansiwind, command: true)
|
149
158
|
route(/^ansiwind\s+(.+)/i, :handle_irc_ansiwind, command: true,
|
150
159
|
help: { '!ansiwind [location]' => '24h wind speed/direction report for [location].'})
|
160
|
+
route(/^ansiwindchill\s*$/i, :handle_irc_ansiwindchill, command: true)
|
161
|
+
route(/^ansiwindchill\s+(.+)/i, :handle_irc_ansiwindchill, command: true,
|
162
|
+
help: { '!ansiwindchill [location]' => '24h windchill temp report for [location].'})
|
151
163
|
route(/^asciiwind\s*$/i, :handle_irc_ascii_wind, command: true)
|
152
164
|
route(/^asciiwind\s+(.+)/i, :handle_irc_ascii_wind, command: true,
|
153
165
|
help: { '!asciiwind [location]' => '24h wind speed/direction report for [location], ascii style.'})
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lita-onewheel-forecast-io
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Kreps
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-10-
|
11
|
+
date: 2019-10-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: lita
|
@@ -234,7 +234,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
234
234
|
- !ruby/object:Gem::Version
|
235
235
|
version: '0'
|
236
236
|
requirements: []
|
237
|
-
rubygems_version: 3.0.
|
237
|
+
rubygems_version: 3.0.1
|
238
238
|
signing_key:
|
239
239
|
specification_version: 4
|
240
240
|
summary: A text-based interactive query engine for http://forecast.io's api.
|