previsao-clima-tempo 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -1,4 +1,5 @@
1
- # PrevisaoClimaTempo
1
+ # PrevisaoClimaTempo
2
+ ### VERSION = 0.1.4
2
3
 
3
4
  Communication with Clima Tempo accessing information about the weather of Brazil.
4
5
 
@@ -35,6 +36,10 @@ From Webservice
35
36
  Returns an object PrevisaoDia with information the day referenced.
36
37
  PrevisaoClimaTempo.new(:codCity => '3156').day(date)
37
38
 
39
+ Returns a collection of objects PrevisaoDia with information of 7 days referenced.
40
+ latitude 22º90'S (-22.90) e longitude 47º06'W (-47.06)
41
+ PrevisaoClimaTempo.new(:lat => '-22.90', :long => '-47.06').byGeoPosition()
42
+
38
43
  From Page(contains more information than is extracted from the webservice)
39
44
 
40
45
  Returns a hash of condtions of weather from page
@@ -9,13 +9,17 @@ require "nokogiri"
9
9
  class PrevisaoClimaTempo
10
10
 
11
11
 
12
- attr_reader :codCity
12
+ attr_reader :codCity, :lang, :lat, :long
13
13
 
14
14
  def initialize(option)
15
- raise TypeError unless option.kind_of? Hash
16
- raise ArgumentError unless option.has_key? :codCity
17
-
18
- @codCity = option[:codCity]
15
+
16
+ raise TypeError unless option.kind_of? Hash
17
+
18
+ # @lang = option.has_key? :lang ? option[:lang] : "br"
19
+ @codCity ||= option[:codCity]
20
+ @lat ||= option[:lat]
21
+ @long ||= option[:long]
22
+
19
23
  end
20
24
 
21
25
 
@@ -88,6 +92,27 @@ class PrevisaoClimaTempo
88
92
 
89
93
  end
90
94
 
95
+ # Returns an object with
96
+ # the conditions of weather
97
+ # next day from webservice
98
+ #
99
+ # Example:
100
+ # >> PrevisaoClimaTempo.new(:codCity => '314').tomorrow
101
+ #
102
+ # Arguments:
103
+ #
104
+ def byGeoPosition()
105
+
106
+ days = Array.new
107
+
108
+ url = "http://servicos.cptec.inpe.br/XML/cidade/7dias/#{@lat}/#{@long}/previsaoLatLon.xml"
109
+
110
+ loadDays(url,days,7)
111
+
112
+ days
113
+
114
+ end
115
+
91
116
 
92
117
  # Returns a hash of condtions of weather from page.
93
118
  # It's more complete than the webservice
