tf2r 0.2.0 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +4 -4
- data/lib/tf2r.rb +1 -0
- data/lib/tf2r/raffle.rb +13 -1
- data/lib/tf2r/scraper.rb +8 -36
- data/lib/tf2r/text_helpers.rb +34 -0
- data/lib/tf2r/version.rb +1 -1
- data/spec/scraper_spec.rb +0 -1
- data/tf2r.gemspec +1 -1
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d3eea3425354043f9ded54a379f71f341cf8010e
|
4
|
+
data.tar.gz: d0104958be84f7c9ddada47b9149c60a5fcdb565
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 69b5e73e168c64ea21deae35c377854651add86269f3b371f1a453fc64e255b508e8affcd283f776ae10d444760ba821bb0f5eaa237f0b9b141e5efcfd97be23
|
7
|
+
data.tar.gz: 27e52dac9061e970a47073b5fffbdc47eb37e3f54d9bf569a1c1ad3a9eaa160d7ab7fde95a428883f231333fda3cae80ea8661cf4576935dca9d61e9e61338bf
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
tf2r (0.2.
|
4
|
+
tf2r (0.2.1)
|
5
5
|
mechanize (~> 2.7)
|
6
6
|
|
7
7
|
GEM
|
@@ -11,7 +11,7 @@ GEM
|
|
11
11
|
cane (2.6.2)
|
12
12
|
parallel
|
13
13
|
coderay (1.1.0)
|
14
|
-
coveralls (0.7.
|
14
|
+
coveralls (0.7.1)
|
15
15
|
multi_json (~> 1.3)
|
16
16
|
rest-client
|
17
17
|
simplecov (>= 0.7)
|
@@ -75,7 +75,7 @@ GEM
|
|
75
75
|
term-ansicolor (1.3.0)
|
76
76
|
tins (~> 1.0)
|
77
77
|
thor (0.19.1)
|
78
|
-
tins (1.3.
|
78
|
+
tins (1.3.1)
|
79
79
|
unf (0.1.4)
|
80
80
|
unf_ext
|
81
81
|
unf_ext (0.0.6)
|
@@ -91,7 +91,7 @@ PLATFORMS
|
|
91
91
|
DEPENDENCIES
|
92
92
|
bundler (~> 1.3)
|
93
93
|
cane (~> 2.6)
|
94
|
-
coveralls (~> 0.7)
|
94
|
+
coveralls (~> 0.7.1)
|
95
95
|
pry (~> 0.10)
|
96
96
|
rake (~> 10.0)
|
97
97
|
rspec (~> 3.0)
|
data/lib/tf2r.rb
CHANGED
data/lib/tf2r/raffle.rb
CHANGED
@@ -3,6 +3,8 @@ module TF2R
|
|
3
3
|
# raffle from the Scraper and API.
|
4
4
|
# TODO: make this an actuall wrapper instead of accepting pre-made info.
|
5
5
|
class Raffle
|
6
|
+
include TF2R::TextHelpers
|
7
|
+
|
6
8
|
attr_reader :link_snippet, :api_info, :scraper_info
|
7
9
|
|
8
10
|
def initialize(link_snippet, api_info, scraper_info)
|
@@ -24,11 +26,21 @@ module TF2R
|
|
24
26
|
end
|
25
27
|
|
26
28
|
def participants
|
27
|
-
@api_info['newentry']
|
29
|
+
@normalized_participants ||= normalize_entries(@api_info['newentry'])
|
28
30
|
end
|
29
31
|
|
30
32
|
private
|
31
33
|
|
34
|
+
def normalize_entries(entries)
|
35
|
+
entries.map do |entry|
|
36
|
+
entry[:steam_id] = extract_steam_id entry.delete('link')
|
37
|
+
entry[:username] = entry.delete('name')
|
38
|
+
entry[:colour] = entry.delete('color').downcase
|
39
|
+
entry[:avatar_link] = entry.delete('avatar')
|
40
|
+
end
|
41
|
+
entries
|
42
|
+
end
|
43
|
+
|
32
44
|
def title
|
33
45
|
@scraper_info[0][:title]
|
34
46
|
end
|
data/lib/tf2r/scraper.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
module TF2R
|
2
2
|
# @author Justin Kim
|
3
3
|
class Scraper
|
4
|
+
include TF2R::TextHelpers
|
5
|
+
|
4
6
|
class InvalidUserPage < StandardError; end
|
5
7
|
# Creates a Scraper. Pass values using the options hash.
|
6
8
|
#
|
@@ -65,11 +67,9 @@ module TF2R
|
|
65
67
|
# @return [Array]
|
66
68
|
# * the raffle Hash from scrape_raffle_for_raffle
|
67
69
|
# * the creator Hash from scrape_raffle_for_creator
|
68
|
-
# * the participants Array from scrape_raffle_for_participants
|
69
70
|
def scrape_raffle(page)
|
70
71
|
[scrape_raffle_for_raffle(page),
|
71
|
-
scrape_raffle_for_creator(page)
|
72
|
-
scrape_raffle_for_participants(page)]
|
72
|
+
scrape_raffle_for_creator(page)]
|
73
73
|
end
|
74
74
|
|
75
75
|
# Scrapes a raffle page for information about the creator.
|
@@ -156,9 +156,10 @@ module TF2R
|
|
156
156
|
start_time: start_time, end_time: end_time}
|
157
157
|
end
|
158
158
|
|
159
|
-
#
|
159
|
+
# @deprecated Please use {#TF2R::API} instead. The API provides a far more
|
160
|
+
# efficient and reliable method of retrieving the entry list.
|
160
161
|
#
|
161
|
-
#
|
162
|
+
# Scrapes a raffle page for all the participants.
|
162
163
|
#
|
163
164
|
# @param page [Mechanize::Page] the raffle page.
|
164
165
|
# @return [Array] contains Hashes representing each of the participants,
|
@@ -167,6 +168,8 @@ module TF2R
|
|
167
168
|
# * :username (+String+) — the participant's username.
|
168
169
|
# * :colour (+String+) — hex colour code of the participant's username.
|
169
170
|
def scrape_raffle_for_participants(page)
|
171
|
+
warn '[DEPRECATION] `scrape_raffle_for_participants` is deprecated. '\
|
172
|
+
'Please use `TF2R::API` instead.'
|
170
173
|
participants = []
|
171
174
|
participant_divs = page.parser.css('.pentry')
|
172
175
|
participant_divs.each do |participant|
|
@@ -259,29 +262,6 @@ module TF2R
|
|
259
262
|
{name: name, description: description, colour: colour}
|
260
263
|
end
|
261
264
|
|
262
|
-
# Extracts a SteamID64 from a TF2R user link.
|
263
|
-
#
|
264
|
-
# @example
|
265
|
-
# extract_steam_id('http://tf2r.com/user/76561198061719848.html')
|
266
|
-
# #=> 76561198061719848
|
267
|
-
#
|
268
|
-
# @param href [String] The full user profile link.
|
269
|
-
# @return [Fixnum] The Steam ID.
|
270
|
-
def extract_steam_id(href)
|
271
|
-
/http:\/\/tf2r.com\/user\/(\d+)\.html/.match(href)[1].to_i
|
272
|
-
end
|
273
|
-
|
274
|
-
# Extracts a hex colour code.
|
275
|
-
#
|
276
|
-
# @example
|
277
|
-
# extract_colour('color:#70B01B;') #=> '70b01b'
|
278
|
-
#
|
279
|
-
# @param href [String] Any string containing a hex colour code.
|
280
|
-
# @return [String] The hex colour code, downcased.
|
281
|
-
def extract_colour(str)
|
282
|
-
/#(\w+)\s*;/.match(str)[1].downcase
|
283
|
-
end
|
284
|
-
|
285
265
|
# Extracts the Time from any String.
|
286
266
|
#
|
287
267
|
# @param [String] a String containing a unix timestamp value.
|
@@ -298,14 +278,6 @@ module TF2R
|
|
298
278
|
extract_time(td.attribute('data-rsend-unix').to_s)
|
299
279
|
end
|
300
280
|
|
301
|
-
# Extract the link_snippet from a path or link.
|
302
|
-
#
|
303
|
-
# @param [String] any raffle link or path.
|
304
|
-
# @return [String] the raffle's link snippet.
|
305
|
-
def extract_link_snippet(text)
|
306
|
-
/\/(k.+)\.html/.match(text)[1]
|
307
|
-
end
|
308
|
-
|
309
281
|
# Extract the title from a raffle title string.
|
310
282
|
#
|
311
283
|
# @param [String] the raffle title string.
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module TF2R
|
2
|
+
module TextHelpers
|
3
|
+
# Extracts a hex colour code.
|
4
|
+
#
|
5
|
+
# @example
|
6
|
+
# extract_colour('color:#70B01B;') #=> '70b01b'
|
7
|
+
#
|
8
|
+
# @param href [String] Any string containing a hex colour code.
|
9
|
+
# @return [String] The hex colour code, downcased.
|
10
|
+
def extract_colour(str)
|
11
|
+
/#(\w+)\s*;/.match(str)[1].downcase
|
12
|
+
end
|
13
|
+
|
14
|
+
# Extract the link_snippet from a path or link.
|
15
|
+
#
|
16
|
+
# @param [String] any raffle link or path.
|
17
|
+
# @return [String] the raffle's link snippet.
|
18
|
+
def extract_link_snippet(text)
|
19
|
+
/\/(k.+)\.html/.match(text)[1]
|
20
|
+
end
|
21
|
+
|
22
|
+
# Extracts a SteamID64 from a TF2R user link.
|
23
|
+
#
|
24
|
+
# @example
|
25
|
+
# extract_steam_id('http://tf2r.com/user/76561198061719848.html')
|
26
|
+
# #=> 76561198061719848
|
27
|
+
#
|
28
|
+
# @param href [String] The full user profile link.
|
29
|
+
# @return [Fixnum] The Steam ID.
|
30
|
+
def extract_steam_id(href)
|
31
|
+
/http:\/\/tf2r.com\/user\/(\d+)\.html/.match(href)[1].to_i
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
data/lib/tf2r/version.rb
CHANGED
data/spec/scraper_spec.rb
CHANGED
@@ -74,7 +74,6 @@ describe TF2R::Scraper do
|
|
74
74
|
it 'returns the same as its child methods' do
|
75
75
|
expect(result[0]).to eql(scraper.scrape_raffle_for_raffle(raffle_page))
|
76
76
|
expect(result[1]).to eql(scraper.scrape_raffle_for_creator(raffle_page))
|
77
|
-
expect(result[2]).to eql(scraper.scrape_raffle_for_participants(raffle_page))
|
78
77
|
end
|
79
78
|
end
|
80
79
|
|
data/tf2r.gemspec
CHANGED
@@ -24,7 +24,7 @@ Gem::Specification.new do |spec|
|
|
24
24
|
spec.add_development_dependency 'rake', '~> 10.0'
|
25
25
|
|
26
26
|
spec.add_development_dependency 'cane', '~> 2.6'
|
27
|
-
spec.add_development_dependency 'coveralls', '~> 0.7'
|
27
|
+
spec.add_development_dependency 'coveralls', '~> 0.7.1'
|
28
28
|
spec.add_development_dependency 'pry', '~> 0.10'
|
29
29
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
30
30
|
spec.add_development_dependency 'vcr', '~> 2.9'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tf2r
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Justin Kim
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-08-
|
11
|
+
date: 2014-08-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -58,14 +58,14 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: 0.7.1
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
68
|
+
version: 0.7.1
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: pry
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -157,6 +157,7 @@ files:
|
|
157
157
|
- lib/tf2r/api.rb
|
158
158
|
- lib/tf2r/raffle.rb
|
159
159
|
- lib/tf2r/scraper.rb
|
160
|
+
- lib/tf2r/text_helpers.rb
|
160
161
|
- lib/tf2r/version.rb
|
161
162
|
- spec/raffle_spec.rb
|
162
163
|
- spec/raffles.html
|