quakelive_api 0.0.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.
Files changed (57) hide show
  1. data/.gitignore +21 -0
  2. data/.travis.yml +9 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +76 -0
  6. data/Rakefile +14 -0
  7. data/lib/quakelive_api/base.rb +52 -0
  8. data/lib/quakelive_api/error/player_not_found.rb +6 -0
  9. data/lib/quakelive_api/error/request_error.rb +6 -0
  10. data/lib/quakelive_api/game_time.rb +34 -0
  11. data/lib/quakelive_api/items/award.rb +7 -0
  12. data/lib/quakelive_api/items/competitor.rb +7 -0
  13. data/lib/quakelive_api/items/favourite.rb +7 -0
  14. data/lib/quakelive_api/items/model.rb +7 -0
  15. data/lib/quakelive_api/items/recent_game.rb +7 -0
  16. data/lib/quakelive_api/items/record.rb +7 -0
  17. data/lib/quakelive_api/items/structurable.rb +13 -0
  18. data/lib/quakelive_api/items/weapon.rb +7 -0
  19. data/lib/quakelive_api/parser/awards.rb +50 -0
  20. data/lib/quakelive_api/parser/base.rb +33 -0
  21. data/lib/quakelive_api/parser/statistics.rb +81 -0
  22. data/lib/quakelive_api/parser/summary.rb +174 -0
  23. data/lib/quakelive_api/profile/awards/base.rb +24 -0
  24. data/lib/quakelive_api/profile/awards/career_milestones.rb +14 -0
  25. data/lib/quakelive_api/profile/awards/experience.rb +14 -0
  26. data/lib/quakelive_api/profile/awards/mad_skillz.rb +14 -0
  27. data/lib/quakelive_api/profile/awards/social_life.rb +15 -0
  28. data/lib/quakelive_api/profile/awards/sweet_success.rb +14 -0
  29. data/lib/quakelive_api/profile/statistics.rb +18 -0
  30. data/lib/quakelive_api/profile/summary.rb +35 -0
  31. data/lib/quakelive_api/profile.rb +43 -0
  32. data/lib/quakelive_api/version.rb +3 -0
  33. data/lib/quakelive_api.rb +38 -0
  34. data/quakelive_api.gemspec +28 -0
  35. data/test/fixtures/awards/career.txt +382 -0
  36. data/test/fixtures/awards/experience.txt +769 -0
  37. data/test/fixtures/awards/mad_skillz.txt +915 -0
  38. data/test/fixtures/awards/social_life.txt +155 -0
  39. data/test/fixtures/awards/sweet_success.txt +684 -0
  40. data/test/fixtures/profile/error.txt +24 -0
  41. data/test/fixtures/profile/not_found.txt +36 -0
  42. data/test/fixtures/profile/summary.txt +383 -0
  43. data/test/fixtures/statistics/emqz.txt +431 -0
  44. data/test/fixtures/statistics/xsi.txt +558 -0
  45. data/test/fixtures/summary/emqz.txt +304 -0
  46. data/test/fixtures/summary/mariano.txt +380 -0
  47. data/test/quakelive_api/game_time_test.rb +51 -0
  48. data/test/quakelive_api/profile/awards/career_milestones_test.rb +38 -0
  49. data/test/quakelive_api/profile/awards/experience_test.rb +38 -0
  50. data/test/quakelive_api/profile/awards/mad_skillz_test.rb +38 -0
  51. data/test/quakelive_api/profile/awards/social_life_test.rb +38 -0
  52. data/test/quakelive_api/profile/awards/sweet_success_test.rb +38 -0
  53. data/test/quakelive_api/profile/statistics_test.rb +75 -0
  54. data/test/quakelive_api/profile/summary_test.rb +97 -0
  55. data/test/quakelive_api/profile_test.rb +67 -0
  56. data/test/test_helper.rb +47 -0
  57. metadata +220 -0