@@ -102,7 +127,7 @@ class PrevisaoClimaTempo
102
127
  {
103
128
  :last_update => request.xpath("//span[@class='paragrafo-padrao']").text,
104
129
  :wind => { :velocity => request.xpath("//li[@class='dados-momento-li list-style-none'][4]/span[2]").text,
105
- :direction => wind[request.xpath("//li[@class='dados-momento-li list-style-none'][1]/span[2]").text]
130
+ :direction => wind['br'][request.xpath("//li[@class='dados-momento-li list-style-none'][1]/span[2]").text]
106
131
  },
107
132
  :moisture => request.xpath("//li[@class='dados-momento-li list-style-none'][5]/span[2]").text,
108
133
  :condition => request.xpath("//li[@class='dados-momento-li list-style-none'][2]/span[2]").text,
@@ -132,8 +157,10 @@ class PrevisaoClimaTempo
132
157
  :last_update => request.xpath("//p[@class='clear left paragrafo-padrao']").text[/(\d+)/]+":00",
133
158
  :date => request.xpath("//div[@class='box-prev-completa'][#{count}]//span[@class='data-prev']").text.strip+"/"+Time.now().year.to_s,
134
159
  :condition => request.xpath("//div[@class='box-prev-completa'][#{count}]/span[@class='left left5 paragrafo-padrao top10 fraseologia-prev']").text.strip,
135
- :wind => request.xpath("//div[@class='box-prev-completa'][#{count}]//li[@class='velocidade-vento-prev-completa list-style-none']/span[2]").text.strip,
136
- :probability_of_precipitation => request.xpath("//div[@class='box-prev-completa'][#{count}]//li[@class='prob-chuva-prev-completa list-style-none']/span[2]").text.strip,
160
+ :wind => { :direction => wind["br"][request.xpath("//div[@class='box-prev-completa'][#{count}]//li[@class='velocidade-vento-prev-completa list-style-none']//span//a[1]").text.strip],
161
+ :velocity => request.xpath("//div[@class='box-prev-completa'][#{count}]//li[@class='velocidade-vento-prev-completa list-style-none']//span//a[2]").text.strip},
162
+ :probability_of_precipitation => { :volume => request.xpath("//div[@class='box-prev-completa'][#{count}]//li[@class='prob-chuva-prev-completa list-style-none']/span//a[1]").text.strip,
163
+ :percentage => request.xpath("//div[@class='box-prev-completa'][#{count}]//li[@class='prob-chuva-prev-completa list-style-none']/span//a[2]").text.strip},
137
164
  :moisture_relative_complete => { :max => request.xpath("//div[@class='box-prev-completa'][#{count}]//li[@class='umidade-relativa-prev-completa list-style-none']/span[2]").text.strip,
138
165
  :min => request.xpath("//div[@class='box-prev-completa'][#{count}]//li[@class='umidade-relativa-prev-completa list-style-none']/span[3]").text.strip},
139
166
  :temperature => { :max => request.xpath("//div[@class='box-prev-completa'][#{count}]//span[@class='max']").text.strip,
@@ -142,15 +169,6 @@ class PrevisaoClimaTempo
142
169
  :sunrise => request.xpath("//div[@class='box-prev-completa'][#{count}]//div[@class='por-do-sol']/span[3]").text.strip,
143
170
  :sunset => request.xpath("//div[@class='box-prev-completa'][#{count}]//div[@class='por-do-sol']/span[6]").text.strip
144
171
  }
145
-
146
- @previsoes[count][:wind] = { :velocity => @previsoes[count][:wind][/(\d+)/]+"km/h" ,
147
- :direction => wind[@previsoes[count][:wind].gsub("#{@previsoes[count][:wind][/(\d+)/]}km/h","")]
148
- }
149
- @probability_of_precipitation = @previsoes[count][:probability_of_precipitation].split('mm')
150
-
151
- @previsoes[count][:probability_of_precipitation] = { :volume => @probability_of_precipitation[0]+"mm" ,
152
- :percentage => @probability_of_precipitation[1]
153
- }
154
172
 
155
173
  count+=1
156
174
  end
@@ -179,7 +197,7 @@ class PrevisaoClimaTempo
179
197
  @previsoes[count] = {
180
198
  :date => request.xpath("//div[@class='box-prev-tendencia'][#{count}]//span[@class='data-prev']").text.strip+"/"+Time.now().year.to_s,
181
199
  :condition => request.xpath("//div[@class='box-prev-tendencia'][#{count}]//div[@class='frase-previsao-prev-tendencia']").text.strip,
182
- :probability_of_precipitation => request.xpath("//div[@class='box-prev-completa'][#{count}]//li[@class='prob-chuva-prev-completa list-style-none']/span[2]").text.strip,
200
+ :probability_of_precipitation => request.xpath("//div[@class='box-prev-tendencia'][#{count}]//li[@class='prob-chuva-prev-tendencia list-style-none']/span[2]").text.strip,
183
201
  :temperature => { :max => request.xpath("//div[@class='box-prev-tendencia'][#{count}]//span[@class='max']").text.strip,
184
202
  :min => request.xpath("//div[@class='box-prev-tendencia'][#{count}]//span[@class='min']").text.strip}
185
203
  }
@@ -231,22 +249,44 @@ class PrevisaoClimaTempo
231
249
 
232
250
  def wind
233
251
  {
234
- "N" => "Norte",
235
- "S" => "Sul",
236
- "E" => "Leste",
237
- "W" => "Oeste",
238
- "NE" => "Nordeste",
239
- "NW" => "Noroeste",
240
- "SE" => "Sudeste",
241
- "SW" => "Sudoeste",
242
- "ENE" => "Lés-nordeste",
243
- "ESE" => "Lés-sudeste",
244
- "SSE" => "Su-sudeste",
245
- "NNE" => "Nor-nordeste",
246
- "NNW" => "Nor-noroeste",
247
- "SSW" => "Su-sudoeste",
248
- "WSW" => "Oés-sudoeste",
249
- "WNW" => "Oés-noroeste"
252
+ "br" =>
253
+ {
254
+ "N" => "Norte",
255
+ "S" => "Sul",
256
+ "E" => "Leste",
257
+ "W" => "Oeste",
258
+ "NE" => "Nordeste",
259
+ "NW" => "Noroeste",
260
+ "SE" => "Sudeste",
261
+ "SW" => "Sudoeste",
262
+ "ENE" => "Les-nordeste",
263
+ "ESE" => "Lés-sudeste",
264
+ "SSE" => "Su-sudeste",
265
+ "NNE" => "Nor-nordeste",
266
+ "NNW" => "Nor-noroeste",
267
+ "SSW" => "Su-sudoeste",
268
+ "WSW" => "Oés-sudoeste",
269
+ "WNW" => "Oés-noroeste"
270
+ },
271
+ "en" =>
272
+ {
273
+ "N" => "North",
274
+ "S" => "South",
275
+ "E" => "East",
276
+ "W" => "West",
277
+ "NE" => "Northeast",
278
+ "NW" => "Northwest",
279
+ "SE" => "Southeast",
280
+ "SW" => "Southwest",
281
+ "ENE" => "east-northeast",
282
+ "ESE" => "east-southeast",
283
+ "SSE" => "south-southeast",
284
+ "NNE" => "north-northeast",
285
+ "NNO" => "north-northwest",
286
+ "SSWO" => "south-southwest",
287
+ "OSO" => "west-southwest",
288
+ "ONO" => "west-northwest"
289
+ }
250
290
  }
251
291
  end
252
292
 
@@ -298,9 +338,6 @@ class PrevisaoClimaTempo
298
338
  previsao.at_xpath('maxima').text,
299
339
  previsao.at_xpath('minima').text,
300
340
  previsao.at_xpath('iuv') ? previsao.at_xpath('iuv').text : "Nao informado.")
