weatherscout 0.2.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +2 -0
- data/README.md +124 -14
- data/bin/weatherscout +24 -2
- data/lib/weathers/version.rb +5 -0
- data/lib/weathers/weather_scraper.rb +6 -0
- data/lib/weathers/weather_scraper/daily_weather.rb +69 -0
- data/lib/{weatherdesc/daily_weather.rb → weathers/weather_scraper/name_mapping.rb} +4 -67
- data/lib/weathers/weather_scraper/weekly_weather.rb +53 -0
- data/lib/weatherscout.rb +1 -1
- data/spec/dailyweather_spec.rb +46 -37
- data/spec/fixtures/vcr_cassettes/dailytweather.yml +815 -0
- data/spec/fixtures/vcr_cassettes/weeklyweather.yml +117 -0
- data/spec/weeklyweather_spec.rb +67 -0
- data/weatherscout.gemspec +2 -2
- metadata +13 -4
- data/lib/weatherdesc/version.rb +0 -5
@@ -0,0 +1,117 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: http://www.cwb.gov.tw/V7/forecast/taiwan/inc/city/Hsinchu_City.htm
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
Accept-Encoding:
|
11
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
12
|
+
Accept:
|
13
|
+
- "*/*"
|
14
|
+
User-Agent:
|
15
|
+
- Ruby
|
16
|
+
response:
|
17
|
+
status:
|
18
|
+
code: 200
|
19
|
+
message: OK
|
20
|
+
headers:
|
21
|
+
Last-Modified:
|
22
|
+
- Fri, 22 Jan 2016 14:32:35 GMT
|
23
|
+
Accept-Ranges:
|
24
|
+
- bytes
|
25
|
+
Content-Length:
|
26
|
+
- '3089'
|
27
|
+
Content-Type:
|
28
|
+
- text/html
|
29
|
+
Date:
|
30
|
+
- Fri, 22 Jan 2016 17:59:06 GMT
|
31
|
+
Server:
|
32
|
+
- Apache
|
33
|
+
Etag:
|
34
|
+
- '"1a7e0-c11-529ed171826c0"'
|
35
|
+
Age:
|
36
|
+
- '5'
|
37
|
+
X-Cache:
|
38
|
+
- HIT from w3accel
|
39
|
+
Via:
|
40
|
+
- 1.1 w3accel:8100 (squid/2.7.STABLE9)
|
41
|
+
Connection:
|
42
|
+
- close
|
43
|
+
body:
|
44
|
+
encoding: ASCII-8BIT
|
45
|
+
string: !binary |-
|
46
|
+
PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0
|
47
|
+
L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIC8+CjxkaXYgaWQ9ImZvcmVjYXN0MCI+
|
48
|
+
CjxoMyBjbGFzcz0iQ2VudGVyVGl0bGUiPu+8kemAsemgkOWgsTxzcGFuIGNs
|
49
|
+
YXNzPSJJc3N1ZWQiPueZvOW4g+aZgumWk++8mjIwMTYvMDEvMjIgMjM6MDA8
|
50
|
+
L3NwYW4+PCEtLeeZvOW4g+aZgumWk++8miAgLS0+PC9oMz4KPCEtLUNlbnRl
|
51
|
+
clRpdGxlIC0tPgo8dGFibGUgY2xhc3M9IkZjc3RCb3hUYWJsZTAxIiBzdW1t
|
52
|
+
YXJ5PSLnt6jmjpLnlKgiPgo8dGhlYWQ+CgkJCTx0cj4KCQkJPHRoIHdpZHRo
|
53
|
+
PSIyMyUiPuaWsOerueW4gjwvdGg+PHRoIHdpZHRoPSIxMSUiPjAxLzIzPGJy
|
54
|
+
IC8+PGZvbnQgY29sb3I9I0NDMzM2Nj7mmJ/mnJ/lha08L2ZvbnQ+PC90aD48
|
55
|
+
dGggd2lkdGg9IjExJSI+MDEvMjQ8YnIgLz48Zm9udCBjb2xvcj0jQ0MzMzY2
|
56
|
+
PuaYn+acn+aXpTwvZm9udD48L3RoPjx0aCB3aWR0aD0iMTElIj4wMS8yNTxi
|
57
|
+
ciAvPuaYn+acn+S4gDwvdGg+PHRoIHdpZHRoPSIxMSUiPjAxLzI2PGJyIC8+
|
58
|
+
5pif5pyf5LqMPC90aD48dGggd2lkdGg9IjExJSI+MDEvMjc8YnIgLz7mmJ/m
|
59
|
+
nJ/kuIk8L3RoPjx0aCB3aWR0aD0iMTElIj4wMS8yODxiciAvPuaYn+acn+Wb
|
60
|
+
mzwvdGg+PHRoIHdpZHRoPSIxMSUiPjAxLzI5PGJyIC8+5pif5pyf5LqUPC90
|
61
|
+
aD48L3RoZWFkPjx0Ym9keT48dHI+PHRoIG5vd3JhcD0ibm93cmFwIiBjbGFz
|
62
|
+
cz0ibnVtIj7nmb3lpKk8L3RoPjx0ZCBub3dyYXA9Im5vd3JhcCIgY2xhc3M9
|
63
|
+
Im51bSI+CgkJCQkgICA8aW1nIHNyYz0iLi4vLi4vc3ltYm9sL3dlYXRoZXIv
|
64
|
+
Z2lmL2RheS8yNi5naWYiIGFsdD0i6Zmw5pmC5aSa6Zuy6Zmj6ZuoIiB0aXRs
|
65
|
+
ZT0i6Zmw5pmC5aSa6Zuy6Zmj6ZuoIiAvPjxiciAvPgoJCQkJICAgOCB+IDEy
|
66
|
+
PC90ZD48dGQgbm93cmFwPSJub3dyYXAiIGNsYXNzPSJudW0iPgoJCQkJICAg
|
67
|
+
PGltZyBzcmM9Ii4uLy4uL3N5bWJvbC93ZWF0aGVyL2dpZi9kYXkvMTIuZ2lm
|
68
|
+
IiBhbHQ9IuWkmumbsuefreaaq+mbqCIgdGl0bGU9IuWkmumbsuefreaaq+mb
|
69
|
+
qCIgLz48YnIgLz4KCQkJCSAgIDUgfiA3PC90ZD48dGQgbm93cmFwPSJub3dy
|
70
|
+
YXAiIGNsYXNzPSJudW0iPgoJCQkJICAgPGltZyBzcmM9Ii4uLy4uL3N5bWJv
|
71
|
+
bC93ZWF0aGVyL2dpZi9kYXkvMDcuZ2lmIiBhbHQ9IuWkmumbsuaZguaZtCIg
|
72
|
+
dGl0bGU9IuWkmumbsuaZguaZtCIgLz48YnIgLz4KCQkJCSAgIDQgfiAxMDwv
|
73
|
+
dGQ+PHRkIG5vd3JhcD0ibm93cmFwIiBjbGFzcz0ibnVtIj4KCQkJCSAgIDxp
|
74
|
+
bWcgc3JjPSIuLi8uLi9zeW1ib2wvd2VhdGhlci9naWYvZGF5LzA3LmdpZiIg
|
75
|
+
YWx0PSLlpJrpm7LmmYLmmbQiIHRpdGxlPSLlpJrpm7LmmYLmmbQiIC8+PGJy
|
76
|
+
IC8+CgkJCQkgICA4IH4gMTg8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCIgY2xh
|
77
|
+
c3M9Im51bSI+CgkJCQkgICA8aW1nIHNyYz0iLi4vLi4vc3ltYm9sL3dlYXRo
|
78
|
+
ZXIvZ2lmL2RheS8wNS5naWYiIGFsdD0i5aSa6Zuy5pmC6ZmwIiB0aXRsZT0i
|
79
|
+
5aSa6Zuy5pmC6ZmwIiAvPjxiciAvPgoJCQkJICAgMTIgfiAxOTwvdGQ+PHRk
|
80
|
+
IG5vd3JhcD0ibm93cmFwIiBjbGFzcz0ibnVtIj4KCQkJCSAgIDxpbWcgc3Jj
|
81
|
+
PSIuLi8uLi9zeW1ib2wvd2VhdGhlci9naWYvZGF5LzEyLmdpZiIgYWx0PSLl
|
82
|
+
pJrpm7LmmYLpmbDnn63mmqvpmaPpm6giIHRpdGxlPSLlpJrpm7LmmYLpmbDn
|
83
|
+
n63mmqvpmaPpm6giIC8+PGJyIC8+CgkJCQkgICAxNSB+IDE4PC90ZD48dGQg
|
84
|
+
bm93cmFwPSJub3dyYXAiIGNsYXNzPSJudW0iPgoJCQkJICAgPGltZyBzcmM9
|
85
|
+
Ii4uLy4uL3N5bWJvbC93ZWF0aGVyL2dpZi9kYXkvMjYuZ2lmIiBhbHQ9IumZ
|
86
|
+
sOefreaaq+mZo+mbqCIgdGl0bGU9IumZsOefreaaq+mZo+mbqCIgLz48YnIg
|
87
|
+
Lz4KCQkJCSAgIDE1IH4gMTg8L3RkPiAgICAgICAgICAgICAgPC90cj48dGgg
|
88
|
+
bm93cmFwPSJub3dyYXAiIGNsYXNzPSJudW0iPuaZmuS4ijwvdGg+PHRkIG5v
|
89
|
+
d3JhcD0ibm93cmFwIiBjbGFzcz0ibnVtIj4KCQkJCSAgIDxpbWcgc3JjPSIu
|
90
|
+
Li8uLi9zeW1ib2wvd2VhdGhlci9naWYvbmlnaHQvMjYuZ2lmIiBhbHQ9IumZ
|
91
|
+
sOaZguWkmumbsuefreaaq+mbqCIgdGl0bGU9IumZsOaZguWkmumbsuefreaa
|
92
|
+
q+mbqCIgLz48YnIgLz4KCQkJCSAgIDYgfiA4PC90ZD48dGQgbm93cmFwPSJu
|
93
|
+
b3dyYXAiIGNsYXNzPSJudW0iPgoJCQkJICAgPGltZyBzcmM9Ii4uLy4uL3N5
|
94
|
+
bWJvbC93ZWF0aGVyL2dpZi9uaWdodC8wMi5naWYiIGFsdD0i5aSa6ZuyIiB0
|
95
|
+
aXRsZT0i5aSa6ZuyIiAvPjxiciAvPgoJCQkJICAgNCB+IDU8L3RkPjx0ZCBu
|
96
|
+
b3dyYXA9Im5vd3JhcCIgY2xhc3M9Im51bSI+CgkJCQkgICA8aW1nIHNyYz0i
|
97
|
+
Li4vLi4vc3ltYm9sL3dlYXRoZXIvZ2lmL25pZ2h0LzA4LmdpZiIgYWx0PSLm
|
98
|
+
mbTmmYLlpJrpm7IiIHRpdGxlPSLmmbTmmYLlpJrpm7IiIC8+PGJyIC8+CgkJ
|
99
|
+
CQkgICA4IH4gOTwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIiBjbGFzcz0ibnVt
|
100
|
+
Ij4KCQkJCSAgIDxpbWcgc3JjPSIuLi8uLi9zeW1ib2wvd2VhdGhlci9naWYv
|
101
|
+
bmlnaHQvMDguZ2lmIiBhbHQ9IuaZtOaZguWkmumbsiIgdGl0bGU9IuaZtOaZ
|
102
|
+
guWkmumbsiIgLz48YnIgLz4KCQkJCSAgIDEzIH4gMTU8L3RkPjx0ZCBub3dy
|
103
|
+
YXA9Im5vd3JhcCIgY2xhc3M9Im51bSI+CgkJCQkgICA8aW1nIHNyYz0iLi4v
|
104
|
+
Li4vc3ltYm9sL3dlYXRoZXIvZ2lmL25pZ2h0LzI2LmdpZiIgYWx0PSLpmbDm
|
105
|
+
mYLlpJrpm7Lnn63mmqvpmaPpm6giIHRpdGxlPSLpmbDmmYLlpJrpm7Lnn63m
|
106
|
+
mqvpmaPpm6giIC8+PGJyIC8+CgkJCQkgICAxNSB+IDE2PC90ZD48dGQgbm93
|
107
|
+
cmFwPSJub3dyYXAiIGNsYXNzPSJudW0iPgoJCQkJICAgPGltZyBzcmM9Ii4u
|
108
|
+
Ly4uL3N5bWJvbC93ZWF0aGVyL2dpZi9uaWdodC8yNi5naWYiIGFsdD0i6Zmw
|
109
|
+
55+t5pqr6Zmj6ZuoIiB0aXRsZT0i6Zmw55+t5pqr6Zmj6ZuoIiAvPjxiciAv
|
110
|
+
PgoJCQkJICAgMTUgfiAxNjwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIiBjbGFz
|
111
|
+
cz0ibnVtIj4KCQkJCSAgIDxpbWcgc3JjPSIuLi8uLi9zeW1ib2wvd2VhdGhl
|
112
|
+
ci9naWYvbmlnaHQvMDMuZ2lmIiBhbHQ9IumZsOWkqSIgdGl0bGU9IumZsOWk
|
113
|
+
qSIgLz48YnIgLz4KCQkJCSAgIDE1IH4gMTY8L3RkPiAgICAgICAgICAgICAg
|
114
|
+
PC90cj48L3Rib2R5Pgo8L3RhYmxlPgo8L2Rpdj4=
|
115
|
+
http_version:
|
116
|
+
recorded_at: Fri, 22 Jan 2016 17:59:11 GMT
|
117
|
+
recorded_with: VCR 3.0.1
|
@@ -0,0 +1,67 @@
|
|
1
|
+
require 'vcr'
|
2
|
+
require 'webmock'
|
3
|
+
require 'minitest/autorun'
|
4
|
+
require './lib/weatherscout.rb'
|
5
|
+
|
6
|
+
WEEKLY_CITY = "新竹"
|
7
|
+
|
8
|
+
VCR.configure do |config|
|
9
|
+
config.cassette_library_dir = 'spec/fixtures/vcr_cassettes'
|
10
|
+
config.hook_into :webmock
|
11
|
+
end
|
12
|
+
|
13
|
+
VCR.use_cassette('weeklyweather') do
|
14
|
+
weekly_weather = WeatherScraper::WeeklyWeather.new(WEEKLY_CITY)
|
15
|
+
|
16
|
+
describe 'Weekly weather desc scrap' do
|
17
|
+
|
18
|
+
it 'should return city name' do
|
19
|
+
city = weekly_weather.city
|
20
|
+
city.must_be_instance_of String
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'has the right number of period weathers' do
|
24
|
+
weathers = weekly_weather.weathers
|
25
|
+
weathers.size.must_equal 7
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'should return the timestamp in correct format' do
|
29
|
+
timestamps = weekly_weather.weathers.keys
|
30
|
+
timestamps.each do |timestamp|
|
31
|
+
timestamp.must_match /\d\d\/\d\d.../
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
it 'should return day temperature' do
|
36
|
+
weathers = weekly_weather.weathers.values
|
37
|
+
weathers.each do |weather|
|
38
|
+
day_temperature = weather["day_temperature"]
|
39
|
+
day_temperature.must_match /(-|\d)\d*\s~\s(-|\d)\d*/
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'should return night temperature' do
|
44
|
+
weathers = weekly_weather.weathers.values
|
45
|
+
weathers.each do |weather|
|
46
|
+
night_temperature = weather["night_temperature"]
|
47
|
+
night_temperature.must_match /(-|\d)\d*\s~\s(-|\d)\d*/
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'should return day condition' do
|
52
|
+
weathers = weekly_weather.weathers.values
|
53
|
+
weathers.each do |weather|
|
54
|
+
day_condition = weather["day_condition"]
|
55
|
+
day_condition.must_be_instance_of String
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
it 'should return night condition' do
|
60
|
+
weathers = weekly_weather.weathers.values
|
61
|
+
weathers.each do |weather|
|
62
|
+
night_condition = weather["night_condition"]
|
63
|
+
night_condition.must_be_instance_of String
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
data/weatherscout.gemspec
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
$LOAD_PATH.push File.expand_path('../lib', __FILE__)
|
2
|
-
require '
|
2
|
+
require 'weathers/version'
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = 'weatherscout'
|
5
5
|
s.version = WeatherDesc::VERSION
|
@@ -8,7 +8,7 @@ Gem::Specification.new do |s|
|
|
8
8
|
s.summary = 'Tell you the weather of Taiwan'
|
9
9
|
s.description = 'You can find the weather of the major city in Taiwan'
|
10
10
|
s.authors = ['Vicky Lee']
|
11
|
-
s.email = ['lch82327@gmail.com']
|
11
|
+
s.email = ['lch82327@gmail.com']
|
12
12
|
s.files = `git ls-files`.split("\n")
|
13
13
|
s.test_files = `git ls-files spec/*`.split("\n")
|
14
14
|
s.homepage = 'https://github.com/vicky-sunshine/weather-scout-scraper'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: weatherscout
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vicky Lee
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-01-
|
11
|
+
date: 2016-01-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: minitest
|
@@ -67,10 +67,16 @@ files:
|
|
67
67
|
- README.md
|
68
68
|
- Rakefile
|
69
69
|
- bin/weatherscout
|
70
|
-
- lib/
|
71
|
-
- lib/
|
70
|
+
- lib/weathers/version.rb
|
71
|
+
- lib/weathers/weather_scraper.rb
|
72
|
+
- lib/weathers/weather_scraper/daily_weather.rb
|
73
|
+
- lib/weathers/weather_scraper/name_mapping.rb
|
74
|
+
- lib/weathers/weather_scraper/weekly_weather.rb
|
72
75
|
- lib/weatherscout.rb
|
73
76
|
- spec/dailyweather_spec.rb
|
77
|
+
- spec/fixtures/vcr_cassettes/dailytweather.yml
|
78
|
+
- spec/fixtures/vcr_cassettes/weeklyweather.yml
|
79
|
+
- spec/weeklyweather_spec.rb
|
74
80
|
- weatherscout.gemspec
|
75
81
|
homepage: https://github.com/vicky-sunshine/weather-scout-scraper
|
76
82
|
licenses:
|
@@ -98,3 +104,6 @@ specification_version: 4
|
|
98
104
|
summary: Tell you the weather of Taiwan
|
99
105
|
test_files:
|
100
106
|
- spec/dailyweather_spec.rb
|
107
|
+
- spec/fixtures/vcr_cassettes/dailytweather.yml
|
108
|
+
- spec/fixtures/vcr_cassettes/weeklyweather.yml
|
109
|
+
- spec/weeklyweather_spec.rb
|