@@ -0,0 +1,24 @@
1
+ module QuakeliveApi
2
+ class Profile
3
+ module Awards
4
+ class Base < ::QuakeliveApi::Base
5
+ attr_accessor :earned, :unearned
6
+
7
+ private
8
+
9
+ def page
10
+ raise NotImplementedError
11
+ end
12
+
13
+ def url
14
+ "/profile/awards/#{player_name}/#{page}"
15
+ end
16
+
17
+ def setup_variables
18
+ @earned = parser.earned
19
+ @unearned = parser.unearned
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,14 @@
1
+ module QuakeliveApi
2
+ class Profile
3
+ module Awards
4
+ class CareerMilestones < Base # 18 awards
5
+
6
+ private
7
+
8
+ def page
9
+ 3
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module QuakeliveApi
2
+ class Profile
3
+ module Awards
4
+ class Experience < Base # 36 awards
5
+
6
+ private
7
+
8
+ def page
9
+ 1
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module QuakeliveApi
2
+ class Profile
3
+ module Awards
4
+ class MadSkillz < Base # 43 awards
5
+
6
+ private
7
+
8
+ def page
9
+ 2
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,15 @@
1
+ module QuakeliveApi
2
+ class Profile
3
+ module Awards
4
+ class SocialLife < Base # 6 awards
5
+
6
+ private
7
+
8
+ def page
9
+ 5
10
+ end
11
+
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,14 @@
1
+ module QuakeliveApi
2
+ class Profile
3
+ module Awards
4
+ class SweetSuccess < Base # 32 awards
5
+
6
+ private
7
+
8
+ def page
9
+ 4
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,18 @@
1
+ module QuakeliveApi
2
+ class Profile
3
+ class Statistics < ::QuakeliveApi::Base
4
+ attr_reader :weapons, :records
5
+
6
+ private
7
+
8
+ def url
9
+ "/profile/statistics/#{player_name}"
10
+ end
11
+
12
+ def setup_variables
13
+ @weapons = parser.weapons
14
+ @records = parser.records
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,35 @@
1
+ module QuakeliveApi
2
+ class Profile
3
+ class Summary < ::QuakeliveApi::Base
4
+ attr_reader :country, :nick, :clan, :model, :member_since,
5
+ :last_game, :time_played, :wins, :losses, :quits, :frags,
6
+ :deaths, :hits, :shots, :accuracy, :favourite, :recent_awards,
7
+ :recent_games, :recent_competitors
8
+
9
+ private
10
+
11
+ def url
12
+ "/profile/summary/#{player_name}"
13
+ end
14
+
15
+ def setup_variables
16
+ @country = parser.country
17
+ @nick = parser.nick
18
+ @clan = parser.clan
19
+ @model = parser.model
20
+ @member_since = parser.member_since
21
+ @last_game = parser.last_game
22
+ @time_played = parser.time_played
23
+ @wins = parser.wins
24
+ @accuracy = parser.accuracy
25
+ @losses, @quits = parser.losses_quits
26
+ @frags, @deaths = parser.frags_deaths
27
+ @hits, @shots = parser.hits_shots
28
+ @favourite = parser.favourites
29
+ @recent_awards = parser.awards
30
+ @recent_games = parser.recent_games
31
+ @recent_competitors = parser.recent_competitors
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,43 @@
1
+ module QuakeliveApi
2
+ class Profile
3
+ attr_accessor :player_name
4
+
5
+ def initialize(player_name)
6
+ @player_name = player_name
7
+ end
8
+
9
+ def summary
10
+ @summary ||= Summary.new(player_name)
11
+ end
12
+
13
+ def statistics
14
+ @statistics ||= Statistics.new(player_name)
15
+ end
16
+
17
+ def awards_milestones
18
+ @awards_milestones ||= Awards::CareerMilestones.new(player_name)
19
+ end
20
+
21
+ def awards_experience
22
+ @awards_experience ||= Awards::Experience.new(player_name)
23
+ end
24
+
25
+ def awards_skillz
26
+ @awards_skillz ||= Awards::MadSkillz.new(player_name)
27
+ end
28
+
29
+ def awards_social
30
+ @awards_social ||= Awards::SocialLife.new(player_name)
31
+ end
32
+
33
+ def awards_success
34
+ @awards_success ||= Awards::SweetSuccess.new(player_name)
35
+ end
36
+
37
+ def each_award(&block)
38
+ %w(awards_milestones awards_experience awards_skillz awards_social awards_success).each do |awards|
39
+ block.call(send(awards))
40
+ end
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,3 @@
1
+ module QuakeliveApi
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,38 @@
1
+ require "quakelive_api/version"
2
+ require "quakelive_api/base"
3
+ require "quakelive_api/game_time"
4
+ require "quakelive_api/items/structurable"
5
+ require "quakelive_api/items/award"
6
+ require "quakelive_api/items/favourite"
7
+ require "quakelive_api/items/recent_game"
8
+ require "quakelive_api/items/competitor"
9
+ require "quakelive_api/items/model"
10
+ require "quakelive_api/items/weapon"
11
+ require "quakelive_api/items/record"
12
+ require "quakelive_api/parser/base"
13
+ require "quakelive_api/parser/summary"
14
+ require "quakelive_api/parser/statistics"
15
+ require "quakelive_api/parser/awards"
16
+ require "quakelive_api/profile"
17
+ require "quakelive_api/profile/statistics"
18
+ require "quakelive_api/profile/summary"
19
+ require "quakelive_api/profile/awards/base"
20
+ require "quakelive_api/profile/awards/career_milestones"
21
+ require "quakelive_api/profile/awards/experience"
22
+ require "quakelive_api/profile/awards/mad_skillz"
23
+ require "quakelive_api/profile/awards/social_life"
24
+ require "quakelive_api/profile/awards/sweet_success"
25
+ require "quakelive_api/error/player_not_found"
26
+ require "quakelive_api/error/request_error"
27
+ require "net/http"
28
+ require "nokogiri"
29
+ require "date"
30
+ require "time"
31
+
32
+ module QuakeliveApi
33
+
34
+ def self.site
35
+ "http://www.quakelive.com"
36
+ end
37
+
38
+ end
@@ -0,0 +1,28 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'quakelive_api/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "quakelive_api"
8
+ spec.version = QuakeliveApi::VERSION
9
+ spec.authors = ["Rafal Wojsznis"]
10
+ spec.email = ["rafal.wojsznis@gmail.com"]
11
+ spec.description = %q{Pseudo API for QuakeLive}
12
+ spec.summary = %q{Fetch some basic information from QuakeLive site}
13
+ spec.homepage = "https://github.com/emq/quakelive_api"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_dependency "nokogiri", ">= 1.5"
22
+
23
+ spec.add_development_dependency "bundler", "~> 1.3"
24
+ spec.add_development_dependency "rake"
25
+ spec.add_development_dependency "minitest", "~> 5.0.0"
26
+ spec.add_development_dependency "webmock", "~> 1.12.0"
27
+ spec.add_development_dependency "simplecov", "~> 0.8.0.pre"
28
+ end
@@ -0,0 +1,382 @@
1
+ HTTP/1.1 200 OK
2
+ Server: nginx/0.7.67
3
+ Date: Sat, 03 Aug 2013 14:15:13 GMT
4
+ Content-Type: text/html
5
+ Transfer-Encoding: chunked
6
+ Connection: close
7
+ X-Powered-By: PHP/5.3.3
8
+ X-QL-IDENT: 0 standard
9
+
10
+ <div class="detailArea awardId53">
11
+ <img alt="" title="It takes something special to post 10K. Props." src="http://cdn.quakelive.com/web/2013071600/images/awards/md/fear_me_v2013071600.0.png" width="61" height="61" class="fl" />
12
+ <p class="fl ml15 w247">
13
+ <span class="bigRedTxt">Fear Me</span>
14
+ <br />
15
+ <span class="blktxt_11">Accumulate 10,000 frags.</span>
16
+ </p>
17
+
18
+ <ul class="fl">
19
+ <li class="blkbullets blktxt_11">Date awarded: 05/03/2012<!-- (999 days after joining) --></li>
20
+ <li class="blkbullets blktxt_11">
21
+ 24 friends (70% of total) have earned this award
22
+ </li>
23
+ <li class="blkbullets blktxt_11">
24
+ 28705 players (&lt; 1% of total) have earned this award
25
+ </li>
26
+ </ul>
27
+
28
+ <div class="cl"></div>
29
+ </div>
30
+ <div class="detailArea awardId168">
31
+ <img alt="" title="True dedication to the game. Go start some matches!" src="http://cdn.quakelive.com/web/2013071600/images/awards/md/pro_subscriber_v2013071600.0.png" width="61" height="61" class="fl" />
32
+ <p class="fl ml15 w247">
33
+ <span class="bigRedTxt">Pro Subscriber</span>
34
+ <br />
35
+ <span class="blktxt_11">Purchase a pro subscription to QUAKE LIVE.</span>
36
+ </p>
37
+
38
+ <ul class="fl">
39
+ <li class="blkbullets blktxt_11">Date awarded: 02/02/2011<!-- (999 days after joining) --></li>
40
+ <li class="blkbullets blktxt_11">
41
+ </li>
42
+ <li class="blkbullets blktxt_11">
43
+ </li>
44
+ </ul>
45
+
46
+ <div class="cl"></div>
47
+ </div>
48
+ <div class="detailArea awardId62">
49
+ <img alt="" title="Yes, that&#039;s also 500 frags in 8 minutes and 18 seconds." src="http://cdn.quakelive.com/web/2013071600/images/awards/md/2_in_2_v2013071600.0.png" width="61" height="61" class="fl" />
50
+ <p class="fl ml15 w247">
51
+ <span class="bigRedTxt">2 in 2</span>
52
+ <br />
53
+ <span class="blktxt_11">Accumulate 250 "Excellent" Medals.</span>
54
+ </p>
55
+
56
+ <ul class="fl">
57
+ <li class="blkbullets blktxt_11">Date awarded: 08/24/2009<!-- (999 days after joining) --></li>
58
+ <li class="blkbullets blktxt_11">
59
+ 23 friends (67% of total) have earned this award
60
+ </li>
61
+ <li class="blkbullets blktxt_11">
62
+ 41844 players (1% of total) have earned this award
63
+ </li>
64
+ </ul>
65
+
66
+ <div class="cl"></div>
67
+ </div>
68
+ <div class="detailArea awardId52">
69
+ <img alt="" title="You&#039;ve got some serious game." src="http://cdn.quakelive.com/web/2013071600/images/awards/md/dangerous_v2013071600.0.png" width="61" height="61" class="fl" />
70
+ <p class="fl ml15 w247">
71
+ <span class="bigRedTxt">Dangerous</span>
72
+ <br />
73
+ <span class="blktxt_11">Accumulate 2500 frags.</span>
74
+ </p>
75
+
76
+ <ul class="fl">
77
+ <li class="blkbullets blktxt_11">Date awarded: 07/24/2009<!-- (999 days after joining) --></li>
78
+ <li class="blkbullets blktxt_11">
79
+ 27 friends (79% of total) have earned this award
80
+ </li>
81
+ <li class="blkbullets blktxt_11">
82
+ 56027 players (1% of total) have earned this award
83
+ </li>
84
+ </ul>
85
+
86
+ <div class="cl"></div>
87
+ </div>
88
+ <div class="detailArea awardId63">
89
+ <img alt="" title="When people call you a &quot;camper,&quot; challenge them to instagib." src="http://cdn.quakelive.com/web/2013071600/images/awards/md/assassin_v2013071600.0.png" width="61" height="61" class="fl" />
90
+ <p class="fl ml15 w247">
91
+ <span class="bigRedTxt">Assassin</span>
92
+ <br />
93
+ <span class="blktxt_11">Accumulate 250 "Impressive" Medals.</span>
94
+ </p>
95
+
96
+ <ul class="fl">
97
+ <li class="blkbullets blktxt_11">Date awarded: 07/09/2009<!-- (999 days after joining) --></li>
98
+ <li class="blkbullets blktxt_11">
99
+ 28 friends (82% of total) have earned this award
100
+ </li>
101
+ <li class="blkbullets blktxt_11">
102
+ 50359 players (1% of total) have earned this award
103
+ </li>
104
+ </ul>
105
+
106
+ <div class="cl"></div>
107
+ </div>
108
+ <div class="detailArea awardId59">
109
+ <img alt="" title="All you need now is an ear-piece, black suit and shades." src="http://cdn.quakelive.com/web/2013071600/images/awards/md/guardian_v2013071600.0.png" width="61" height="61" class="fl" />
110
+ <p class="fl ml15 w247">
111
+ <span class="bigRedTxt">Guardian</span>
112
+ <br />
113
+ <span class="blktxt_11">Accumulate 100 Capture the Flag Defend Medals.</span>
114
+ </p>
115
+
116
+ <ul class="fl">
117
+ <li class="blkbullets blktxt_11">Date awarded: 07/09/2009<!-- (999 days after joining) --></li>
118
+ <li class="blkbullets blktxt_11">
119
+ 18 friends (52% of total) have earned this award
120
+ </li>
121
+ <li class="blkbullets blktxt_11">
122
+ 26365 players (&lt; 1% of total) have earned this award
123
+ </li>
124
+ </ul>
125
+
126
+ <div class="cl"></div>
127
+ </div>
128
+ <div class="detailArea awardId51">
129
+ <img alt="" title="Just a taste of life in the arena." src="http://cdn.quakelive.com/web/2013071600/images/awards/md/fraggin_great_v2013071600.0.png" width="61" height="61" class="fl" />
130
+ <p class="fl ml15 w247">
131
+ <span class="bigRedTxt">Fraggin' Great</span>
132
+ <br />
133
+ <span class="blktxt_11">Accumulate 1000 total frags.</span>
134
+ </p>
135
+
136
+ <ul class="fl">
137
+ <li class="blkbullets blktxt_11">Date awarded: 07/06/2009<!-- (999 days after joining) --></li>
138
+ <li class="blkbullets blktxt_11">
139
+ 28 friends (82% of total) have earned this award
140
+ </li>
141
+ <li class="blkbullets blktxt_11">
142
+ 76957 players (2% of total) have earned this award
143
+ </li>
144
+ </ul>
145
+
146
+ <div class="cl"></div>
147
+ </div>
148
+ <div class="detailArea awardId74">
149
+ <img alt="" title="The start of something great." src="http://cdn.quakelive.com/web/2013071600/images/awards/md/impressive_v2013071600.0.png" width="61" height="61" class="fl" />
150
+ <p class="fl ml15 w247">
151
+ <span class="bigRedTxt">Impressive</span>
152
+ <br />
153
+ <span class="blktxt_11">Accumulate 250 total frags.</span>
154
+ </p>
155
+
156
+ <ul class="fl">
157
+ <li class="blkbullets blktxt_11">Date awarded: 06/11/2009<!-- (999 days after joining) --></li>
158
+ <li class="blkbullets blktxt_11">
159
+ 29 friends (85% of total) have earned this award
160
+ </li>
161
+ <li class="blkbullets blktxt_11">
162
+ 118582 players (3% of total) have earned this award
163
+ </li>
164
+ </ul>
165
+
166
+ <div class="cl"></div>
167
+ </div>
168
+ <a class="unearnedAwardsLabel" href="javascript:;" onclick="$('.unearnedAwardType3').show();$(this).hide()">Show unearned awards</a>
169
+
170
+ <div class="detailArea_off unearnedAwardType3">
171
+ <img alt="" src="http://cdn.quakelive.com/web/2013071600/images/awards/md/premium_subscriber_v2013071600.0.png" width="61" height="61" class="fl" />
172
+ <p class="fl ml15 w247">
173
+ <span class="bigRedTxt">Premium Subscriber</span>
174
+ <br />
175
+ <span class="blktxt_11">Purchase a premium subscription to QUAKE LIVE.</span>
176
+ </p>
177
+
178
+ <ul class="fl">
179
+
180
+ <li class="blkbullets blktxt_11">
181
+ </li>
182
+ </ul>
183
+
184
+ <div class="cl"></div>
185
+
186
+ </div>
187
+
188
+ <div class="detailArea_off unearnedAwardType3">
189
+ <img alt="" src="http://cdn.quakelive.com/web/2013071600/images/awards/md/dev_love_v2013071600.0.png" width="61" height="61" class="fl" />
190
+ <p class="fl ml15 w247">
191
+ <span class="bigRedTxt">Dev Love</span>
192
+ <br />
193
+ <span class="blktxt_11">Play a DevPick match.</span>
194
+ </p>
195
+
196
+ <ul class="fl">
197
+ <li class="blkbullets blktxt_11">
198
+ 6 friends (17% of total) have earned this award
199
+ </li>
200
+
201
+ <li class="blkbullets blktxt_11">
202
+ 8425 players (&lt; 1% of total) have earned this award
203
+ </li>
204
+ </ul>
205
+
206
+ <div class="cl"></div>
207
+
208
+ </div>
209
+
210
+ <div class="detailArea_off unearnedAwardType3">
211
+ <img alt="" src="http://cdn.quakelive.com/web/2013071600/images/awards/md/sidekick_v2013071600.0.png" width="61" height="61" class="fl" />
212
+ <p class="fl ml15 w247">
213
+ <span class="bigRedTxt">Sidekick</span>
214
+ <br />
215
+ <span class="blktxt_11">Accumulate 100 Capture the Flag Assist Medals.</span>
216
+ </p>
217
+
218
+ <ul class="fl">
219
+ <li class="blkbullets blktxt_11">
220
+ 7 friends (20% of total) have earned this award
221
+ </li>
222
+
223
+ <li class="blkbullets blktxt_11">
224
+ 10041 players (&lt; 1% of total) have earned this award
225
+ </li>
226
+ </ul>
227
+
228
+ <div class="cl"></div>
229
+
230
+ </div>
231
+
232
+ <div class="detailArea_off unearnedAwardType3">
233
+ <img alt="" src="http://cdn.quakelive.com/web/2013071600/images/awards/md/color_guard_v2013071600.0.png" width="61" height="61" class="fl" />
234
+ <p class="fl ml15 w247">
235
+ <span class="bigRedTxt">Color Guard</span>
236
+ <br />
237
+ <span class="blktxt_11">Accumulate 100 Capture Medals.</span>
238
+ </p>
239
+
240
+ <ul class="fl">
241
+ <li class="blkbullets blktxt_11">
242
+ 8 friends (23% of total) have earned this award
243
+ </li>
244
+
245
+ <li class="blkbullets blktxt_11">
246
+ 11620 players (&lt; 1% of total) have earned this award
247
+ </li>
248
+ </ul>
249
+
250
+ <div class="cl"></div>
251
+
252
+ </div>
253
+
254
+ <div class="detailArea_off unearnedAwardType3">
255
+ <img alt="" src="http://cdn.quakelive.com/web/2013071600/images/awards/md/mvp_v2013071600.0.png" width="61" height="61" class="fl" />
256
+ <p class="fl ml15 w247">
257
+ <span class="bigRedTxt">MVP</span>
258
+ <br />
259
+ <span class="blktxt_11">Accumulate 1000 total Capture the Flag Medals (Caps, Def, and Asst combined).</span>
260
+ </p>
261
+
262
+ <ul class="fl">
263
+ <li class="blkbullets blktxt_11">
264
+ 8 friends (23% of total) have earned this award
265
+ </li>
266
+
267
+ <li class="blkbullets blktxt_11">
268
+ 9506 players (&lt; 1% of total) have earned this award
269
+ </li>
270
+ </ul>
271
+
272
+ <div class="cl"></div>
273
+
274
+ </div>
275
+
276
+ <div class="detailArea_off unearnedAwardType3">
277
+ <img alt="" src="http://cdn.quakelive.com/web/2013071600/images/awards/md/fragaholic_v2013071600.0.png" width="61" height="61" class="fl" />
278
+ <p class="fl ml15 w247">
279
+ <span class="bigRedTxt">Fragaholic</span>
280
+ <br />
281
+ <span class="blktxt_11">Accumulate 50,000 frags.</span>
282
+ </p>
283
+
284
+ <ul class="fl">
285
+ <li class="blkbullets blktxt_11">
286
+ 10 friends (29% of total) have earned this award
287
+ </li>
288
+
289
+ <li class="blkbullets blktxt_11">
290
+ 6265 players (&lt; 1% of total) have earned this award
291
+ </li>
292
+ </ul>
293
+
294
+ <div class="cl"></div>
295
+
296
+ </div>
297
+
298
+ <div class="detailArea_off unearnedAwardType3">
299
+ <img alt="" src="http://cdn.quakelive.com/web/2013071600/images/awards/md/merciless_v2013071600.0.png" width="61" height="61" class="fl" />
300
+ <p class="fl ml15 w247">
301
+ <span class="bigRedTxt">Merciless</span>
302
+ <br />
303
+ <span class="blktxt_11">Accumulate 100,000 frags.</span>
304
+ </p>
305
+
306
+ <ul class="fl">
307
+ <li class="blkbullets blktxt_11">
308
+ 5 friends (14% of total) have earned this award
309
+ </li>
310
+
311
+ <li class="blkbullets blktxt_11">
312
+ 1879 players (&lt; 1% of total) have earned this award
313
+ </li>
314
+ </ul>
315
+
316
+ <div class="cl"></div>
317
+
318
+ </div>
319
+
320
+ <div class="detailArea_off unearnedAwardType3">
321
+ <img alt="" src="http://cdn.quakelive.com/web/2013071600/images/awards/md/dark_angel_v2013071600.0.png" width="61" height="61" class="fl" />
322
+ <p class="fl ml15 w247">
323
+ <span class="bigRedTxt">Dark Angel</span>
324
+ <br />
325
+ <span class="blktxt_11">Accumulate 250,000 frags.</span>
326
+ </p>
327
+
328
+ <ul class="fl">
329
+ <li class="blkbullets blktxt_11">
330
+ No friends have earned this award
331
+ </li>
332
+
333
+ <li class="blkbullets blktxt_11">
334
+ 154 players (&lt; 1% of total) have earned this award
335
+ </li>
336
+ </ul>
337
+
338
+ <div class="cl"></div>
339
+
340
+ </div>
341
+
342
+ <div class="detailArea_off unearnedAwardType3">
343
+ <img alt="" src="http://cdn.quakelive.com/web/2013071600/images/awards/md/azrael_500k_v2013071600.0.png" width="61" height="61" class="fl" />
344
+ <p class="fl ml15 w247">
345
+ <span class="bigRedTxt">Azrael</span>
346
+ <br />
347
+ <span class="blktxt_11">Accumulate 500,000 frags.</span>
348
+ </p>
349
+
350
+ <ul class="fl">
351
+ <li class="blkbullets blktxt_11">
352
+ No friends have earned this award
353
+ </li>
354
+
355
+ <li class="blkbullets blktxt_11">
356
+ 7 players (&lt; 1% of total) have earned this award
357
+ </li>
358
+ </ul>
359
+
360
+ <div class="cl"></div>
361
+
362
+ </div>
363
+
364
+ <div class="detailArea_off unearnedAwardType3">
365
+ <img alt="" src="http://cdn.quakelive.com/web/2013071600/images/awards/md/hell_seraph_1m_v2013071600.0.png" width="61" height="61" class="fl" />
366
+ <p class="fl ml15 w247">
367
+ <span class="bigRedTxt">Hell Seraph</span>
368
+ <br />
369
+ <span class="blktxt_11">Accumulate 1,000,000 frags.</span>
370
+ </p>
371
+
372
+ <ul class="fl">
373
+
374
+ <li class="blkbullets blktxt_11">
375
+ No players have earned this award
376
+ </li>
377
+ </ul>
378
+
379
+ <div class="cl"></div>
380
+
381
+ </div>
382
+