live_soccer 0.1.1 → 0.1.2
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.
- data/CHANGELOG +3 -0
- data/VERSION +1 -1
- data/bin/live_soccer +1 -12
- data/lib/live_soccer.rb +1 -0
- data/lib/live_soccer/checker.rb +13 -7
- data/lib/live_soccer/command.rb +13 -0
- data/lib/live_soccer/match.rb +16 -2
- data/live_soccer.gemspec +4 -2
- data/spec/checker_spec.rb +1 -1
- data/spec/command_spec.rb +5 -0
- data/spec/match_spec.rb +7 -1
- data/spec/spec_helper.rb +3 -1
- data/spec/support/all_matches.html +80 -347
- metadata +23 -21
data/CHANGELOG
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.2
|
data/bin/live_soccer
CHANGED
@@ -3,16 +3,5 @@
|
|
3
3
|
|
4
4
|
$LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', 'lib')
|
5
5
|
require 'live_soccer'
|
6
|
-
require 'thor'
|
7
6
|
|
8
|
-
|
9
|
-
default_task :show
|
10
|
-
|
11
|
-
desc "show", "shows the current matches(if any) and the results"
|
12
|
-
def show
|
13
|
-
collection = LiveSoccer::MatchCollection.new(LiveSoccer::Checker.parse_matches)
|
14
|
-
puts collection.to_s
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
Command.start
|
7
|
+
LiveSoccer::Command.start
|
data/lib/live_soccer.rb
CHANGED
data/lib/live_soccer/checker.rb
CHANGED
@@ -1,8 +1,13 @@
|
|
1
1
|
require 'httparty'
|
2
2
|
require 'nokogiri'
|
3
3
|
|
4
|
+
class Nokogiri::XML::Node
|
5
|
+
def soccer_value(selector)
|
6
|
+
self.css(selector).first.content.strip
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
4
10
|
module LiveSoccer
|
5
|
-
|
6
11
|
class Checker
|
7
12
|
MATCHES_URL = "http://espn.estadao.com.br/temporeal/acoes.listaPartidasAjax.tiles.logic?"
|
8
13
|
|
@@ -13,9 +18,11 @@ module LiveSoccer
|
|
13
18
|
def self.parse_matches
|
14
19
|
[].tap do |matches|
|
15
20
|
self.each_match do |match|
|
16
|
-
|
17
|
-
|
18
|
-
|
21
|
+
date = "#{match.soccer_value 'li.noticia_dia'} #{match.soccer_value 'li.noticia_hora'} -03:00"
|
22
|
+
|
23
|
+
matches << { date: DateTime.parse(date),
|
24
|
+
home: match.soccer_value('div.jogo td.time1'),
|
25
|
+
visitor: match.soccer_value('div.jogo td.time2'),
|
19
26
|
score: match.css('div.jogo td.placar').last.content.strip,
|
20
27
|
id: match.css('div.jogo td.placar a').first && match.css('div.jogo td.placar a').first.attributes["href"].value.split("id=").last }
|
21
28
|
end
|
@@ -27,8 +34,7 @@ module LiveSoccer
|
|
27
34
|
Nokogiri::HTML.parse(self.fetch_matches).css('div.bloco_jogos').each do |link|
|
28
35
|
yield link
|
29
36
|
end
|
30
|
-
end
|
31
|
-
|
37
|
+
end
|
32
38
|
end
|
33
39
|
|
34
|
-
end
|
40
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'thor'
|
2
|
+
|
3
|
+
module LiveSoccer
|
4
|
+
class Command < Thor
|
5
|
+
default_task :show
|
6
|
+
|
7
|
+
desc "show", "shows the current matches(if any) and the results"
|
8
|
+
def show
|
9
|
+
collection = LiveSoccer::MatchCollection.new(LiveSoccer::Checker.parse_matches)
|
10
|
+
puts collection.to_s
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
data/lib/live_soccer/match.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# encoding: UTF-8
|
2
2
|
module LiveSoccer
|
3
3
|
class Match
|
4
|
-
attr_accessor :id, :date, :home, :visitor, :score
|
4
|
+
attr_accessor :id, :date, :home, :visitor, :score, :penalty_home, :penalty_visitor
|
5
5
|
|
6
6
|
def initialize(attrs)
|
7
7
|
self.id = attrs.fetch :id
|
@@ -9,11 +9,25 @@ module LiveSoccer
|
|
9
9
|
self.home = attrs.fetch :home
|
10
10
|
self.visitor = attrs.fetch :visitor
|
11
11
|
self.score = attrs.fetch :score
|
12
|
+
self.penalty_home = attrs.delete(:penalty_home) || nil
|
13
|
+
self.penalty_visitor = attrs.delete(:penalty_visitor) || nil
|
12
14
|
end
|
13
15
|
|
14
16
|
def to_s
|
15
|
-
"#{date.strftime("%d%b %H:%M")} - #{self.home} #{
|
17
|
+
"#{date.strftime("%d%b %H:%M")} - #{self.home} #{score_and_penalties} #{self.visitor}"
|
16
18
|
end
|
17
19
|
|
20
|
+
def score_and_penalties
|
21
|
+
with_penalties { self.score }
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
def with_penalties
|
26
|
+
"".tap do |output|
|
27
|
+
output << "(#{self.penalty_home}) " if self.penalty_home
|
28
|
+
output << yield
|
29
|
+
output << " (#{self.penalty_visitor})" if self.penalty_visitor
|
30
|
+
end
|
31
|
+
end
|
18
32
|
end
|
19
33
|
end
|
data/live_soccer.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "live_soccer"
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Matias H. Leidemer"]
|
12
|
-
s.date = "2012-05-
|
12
|
+
s.date = "2012-05-26"
|
13
13
|
s.description = "Find out how your soccer team is going right now!"
|
14
14
|
s.email = "matiasleidemer@gmail.com"
|
15
15
|
s.executables = ["live_soccer"]
|
@@ -30,10 +30,12 @@ Gem::Specification.new do |s|
|
|
30
30
|
"bin/live_soccer",
|
31
31
|
"lib/live_soccer.rb",
|
32
32
|
"lib/live_soccer/checker.rb",
|
33
|
+
"lib/live_soccer/command.rb",
|
33
34
|
"lib/live_soccer/match.rb",
|
34
35
|
"lib/live_soccer/match_collection.rb",
|
35
36
|
"live_soccer.gemspec",
|
36
37
|
"spec/checker_spec.rb",
|
38
|
+
"spec/command_spec.rb",
|
37
39
|
"spec/live_soccer_spec.rb",
|
38
40
|
"spec/match_collection_spec.rb",
|
39
41
|
"spec/match_spec.rb",
|
data/spec/checker_spec.rb
CHANGED
@@ -15,7 +15,7 @@ describe "Checker" do
|
|
15
15
|
end
|
16
16
|
|
17
17
|
describe ".parse_matches" do
|
18
|
-
let(:match) { { date: DateTime.parse("
|
18
|
+
let(:match) { { date: DateTime.parse("24May 20h00 -03:00"), home: "Santos", visitor: "Vélez Sarsfield", score: "1 x 0", id: "39230" } }
|
19
19
|
|
20
20
|
it "parses the matches" do
|
21
21
|
LiveSoccer::Checker.parse_matches.first.should == match
|
data/spec/match_spec.rb
CHANGED
@@ -4,6 +4,7 @@ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
|
4
4
|
describe "Match" do
|
5
5
|
|
6
6
|
let(:params) { { date: DateTime.parse("20May 18h30"), home: "Vasco", visitor: "Grêmio", score: "1 x 2", id: "40075" } }
|
7
|
+
let(:match) { LiveSoccer::Match.new params }
|
7
8
|
|
8
9
|
describe ".new" do
|
9
10
|
it "initializes a new Match class" do
|
@@ -13,9 +14,14 @@ describe "Match" do
|
|
13
14
|
|
14
15
|
describe "#to_s" do
|
15
16
|
it "returns the match as a string" do
|
16
|
-
match = LiveSoccer::Match.new params
|
17
17
|
match.to_s.should == "20May 18:30 - Vasco 1 x 2 Grêmio"
|
18
18
|
end
|
19
|
+
|
20
|
+
it "returns the match with penalties score" do
|
21
|
+
match.penalty_home = "4"
|
22
|
+
match.penalty_visitor = "5"
|
23
|
+
match.to_s.should == "20May 18:30 - Vasco (4) 1 x 2 (5) Grêmio"
|
24
|
+
end
|
19
25
|
end
|
20
26
|
|
21
27
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,9 +1,11 @@
|
|
1
|
+
require 'simplecov'
|
2
|
+
SimpleCov.start
|
3
|
+
|
1
4
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
5
|
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
3
6
|
require 'rspec'
|
4
7
|
require 'live_soccer'
|
5
8
|
require 'fakeweb'
|
6
|
-
|
7
9
|
# Requires supporting files with custom matchers and macros, etc,
|
8
10
|
# in ./support/ and its subdirectories.
|
9
11
|
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
|
@@ -8,31 +8,34 @@
|
|
8
8
|
<ul id="tr_agenda" class="clearfix">
|
9
9
|
|
10
10
|
<li >
|
11
|
-
<a href="#" rel="
|
11
|
+
<a href="#" rel="193" title="/Copa do Brasil 2012">Copa do Brasil 2012</a>
|
12
12
|
</li>
|
13
13
|
|
14
|
-
<li
|
15
|
-
<a href="#" rel="
|
14
|
+
<li >
|
15
|
+
<a href="#" rel="194" title="/Libertadores da América 2012">Libertadores da América 2012</a>
|
16
|
+
</li>
|
17
|
+
|
18
|
+
<li >
|
19
|
+
<a href="#" rel="199" title="/Brasileiro Série B 2012">Brasileiro Série B 2012</a>
|
16
20
|
</li>
|
17
21
|
|
18
22
|
</ul>
|
19
23
|
|
20
24
|
|
25
|
+
<!-- JOGOS ENCERRRADOS -->
|
21
26
|
|
22
|
-
|
23
|
-
|
24
|
-
<h2>Jogos em andamento</h2>
|
27
|
+
<h2>Jogos encerrrados</h2>
|
25
28
|
|
26
29
|
|
27
30
|
<div class="bloco_jogos">
|
28
31
|
<div class="img_noticias">
|
29
|
-
<ul
|
30
|
-
<li class="noticia_hora">
|
32
|
+
<ul >
|
33
|
+
<li class="noticia_hora">20h00</li>
|
31
34
|
<li class="noticia_dia">
|
32
35
|
|
33
36
|
|
34
|
-
Agora
|
35
37
|
|
38
|
+
24May
|
36
39
|
|
37
40
|
|
38
41
|
|
@@ -42,100 +45,100 @@
|
|
42
45
|
|
43
46
|
|
44
47
|
<div class="jogo ">
|
45
|
-
<table
|
48
|
+
<table cellpadding="0" cellspacing="0" border="0">
|
46
49
|
<colgroup>
|
47
50
|
<col width="60" />
|
48
51
|
<col width="90" />
|
49
|
-
<col width="
|
52
|
+
<col width="55" />
|
50
53
|
<col width="25" />
|
51
54
|
<col width="80" />
|
52
55
|
<col width="25" />
|
53
|
-
<col width="
|
56
|
+
<col width="55" />
|
54
57
|
<col width="90" />
|
55
|
-
<col width="
|
58
|
+
<col width="50" />
|
56
59
|
</colgroup>
|
57
60
|
<tbody>
|
58
61
|
<tr>
|
59
62
|
<td class="placar">
|
60
|
-
|
61
63
|
</td>
|
62
64
|
<td class="time1">
|
63
65
|
|
64
66
|
|
65
|
-
<a href="/temporeal/acoes.partida.logic?realTimeMatch.id=
|
66
|
-
|
67
|
+
<a href="/temporeal/acoes.partida.logic?realTimeMatch.id=39230" title="Santos">
|
68
|
+
Santos
|
67
69
|
</a>
|
68
70
|
|
69
71
|
|
70
|
-
|
71
|
-
|
72
|
+
|
72
73
|
</td>
|
73
74
|
<td class="time">
|
74
75
|
|
75
76
|
|
76
77
|
|
77
|
-
<a href="/temporeal/acoes.partida.logic?realTimeMatch.id=
|
78
|
-
<img src="http://contenti1.espn.com.br/time/
|
78
|
+
<a href="/temporeal/acoes.partida.logic?realTimeMatch.id=39230" title="Santos">
|
79
|
+
<img src="http://contenti1.espn.com.br/time/8c38a98c-3fc9-3875-94af-233f4f8b4c4b.gif" />
|
79
80
|
</a>
|
80
81
|
|
81
82
|
|
82
|
-
|
83
|
-
|
84
|
-
|
83
|
+
|
84
|
+
|
85
85
|
</td>
|
86
|
-
|
87
|
-
|
88
86
|
<td class="placar_penalt man">
|
87
|
+
|
88
|
+
<a title="4">
|
89
|
+
4
|
90
|
+
</a>
|
89
91
|
|
90
|
-
</td>
|
91
|
-
|
92
|
+
</td>
|
92
93
|
<td class="placar">
|
93
94
|
|
94
95
|
|
95
96
|
|
96
|
-
|
97
|
+
|
97
98
|
|
98
99
|
|
99
|
-
<a href="/temporeal/acoes.partida.logic?realTimeMatch.id=
|
100
|
-
1 x
|
100
|
+
<a href="/temporeal/acoes.partida.logic?realTimeMatch.id=39230" title="1 x 0">
|
101
|
+
1 x 0
|
101
102
|
</a>
|
102
103
|
|
103
104
|
|
104
|
-
|
105
|
+
|
105
106
|
</td>
|
106
|
-
|
107
107
|
<td class="placar_penalt vis">
|
108
|
+
|
109
|
+
<a title="2">
|
110
|
+
2
|
111
|
+
</a>
|
108
112
|
|
109
113
|
</td>
|
110
|
-
|
111
114
|
<td class="time">
|
112
115
|
|
113
116
|
|
114
117
|
|
115
|
-
<a href="/temporeal/acoes.partida.logic?realTimeMatch.id=
|
116
|
-
<img src="http://contenti1.espn.com.br/time/
|
118
|
+
<a href="/temporeal/acoes.partida.logic?realTimeMatch.id=39230" title="Vélez Sarsfield">
|
119
|
+
<img src="http://contenti1.espn.com.br/time/7ad5f137-8e50-3ada-aa47-e66999298ba7.png" />
|
117
120
|
</a>
|
118
121
|
|
119
122
|
|
120
|
-
|
123
|
+
|
121
124
|
|
122
125
|
</td>
|
123
|
-
<td class="time2">
|
126
|
+
<td class="time2">
|
124
127
|
|
125
128
|
|
126
|
-
<a href="/temporeal/acoes.partida.logic?realTimeMatch.id=
|
127
|
-
|
129
|
+
<a href="/temporeal/acoes.partida.logic?realTimeMatch.id=39230" title="Vélez Sarsfield">
|
130
|
+
Vélez Sarsfield
|
128
131
|
</a>
|
129
132
|
|
130
133
|
|
131
|
-
|
134
|
+
|
132
135
|
</td>
|
133
136
|
<td>
|
134
137
|
|
135
138
|
|
136
139
|
|
137
140
|
|
138
|
-
<a href="/temporeal/acoes.partida.logic?realTimeMatch.id=
|
141
|
+
<a href="/temporeal/acoes.partida.logic?realTimeMatch.id=39230"
|
139
142
|
title="Jogos transmitidos com narração da partida e todas as estatísticas" class="data_full">
|
140
143
|
Lance a Lance</a>
|
141
144
|
|
@@ -145,125 +148,22 @@
|
|
145
148
|
|
146
149
|
|
147
150
|
|
148
|
-
</td>
|
151
|
+
</td>
|
149
152
|
</tr>
|
150
153
|
</tbody>
|
151
154
|
</table>
|
152
155
|
</div>
|
153
156
|
</div>
|
154
157
|
|
155
|
-
<div class="bloco_jogos">
|
156
|
-
<div class="img_noticias">
|
157
|
-
<ul >
|
158
|
-
<li class="noticia_hora">16h00</li>
|
159
|
-
<li class="noticia_dia">
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
20May
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
</li>
|
168
|
-
</ul>
|
169
|
-
</div>
|
170
|
-
|
171
|
-
|
172
|
-
<div class="jogo ">
|
173
|
-
<table cellpadding="0" cellspacing="0" border="0">
|
174
|
-
<colgroup>
|
175
|
-
<col width="60" />
|
176
|
-
<col width="90" />
|
177
|
-
<col width="55" />
|
178
|
-
<col width="25" />
|
179
|
-
<col width="80" />
|
180
|
-
<col width="25" />
|
181
|
-
<col width="55" />
|
182
|
-
<col width="90" />
|
183
|
-
<col width="50" />
|
184
|
-
</colgroup>
|
185
|
-
<tbody>
|
186
|
-
<tr>
|
187
|
-
<td class="placar">
|
188
|
-
</td>
|
189
|
-
<td class="time1">
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
Rennes
|
194
|
-
|
195
|
-
|
196
|
-
</td>
|
197
|
-
<td class="time">
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
<img src="http://contenti1.espn.com.br/time/07415332-64a9-3407-86f5-45b0a37bb7b7.png" />
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
</td>
|
207
|
-
<td class="placar_penalt man">
|
208
|
-
|
209
|
-
</td>
|
210
|
-
<td class="placar">
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
5 x 0
|
219
|
-
|
220
|
-
|
221
|
-
</td>
|
222
|
-
<td class="placar_penalt vis">
|
223
|
-
|
224
|
-
</td>
|
225
|
-
<td class="time">
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
<img src="http://contenti1.espn.com.br/time/3554362f-20ca-32f4-b434-4f8afc02cf23.png" />
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
</td>
|
235
|
-
<td class="time2">
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
Dijon
|
240
|
-
|
241
|
-
|
242
|
-
</td>
|
243
|
-
<td>
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
<!-- <a title="Placar" class="">Jogos transmitidos com Placar</a> -->
|
249
|
-
|
250
|
-
|
251
|
-
</td>
|
252
|
-
</tr>
|
253
|
-
</tbody>
|
254
|
-
</table>
|
255
|
-
</div>
|
256
|
-
</div>
|
257
|
-
|
258
158
|
<div class="bloco_jogos">
|
259
159
|
<div class="img_noticias">
|
260
|
-
<ul
|
261
|
-
<li class="noticia_hora">
|
160
|
+
<ul >
|
161
|
+
<li class="noticia_hora">21h00</li>
|
262
162
|
<li class="noticia_dia">
|
263
163
|
|
264
164
|
|
265
|
-
Agora
|
266
165
|
|
166
|
+
24May
|
267
167
|
|
268
168
|
|
269
169
|
|
@@ -275,228 +175,92 @@
|
|
275
175
|
|
276
176
|
|
277
177
|
<div class="jogo odd">
|
278
|
-
<table
|
178
|
+
<table cellpadding="0" cellspacing="0" border="0">
|
279
179
|
<colgroup>
|
280
180
|
<col width="60" />
|
281
181
|
<col width="90" />
|
282
|
-
<col width="
|
182
|
+
<col width="55" />
|
283
183
|
<col width="25" />
|
284
184
|
<col width="80" />
|
285
185
|
<col width="25" />
|
286
|
-
<col width="
|
186
|
+
<col width="55" />
|
287
187
|
<col width="90" />
|
288
|
-
<col width="
|
188
|
+
<col width="50" />
|
289
189
|
</colgroup>
|
290
190
|
<tbody>
|
291
191
|
<tr>
|
292
192
|
<td class="placar">
|
293
|
-
|
294
193
|
</td>
|
295
194
|
<td class="time1">
|
296
195
|
|
297
196
|
|
298
|
-
<a href="/temporeal/acoes.partida.logic?realTimeMatch.id=
|
299
|
-
|
197
|
+
<a href="/temporeal/acoes.partida.logic?realTimeMatch.id=38938" title="Grêmio">
|
198
|
+
Grêmio
|
300
199
|
</a>
|
301
200
|
|
302
201
|
|
303
|
-
|
304
|
-
|
202
|
+
|
305
203
|
</td>
|
306
204
|
<td class="time">
|
307
205
|
|
308
206
|
|
309
207
|
|
310
|
-
<a href="/temporeal/acoes.partida.logic?realTimeMatch.id=
|
311
|
-
<img src="http://contenti1.espn.com.br/time/
|
208
|
+
<a href="/temporeal/acoes.partida.logic?realTimeMatch.id=38938" title="Grêmio">
|
209
|
+
<img src="http://contenti1.espn.com.br/time/fe9a6e35-61ad-3362-92dc-431be84f8d37.gif" />
|
312
210
|
</a>
|
313
211
|
|
314
212
|
|
315
|
-
|
316
|
-
|
317
|
-
|
213
|
+
|
214
|
+
|
318
215
|
</td>
|
319
|
-
|
320
|
-
|
321
216
|
<td class="placar_penalt man">
|
322
217
|
|
323
|
-
</td>
|
324
|
-
|
218
|
+
</td>
|
325
219
|
<td class="placar">
|
326
220
|
|
327
221
|
|
328
222
|
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
<a href="/temporeal/acoes.partida.logic?realTimeMatch.id=40085" title="0 x 0">
|
333
|
-
0 x 0
|
334
|
-
</a>
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
</td>
|
339
|
-
|
340
|
-
<td class="placar_penalt vis">
|
341
|
-
|
342
|
-
</td>
|
343
|
-
|
344
|
-
<td class="time">
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
<a href="/temporeal/acoes.partida.logic?realTimeMatch.id=40085" title="Atlético-GO">
|
349
|
-
<img src="http://contenti1.espn.com.br/time/a67d8582-6eba-3110-bc95-52e40c999a78.gif" />
|
350
|
-
</a>
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
</td>
|
356
|
-
<td class="time2">
|
357
|
-
|
358
|
-
|
359
|
-
<a href="/temporeal/acoes.partida.logic?realTimeMatch.id=40085" title="Atlético-GO">
|
360
|
-
Atlético-GO
|
361
|
-
</a>
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
</td>
|
366
|
-
<td>
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
<a href="/temporeal/acoes.partida.logic?realTimeMatch.id=40085"
|
372
|
-
title="Jogos transmitidos com narração da partida e todas as estatísticas" class="data_full">
|
373
|
-
Lance a Lance</a>
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
|
380
223
|
|
381
|
-
</td>
|
382
|
-
</tr>
|
383
|
-
</tbody>
|
384
|
-
</table>
|
385
|
-
</div>
|
386
|
-
</div>
|
387
|
-
|
388
|
-
<div class="bloco_jogos">
|
389
|
-
<div class="img_noticias">
|
390
|
-
<ul class="agora">
|
391
|
-
<li class="noticia_hora">18h30</li>
|
392
|
-
<li class="noticia_dia">
|
393
|
-
|
394
|
-
|
395
|
-
Agora
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
</li>
|
401
|
-
</ul>
|
402
|
-
</div>
|
403
|
-
|
404
|
-
|
405
|
-
<div class="jogo ">
|
406
|
-
<table cellpadding="0" cellspacing="0" border="0">
|
407
|
-
<colgroup>
|
408
|
-
<col width="60" />
|
409
|
-
<col width="90" />
|
410
|
-
<col width="64" />
|
411
|
-
<col width="25" />
|
412
|
-
<col width="80" />
|
413
|
-
<col width="25" />
|
414
|
-
<col width="64" />
|
415
|
-
<col width="90" />
|
416
|
-
<col width="40" />
|
417
|
-
</colgroup>
|
418
|
-
<tbody>
|
419
|
-
<tr>
|
420
|
-
<td class="placar">
|
421
|
-
|
422
|
-
</td>
|
423
|
-
<td class="time1">
|
424
224
|
|
425
225
|
|
426
|
-
<a href="/temporeal/acoes.partida.logic?realTimeMatch.id=
|
427
|
-
|
226
|
+
<a href="/temporeal/acoes.partida.logic?realTimeMatch.id=38938" title="2 x 0">
|
227
|
+
2 x 0
|
428
228
|
</a>
|
429
229
|
|
430
230
|
|
431
|
-
|
432
|
-
|
433
|
-
</td>
|
434
|
-
<td class="time">
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
<a href="/temporeal/acoes.partida.logic?realTimeMatch.id=40093" title="Bahia">
|
439
|
-
<img src="http://contenti1.espn.com.br/time/afdfb939-ff85-30fc-aa1e-9224ef6c145e.png" />
|
440
|
-
</a>
|
441
231
|
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
</td>
|
447
|
-
|
448
|
-
|
449
|
-
<td class="placar_penalt man">
|
450
|
-
|
451
|
-
</td>
|
452
|
-
|
453
|
-
<td class="placar">
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
|
460
|
-
<a href="/temporeal/acoes.partida.logic?realTimeMatch.id=40093" title="0 x 0">
|
461
|
-
0 x 0
|
462
|
-
</a>
|
463
|
-
|
464
|
-
|
465
|
-
|
466
232
|
</td>
|
467
|
-
|
468
233
|
<td class="placar_penalt vis">
|
469
234
|
|
470
235
|
</td>
|
471
|
-
|
472
236
|
<td class="time">
|
473
237
|
|
474
238
|
|
475
239
|
|
476
|
-
<a href="/temporeal/acoes.partida.logic?realTimeMatch.id=
|
477
|
-
<img src="http://contenti1.espn.com.br/time/
|
240
|
+
<a href="/temporeal/acoes.partida.logic?realTimeMatch.id=38938" title="Bahia">
|
241
|
+
<img src="http://contenti1.espn.com.br/time/afdfb939-ff85-30fc-aa1e-9224ef6c145e.png" />
|
478
242
|
</a>
|
479
243
|
|
480
244
|
|
481
|
-
|
245
|
+
|
482
246
|
|
483
247
|
</td>
|
484
|
-
<td class="time2">
|
248
|
+
<td class="time2">
|
485
249
|
|
486
250
|
|
487
|
-
<a href="/temporeal/acoes.partida.logic?realTimeMatch.id=
|
488
|
-
|
251
|
+
<a href="/temporeal/acoes.partida.logic?realTimeMatch.id=38938" title="Bahia">
|
252
|
+
Bahia
|
489
253
|
</a>
|
490
254
|
|
491
255
|
|
492
|
-
|
256
|
+
|
493
257
|
</td>
|
494
258
|
<td>
|
495
259
|
|
496
260
|
|
497
261
|
|
498
262
|
|
499
|
-
<a href="/temporeal/acoes.partida.logic?realTimeMatch.id=
|
263
|
+
<a href="/temporeal/acoes.partida.logic?realTimeMatch.id=38938"
|
500
264
|
title="Jogos transmitidos com narração da partida e todas as estatísticas" class="data_full">
|
501
265
|
Lance a Lance</a>
|
502
266
|
|
@@ -506,36 +270,22 @@
|
|
506
270
|
|
507
271
|
|
508
272
|
|
509
|
-
</td>
|
273
|
+
</td>
|
510
274
|
</tr>
|
511
275
|
</tbody>
|
512
276
|
</table>
|
513
277
|
</div>
|
514
278
|
</div>
|
515
279
|
|
516
|
-
<!-- FIM JOGOS EM ANDAMENTO -->
|
517
|
-
|
518
|
-
|
519
|
-
<!-- JOGOS MARCADOS PARA HOJE -->
|
520
|
-
|
521
|
-
|
522
|
-
<!-- FIM JOGOS MARCADOS PARA HOJE -->
|
523
|
-
|
524
|
-
|
525
|
-
<!-- JOGOS ENCERRRADOS -->
|
526
|
-
|
527
|
-
<h2>Jogos encerrrados</h2>
|
528
|
-
|
529
|
-
|
530
280
|
<div class="bloco_jogos">
|
531
281
|
<div class="img_noticias">
|
532
282
|
<ul >
|
533
|
-
<li class="noticia_hora">
|
283
|
+
<li class="noticia_hora">22h30</li>
|
534
284
|
<li class="noticia_dia">
|
535
285
|
|
536
286
|
|
537
287
|
|
538
|
-
|
288
|
+
24May
|
539
289
|
|
540
290
|
|
541
291
|
|
@@ -564,10 +314,8 @@
|
|
564
314
|
<td class="time1">
|
565
315
|
|
566
316
|
|
567
|
-
<a href="/temporeal/acoes.partida.logic?realTimeMatch.id=40087" title="Ponte Preta">
|
568
|
-
Ponte Preta
|
569
|
-
</a>
|
570
317
|
|
318
|
+
Universidad de Chile
|
571
319
|
|
572
320
|
|
573
321
|
</td>
|
@@ -575,10 +323,8 @@
|
|
575
323
|
|
576
324
|
|
577
325
|
|
578
|
-
<a href="/temporeal/acoes.partida.logic?realTimeMatch.id=40087" title="Ponte Preta">
|
579
|
-
<img src="http://contenti1.espn.com.br/time/d0e3f767-a816-37dc-8305-c55c5591fc4f.gif" />
|
580
|
-
</a>
|
581
326
|
|
327
|
+
<img src="http://contenti1.espn.com.br/time/84d51a07-9b6c-3bf2-838a-6df1cca78b72.gif" />
|
582
328
|
|
583
329
|
|
584
330
|
|
@@ -593,10 +339,8 @@
|
|
593
339
|
|
594
340
|
|
595
341
|
|
596
|
-
<a href="/temporeal/acoes.partida.logic?realTimeMatch.id=40087" title="0 x 1">
|
597
|
-
0 x 1
|
598
|
-
</a>
|
599
342
|
|
343
|
+
1 x 1
|
600
344
|
|
601
345
|
|
602
346
|
</td>
|
@@ -607,10 +351,8 @@
|
|
607
351
|
|
608
352
|
|
609
353
|
|
610
|
-
<a href="/temporeal/acoes.partida.logic?realTimeMatch.id=40087" title="Atlético-MG">
|
611
|
-
<img src="http://contenti1.espn.com.br/time/be421723-4d87-3e44-88f3-66cf8052d88b.gif" />
|
612
|
-
</a>
|
613
354
|
|
355
|
+
<img src="http://contenti1.espn.com.br/time/ae86f5e0-2d19-3ab0-b187-d04c3826b860.png" />
|
614
356
|
|
615
357
|
|
616
358
|
|
@@ -618,26 +360,17 @@
|
|
618
360
|
<td class="time2">
|
619
361
|
|
620
362
|
|
621
|
-
<a href="/temporeal/acoes.partida.logic?realTimeMatch.id=40087" title="Atlético-MG">
|
622
|
-
Atlético-MG
|
623
|
-
</a>
|
624
363
|
|
364
|
+
Libertad
|
625
365
|
|
626
366
|
|
627
367
|
</td>
|
628
368
|
<td>
|
629
369
|
|
630
|
-
|
631
370
|
|
632
|
-
|
633
|
-
<a href="/temporeal/acoes.partida.logic?realTimeMatch.id=40087"
|
634
|
-
title="Jogos transmitidos com narração da partida e todas as estatísticas" class="data_full">
|
635
|
-
Lance a Lance</a>
|
636
|
-
|
637
|
-
|
638
|
-
|
639
371
|
|
640
372
|
|
373
|
+
<!-- <a title="Placar" class="">Jogos transmitidos com Placar</a> -->
|
641
374
|
|
642
375
|
|
643
376
|
</td>
|
@@ -647,4 +380,4 @@
|
|
647
380
|
</div>
|
648
381
|
</div>
|
649
382
|
|
650
|
-
<!-- FIM JOGOS ENCERRRADOS -->
|
383
|
+
<!-- FIM JOGOS ENCERRRADOS -->
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: live_soccer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-05-
|
12
|
+
date: 2012-05-26 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: httparty
|
16
|
-
requirement: &
|
16
|
+
requirement: &70186392687440 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 0.8.3
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70186392687440
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: nokogiri
|
27
|
-
requirement: &
|
27
|
+
requirement: &70186392684660 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 1.5.2
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70186392684660
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: thor
|
38
|
-
requirement: &
|
38
|
+
requirement: &70186392682700 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 0.15.2
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70186392682700
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rspec
|
49
|
-
requirement: &
|
49
|
+
requirement: &70186392679680 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 2.10.0
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70186392679680
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: rdoc
|
60
|
-
requirement: &
|
60
|
+
requirement: &70186392677200 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '3.12'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70186392677200
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: bundler
|
71
|
-
requirement: &
|
71
|
+
requirement: &70186392645960 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ~>
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: 1.1.0
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70186392645960
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: jeweler
|
82
|
-
requirement: &
|
82
|
+
requirement: &70186392641860 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ~>
|
@@ -87,10 +87,10 @@ dependencies:
|
|
87
87
|
version: 1.8.3
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *70186392641860
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: simplecov
|
93
|
-
requirement: &
|
93
|
+
requirement: &70186392635140 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ~>
|
@@ -98,10 +98,10 @@ dependencies:
|
|
98
98
|
version: 0.6.4
|
99
99
|
type: :development
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *70186392635140
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
103
|
name: fakeweb
|
104
|
-
requirement: &
|
104
|
+
requirement: &70186392631120 !ruby/object:Gem::Requirement
|
105
105
|
none: false
|
106
106
|
requirements:
|
107
107
|
- - ~>
|
@@ -109,7 +109,7 @@ dependencies:
|
|
109
109
|
version: 1.3.0
|
110
110
|
type: :development
|
111
111
|
prerelease: false
|
112
|
-
version_requirements: *
|
112
|
+
version_requirements: *70186392631120
|
113
113
|
description: Find out how your soccer team is going right now!
|
114
114
|
email: matiasleidemer@gmail.com
|
115
115
|
executables:
|
@@ -131,10 +131,12 @@ files:
|
|
131
131
|
- bin/live_soccer
|
132
132
|
- lib/live_soccer.rb
|
133
133
|
- lib/live_soccer/checker.rb
|
134
|
+
- lib/live_soccer/command.rb
|
134
135
|
- lib/live_soccer/match.rb
|
135
136
|
- lib/live_soccer/match_collection.rb
|
136
137
|
- live_soccer.gemspec
|
137
138
|
- spec/checker_spec.rb
|
139
|
+
- spec/command_spec.rb
|
138
140
|
- spec/live_soccer_spec.rb
|
139
141
|
- spec/match_collection_spec.rb
|
140
142
|
- spec/match_spec.rb
|
@@ -155,7 +157,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
155
157
|
version: '0'
|
156
158
|
segments:
|
157
159
|
- 0
|
158
|
-
hash: -
|
160
|
+
hash: -3363444524132540551
|
159
161
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
160
162
|
none: false
|
161
163
|
requirements:
|