torrents 1.0.2 → 1.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +11 -2
- data/lib/torrents.rb +9 -2
- data/spec/torrents_spec.rb +10 -1
- data/torrents.gemspec +1 -1
- metadata +1 -1
data/README.md
CHANGED
@@ -40,13 +40,22 @@ The `page` method can be places anywhere before the `results` method.
|
|
40
40
|
|
41
41
|
It starts counting from `1` and goes up, no matter what is used on the site it self.
|
42
42
|
|
43
|
-
|
43
|
+
$ Torrents.the_pirate_bay.page(6).results
|
44
44
|
|
45
45
|
### Specify some cookies
|
46
46
|
|
47
47
|
Some trackers requires cookies to work, even though [The Pirate Bay](http://thepiratebay.org/) is not one of them.
|
48
48
|
|
49
|
-
|
49
|
+
$ Torrents.the_pirate_bay.cookies(user_id: "123", hash: "c4656002ce46f9b418ce72daccfa5424").results
|
50
|
+
|
51
|
+
### Step through torrents
|
52
|
+
|
53
|
+
Here is an example of how to step through the 10 first pages.
|
54
|
+
|
55
|
+
$ torrents = Torrents.the_pirate_bay.step
|
56
|
+
$ 10.times { torrents.results }
|
57
|
+
|
58
|
+
You just add the step method and it will increment `page` everytime you apply the `results` method.
|
50
59
|
|
51
60
|
## What methods to work with
|
52
61
|
|
data/lib/torrents.rb
CHANGED
@@ -26,7 +26,8 @@ class Torrents < Container::Shared
|
|
26
26
|
end
|
27
27
|
|
28
28
|
def content
|
29
|
-
@content
|
29
|
+
@content = {} unless @content
|
30
|
+
@content[self.inner_page] ||= Nokogiri::HTML(self.download(self.url))
|
30
31
|
end
|
31
32
|
|
32
33
|
# Set the default page
|
@@ -40,6 +41,10 @@ class Torrents < Container::Shared
|
|
40
41
|
gsub('<PAGE>', self.inner_page)
|
41
42
|
end
|
42
43
|
|
44
|
+
def step
|
45
|
+
@step = true; self
|
46
|
+
end
|
47
|
+
|
43
48
|
# Makes this the {tracker} tracker
|
44
49
|
def add(tracker)
|
45
50
|
@tracker = tracker.to_s; self
|
@@ -114,7 +119,7 @@ class Torrents < Container::Shared
|
|
114
119
|
end
|
115
120
|
|
116
121
|
def results
|
117
|
-
return @torrents if @torrents.any?
|
122
|
+
return @torrents if @torrents.any? and not @step
|
118
123
|
counter = 0
|
119
124
|
rejected = 0
|
120
125
|
self.inner_torrents(self.content).each do |tr|
|
@@ -135,6 +140,8 @@ class Torrents < Container::Shared
|
|
135
140
|
end
|
136
141
|
|
137
142
|
@errors << "#{counter} torrents where found, #{rejected} where not valid" unless rejected.zero?
|
143
|
+
@page += 1 if @step
|
144
|
+
|
138
145
|
return @torrents
|
139
146
|
end
|
140
147
|
end
|
data/spec/torrents_spec.rb
CHANGED
@@ -192,7 +192,7 @@ describe Torrents do
|
|
192
192
|
rest_client("http://thepiratebay.org/torrent/6173093/", "details")
|
193
193
|
torrent = Torrents.the_pirate_bay.find_by_details("http://thepiratebay.org/torrent/6173093/")
|
194
194
|
|
195
|
-
# Makes sure that all methods
|
195
|
+
# Makes sure that all methods returns something
|
196
196
|
[:seeders, :title, :dead?, :imdb, :imdb_id, :domain, :id].each do |method|
|
197
197
|
torrent.send(method).to_s.should_not be_empty
|
198
198
|
end
|
@@ -228,4 +228,13 @@ describe Torrents do
|
|
228
228
|
end.should_not change(errors, :count)
|
229
229
|
end
|
230
230
|
end
|
231
|
+
|
232
|
+
context "the step method" do
|
233
|
+
it "should be possible to step from 0 to 10" do
|
234
|
+
10.times do |n|
|
235
|
+
RestClient.should_receive(:get).with("http://thepiratebay.org/recent/#{n}", {:timeout => 10, :cookies => nil}).exactly(1).times.and_return("")
|
236
|
+
@torrents.step.results
|
237
|
+
end
|
238
|
+
end
|
239
|
+
end
|
231
240
|
end
|
data/torrents.gemspec
CHANGED