quakelive_api 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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
+