301
-
302
-
303
-
304
341
  end
305
342
 
306
343
  end
@@ -8,7 +8,7 @@ class PrevisaoDia
8
8
 
9
9
  def initialize(dia,tempo,maxima,minima,iuv, temperatura = "not found")
10
10
  @dia = dayFormat(dia)
11
- @tempo = tempo.length > 3 ? tempo : tempoLabel[tempo]
11
+ @tempo = tempo.length > 3 ? tempo : tempoLabel['br'][tempo]
12
12
  @maxima = maxima
13
13
  @minima = minima
14
14
  @iuv = iuv
@@ -20,49 +20,94 @@ class PrevisaoDia
20
20
  end
21
21
 
22
22
  def tempoLabel
23
- {
24
- "ec" => "Encoberto com Chuvas Isoladas",
25
- "ci" => "Chuvas Isoladas",
26
- "c " => "Chuva",
27
- "in" => "Instável",
28
- "pp" => "Poss. de Pancadas de Chuva",
29
- "cm" => "Chuva pela Manha",
30
- "cn" => "Chuva a Noite",
31
- "pt" => "Pancadas de Chuva a Tarde",
32
- "pm" => "Pancadas de Chuva pela Manhã",
33
- "np" => "Nublado e Pancadas de Chuva",
34
- "pc" => "Pancadas de Chuva",
35
- "pn" => "Parcialmente Nublado",
36
- "cv" => "Chuvisco",
37
- "ch" => "Chuvoso",
38
- "t " => "Tempestade",
39
- "ps" => "Predomínio de Sol",
40
- "e " => "Encoberto",
41
- "n " => "Nublado",
42
- "cl" => "Céu Claro",
43
- "nv" => "Nevoeiro",
44
- "g " => "Geada",
45
- "ne" => "Neve",
46
- "nd" => "Não Definido",
47
- "pnt" => "Pancadas de Chuva a Noite",
48
- "psc" => "Possibilidade de Chuva",
49
- "pcm" => "Possibilidade de Chuva pela Manhã",
50
- "pct" => "Possibilidade de Chuva a Tarde",
51
- "pcn" => "Possibilidade de Chuva a Noite",
52
- "npt" => "Nublado com Pancadas a Tarde",
53
- "npn" => "Nublado com Pancadas a Noite",
54
- "ncn" => "Nublado com Poss. de Chuva a Noite",
55
- "nct" => "Nublado com Poss. de Chuva a Tarde",
56
- "ncm" => "Nubl. c/ Poss. de Chuva pela Manhã",
57
- "npm" => "Nublado com Pancadas pela Manhã",
58
- "npp" => "Nublado com Possibilidade de Chuva",
59
- "vn" => "Variação de Nebulosidade",
60
- "ct" => "Chuva a Tarde",
61
- "ppn" => "Poss. de Panc. de Chuva a Noite",
62
- "ppt" => "Poss. de Panc. de Chuva a Tarde",
63
- "ppm" => "Poss. de Panc. de Chuva pela Manhã"
64
- }
65
-
23
+ {
24
+ "br" =>
25
+ {
26
+ "ec" => "Encoberto com Chuvas Isoladas",
27
+ "ci" => "Chuvas Isoladas",
28
+ "c" => "Chuva",
29
+ "in" => "Instável",
30
+ "pp" => "Poss. de Pancadas de Chuva",
31
+ "cm" => "Chuva pela Manha",
32
+ "cn" => "Chuva a Noite",
33
+ "pt" => "Pancadas de Chuva a Tarde",
34
+ "pm" => "Pancadas de Chuva pela Manhã",
35
+ "np" => "Nublado e Pancadas de Chuva",
36
+ "pc" => "Pancadas de Chuva",
37
+ "pn" => "Parcialmente Nublado",
38
+ "cv" => "Chuvisco",
39
+ "ch" => "Chuvoso",
40
+ "t" => "Tempestade",
41
+ "ps" => "Predomínio de Sol",
42
+ "e" => "Encoberto",
43
+ "n" => "Nublado",
44
+ "cl" => "Céu Claro",
45
+ "nv" => "Nevoeiro",
46
+ "g" => "Geada",
47
+ "ne" => "Neve",
48
+ "nd" => "Não Definido",
49
+ "pnt" => "Pancadas de Chuva a Noite",
50
+ "psc" => "Possibilidade de Chuva",
51
+ "pcm" => "Possibilidade de Chuva pela Manhã",
52
+ "pct" => "Possibilidade de Chuva a Tarde",
53
+ "pcn" => "Possibilidade de Chuva a Noite",
54
+ "npt" => "Nublado com Pancadas a Tarde",
55
+ "npn" => "Nublado com Pancadas a Noite",
56
+ "ncn" => "Nublado com Possibilidade de Chuva a Noite",
57
+ "nct" => "Nublado com Possibilidade de Chuva a Tarde",
58
+ "ncm" => "Nublado com Possibilidade de Chuva pela Manhã",
59
+ "npm" => "Nublado com Pancadas pela Manhã",
60
+ "npp" => "Nublado com Possibilidade de Chuva",
61
+ "vn" => "Variação de Nebulosidade",
62
+ "ct" => "Chuva a Tarde",
63
+ "ppn" => "Possibilidade de Pancadas de Chuva a Noite",
64
+ "ppt" => "Possibilidade de Pancadas de Chuva a Tarde",
65
+ "ppm" => "Possibilidade de Pancadas de Chuva pela Manhã"
66
+ },
67
+ "en" =>
68
+ {
69
+ "ec" => "Encoberto com Chuvas Isoladas",
70
+ "ci" => "Chuvas Isoladas",
71
+ "c " => "Chuva",
72
+ "in" => "Instável",
73
+ "pp" => "Poss. de Pancadas de Chuva",
74
+ "cm" => "Chuva pela Manha",
75
+ "cn" => "Chuva a Noite",
76
+ "pt" => "Pancadas de Chuva a Tarde",
77
+ "pm" => "Pancadas de Chuva pela Manhã",
78
+ "np" => "Nublado e Pancadas de Chuva",
79
+ "pc" => "Pancadas de Chuva",
80
+ "pn" => "Parcialmente Nublado",
81
+ "cv" => "Chuvisco",
82
+ "ch" => "Chuvoso",
83
+ "t " => "Tempestade",
84
+ "ps" => "Predomínio de Sol",
85
+ "e " => "Encoberto",
86
+ "n " => "Nublado",
87
+ "cl" => "Céu Claro",
88
+ "nv" => "Nevoeiro",
89
+ "g " => "Geada",
90
+ "ne" => "Neve",
91
+ "nd" => "Não Definido",
92
+ "pnt" => "Pancadas de Chuva a Noite",
93
+ "psc" => "Possibilidade de Chuva",
94
+ "pcm" => "Possibilidade de Chuva pela Manhã",
95
+ "pct" => "Possibilidade de Chuva a Tarde",
96
+ "pcn" => "Possibilidade de Chuva a Noite",
97
+ "npt" => "Nublado com Pancadas a Tarde",
98
+ "npn" => "Nublado com Pancadas a Noite",
99
+ "ncn" => "Nublado com Possibilidade de Chuva a Noite",
100
+ "nct" => "Nublado com Possibilidade de Chuva a Tarde",
101
+ "ncm" => "Nublado com Possibilidade de Chuva pela Manhã",
102
+ "npm" => "Nublado com Pancadas pela Manhã",
103
+ "npp" => "Nublado com Possibilidade de Chuva",
104
+ "vn" => "Variação de Nebulosidade",
105
+ "ct" => "Chuva a Tarde",
106
+ "ppn" => "Possibilidade de Pancadas de Chuva a Noite",
107
+ "ppt" => "Possibilidade de Pancadas de Chuva a Tarde",
108
+ "ppm" => "Possibilidade de Pancadas de Chuva pela Manhã"
109
+ }
110
+ }
66
111
  end
67
112
 
68
113
  end
@@ -1,7 +1,7 @@
1
1
  module Previsao
2
2
  module Clima
3
3
  module Tempo
4
- VERSION = "0.1.4"
4
+ VERSION = "0.1.5"
5
5
  end
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: previsao-clima-tempo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-08-17 00:00:00.000000000 Z
12
+ date: 2013-09-07 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogiri