eolclub_scraper 0.0.4 → 0.1.0
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/eolclub_scraper.gemspec +1 -1
- data/lib/eolclub_scraper/event_parser.rb +5 -5
- data/lib/eolclub_scraper/version.rb +1 -1
- data/spec/eolclub_scraper/event_parser_spec.rb +22 -14
- metadata +16 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7ab165cc0de0faa15e36f4a3db9c3518ec8a4261
|
4
|
+
data.tar.gz: 7aae26e65532687130721276796c601ea710e634
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8cf6fa06f839355b29cb0ac1226730674b36635122f80d0cd7ea15b932c130f05cd096736016873502e5194e54f4a1b914729fa7d6b5d766de50e66fcdb09ef7
|
7
|
+
data.tar.gz: 643123765736639a730dd429ea2f1d742199810aa55cd0fd888cb59eaeed5884ff20464e94efb8742c283c3e964db1b89257e712b285593d6c53e9a973df8458
|
data/eolclub_scraper.gemspec
CHANGED
@@ -19,10 +19,10 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
21
|
spec.add_dependency 'nokogiri'
|
22
|
-
spec.add_dependency 'chronic'
|
23
22
|
spec.add_development_dependency "bundler", "~> 1.3"
|
24
23
|
spec.add_development_dependency "rake"
|
25
24
|
spec.add_development_dependency "rspec"
|
26
25
|
spec.add_development_dependency "vcr"
|
27
26
|
spec.add_development_dependency "webmock"
|
27
|
+
spec.add_development_dependency "timecop"
|
28
28
|
end
|
@@ -1,6 +1,5 @@
|
|
1
1
|
require 'eolclub_scraper/event'
|
2
2
|
require 'nokogiri'
|
3
|
-
require 'chronic'
|
4
3
|
|
5
4
|
module EolclubScraper
|
6
5
|
|
@@ -11,12 +10,13 @@ module EolclubScraper
|
|
11
10
|
def parse(content)
|
12
11
|
doc = Nokogiri::HTML.parse(content)
|
13
12
|
description = doc.css('p').first(3).map(&:to_html).join
|
14
|
-
|
15
|
-
start_time
|
13
|
+
|
14
|
+
start_time = doc.css('abbr.dtstart').first.attributes['title'].value
|
15
|
+
end_time = doc.css('abbr.dtend').first.attributes['title'].value
|
16
16
|
|
17
17
|
Event.new(
|
18
|
-
|
19
|
-
|
18
|
+
Time.parse(start_time),
|
19
|
+
Time.parse(end_time),
|
20
20
|
description
|
21
21
|
)
|
22
22
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'timecop'
|
1
2
|
require 'eolclub_scraper/event_parser'
|
2
3
|
|
3
4
|
describe EolclubScraper::EventParser do
|
@@ -5,15 +6,19 @@ describe EolclubScraper::EventParser do
|
|
5
6
|
describe '#parse' do
|
6
7
|
let(:parsed) { subject.parse(content) }
|
7
8
|
|
9
|
+
let(:timezone_offset) { 5 * 60 * 60 }
|
10
|
+
|
8
11
|
it 'parses an Event from the supplied content' do
|
9
|
-
|
10
|
-
|
12
|
+
Timecop.freeze(Time.local(2013, 12, 28)) do
|
13
|
+
expect( parsed.start_time ).to eq( Time.utc(2014, 1, 13, 18, 0, 0) + timezone_offset )
|
14
|
+
expect( parsed.end_time ).to eq( Time.utc(2014, 1, 13, 23, 0, 0) + timezone_offset )
|
15
|
+
end
|
11
16
|
end
|
12
17
|
|
13
18
|
it 'provides the HTML description from the scraped page' do
|
14
19
|
desc = parsed.description
|
15
20
|
expect(desc).to include("Monthly Providence, RI hacknight.")
|
16
|
-
expect(desc).to
|
21
|
+
expect(desc).to match(/The next.*EOL Club.*meetup is/m)
|
17
22
|
expect(desc).to include("@EOLclub")
|
18
23
|
end
|
19
24
|
end
|
@@ -37,17 +42,20 @@ describe EolclubScraper::EventParser do
|
|
37
42
|
<h1>End of Line Club</h1>
|
38
43
|
</header>
|
39
44
|
<section id='main'>
|
40
|
-
<
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
45
|
+
<div class="vevent">
|
46
|
+
<p class="description">
|
47
|
+
Monthly Providence, RI hacknight. Code, design, and collaborate
|
48
|
+
with other local developers to a backdrop of electronic music.
|
49
|
+
Bring your laptop and a project to work on.
|
50
|
+
</p>
|
51
|
+
<p>
|
52
|
+
The next <span class="summary">EOL Club</span>
|
53
|
+
meetup is Monday, January 13th from
|
54
|
+
<abbr class="dtstart" title="2014-01-13T18:00:00-05:00">6pm</abbr>–<abbr class="dtend" title="2014-01-13T23:00:00-05:00">11pm</abbr>
|
55
|
+
at <a class="location" href="http://basicsgroup.com">Basics Group</a>.
|
56
|
+
Arrive whenever you can. Food and beer provided.
|
57
|
+
</p>
|
58
|
+
</div>
|
51
59
|
<p>
|
52
60
|
<a href="https://twitter.com/EOLclub">@EOLclub</a>
|
53
61
|
to get more info and RSVP.
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: eolclub_scraper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Gillooly
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-01-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
@@ -24,20 +24,6 @@ dependencies:
|
|
24
24
|
- - '>='
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: chronic
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - '>='
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
34
|
-
type: :runtime
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - '>='
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '0'
|
41
27
|
- !ruby/object:Gem::Dependency
|
42
28
|
name: bundler
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -108,6 +94,20 @@ dependencies:
|
|
108
94
|
- - '>='
|
109
95
|
- !ruby/object:Gem::Version
|
110
96
|
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: timecop
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - '>='
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
111
|
description: Scrape currently scheduled event from EOLclub.org for PVDTechEvents.com
|
112
112
|
email:
|
113
113
|
- matt@mattgillooly.com
|