torrents 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,58 @@
1
+ describe Trackers::ThePirateBay do
2
+ def rest_client(url, type)
3
+ RestClient.should_receive(:get).with(url, {:timeout => 10, :cookies => nil}).any_number_of_times.and_return(File.read("spec/data/the_pirate_bay/#{type}.html"))
4
+ end
5
+
6
+ def create_torrent
7
+ Container::Torrent.new({
8
+ details: "http://thepiratebay.org/torrent/6173093/",
9
+ torrent: "http://torrents.thepiratebay.org/6173093/value.torrent",
10
+ title: "The title",
11
+ tracker: "the_pirate_bay"
12
+ })
13
+ end
14
+
15
+ it "should only list torrents with the right title" do
16
+ rest_client("http://thepiratebay.org/search/chuck/0/99/0", "search")
17
+ torrents = Torrents.the_pirate_bay.search("chuck")
18
+
19
+ torrents.results.each do |torrent|
20
+ torrent.title.should match(/chuck/i)
21
+ torrent.title.should_not eq(torrent.torrent)
22
+ end
23
+
24
+ torrents.should have(30).results
25
+ end
26
+
27
+ it "should be possible to parse the details view" do
28
+ rest_client("http://thepiratebay.org/torrent/6173093/", "details")
29
+ torrent = create_torrent
30
+
31
+ torrent.seeders.should eq(9383)
32
+ end
33
+
34
+ it "should be possible to list recent torrents" do
35
+ rest_client("http://thepiratebay.org/recent/4", "recent")
36
+ Torrents.the_pirate_bay.page(5).should have(30).results
37
+ end
38
+
39
+ it "should found 30 recent movies" do
40
+ rest_client("http://thepiratebay.org/browse/201/4/3", "movies")
41
+ Torrents.the_pirate_bay.page(5).category(:movies).should have(30).results
42
+ end
43
+
44
+ it "should have a working find_by_details method" do
45
+ rest_client("http://thepiratebay.org/torrent/6173093/", "details")
46
+ torrent = Torrents.the_pirate_bay.find_by_details("http://thepiratebay.org/torrent/6173093/")
47
+
48
+ torrent.should_not be_dead
49
+ torrent.seeders.should eq(9383)
50
+ torrent.tid.should eq("bdc14130add1a279625bf3774c12e89d")
51
+ torrent.domain.should eq("thepiratebay.org")
52
+ torrent.imdb.should eq("http://www.imdb.com/title/tt0990407")
53
+ torrent.imdb_id.should eq("tt0990407")
54
+ torrent.id.should eq(6173093)
55
+ torrent.torrent.should eq("http://torrents.thepiratebay.org/6108060/The.Green.Hornet.2010.TS.XViD-T0XiC-iNK.6108060.TPB.torrent")
56
+ torrent.title.should eq("The.Green.Hornet.2010.TS.XViD-T0XiC-iNK")
57
+ end
58
+ end
@@ -0,0 +1,67 @@
1
+ describe Trackers::Torrentleech do
2
+ def rest_client(url, type)
3
+ RestClient.should_receive(:get).with(url, {:timeout => 10, :cookies => cookies}).any_number_of_times.and_return(File.read("spec/data/torrentleech/#{type}.html"))
4
+ end
5
+
6
+ def cookies
7
+ authentication["cookies"]
8
+ end
9
+
10
+ def authentication
11
+ YAML::load(File.read("authentication/torrentleech.yaml"))
12
+ end
13
+
14
+ def create_torrent
15
+ Container::Torrent.new({
16
+ details: "http://www.torrentleech.org/torrent/281171",
17
+ torrent: "http://www.torrentleech.org/download/281171/The.Tourist.2010.720p.BRRip.x264-TiMPE.torrent",
18
+ title: "The title",
19
+ tracker: "torrentleech",
20
+ cookies: cookies
21
+ })
22
+ end
23
+
24
+ it "should only list torrents with the right title" do
25
+ rest_client("http://www.torrentleech.org/torrents/browse/index/query/dvd/page/1", "search")
26
+ torrents = Torrents.torrentleech.cookies(cookies).search("dvd")
27
+
28
+ torrents.results.each do |torrent|
29
+ torrent.title.should_not eq(torrent.torrent)
30
+ torrent.id.should_not eq(0)
31
+ end
32
+
33
+ torrents.should have(100).results
34
+ end
35
+
36
+ it "should be possible to parse the details view" do
37
+ rest_client("http://www.torrentleech.org/torrent/281171", "details")
38
+ torrent = create_torrent
39
+
40
+ torrent.seeders.should eq(49)
41
+ end
42
+
43
+ it "should be possible to list recent torrents" do
44
+ rest_client("http://www.torrentleech.org/torrents/browse/index/page/1", "recent")
45
+ Torrents.torrentleech.cookies(cookies).should have(100).results
46
+ end
47
+
48
+ it "should found 100 recent movies" do
49
+ rest_client("http://www.torrentleech.org/torrents/browse/index/categories/1,8,9,10,11,12,13,14,15,29/page/1", "movies")
50
+ Torrents.torrentleech.cookies(cookies).category(:movies).should have(100).results
51
+ end
52
+
53
+ it "should have a working find_by_details method" do
54
+ rest_client("http://www.torrentleech.org/torrent/281171", "details")
55
+ torrent = Torrents.torrentleech.cookies(cookies).find_by_details("http://www.torrentleech.org/torrent/281171")
56
+
57
+ torrent.should_not be_dead
58
+ torrent.seeders.should eq(49)
59
+ torrent.tid.should eq("a64e45a4260991346b632c866e379b06")
60
+ torrent.domain.should eq("torrentleech.org")
61
+ torrent.imdb.should eq("http://www.imdb.com/title/tt1243957")
62
+ torrent.imdb_id.should eq("tt1243957")
63
+ torrent.id.should eq(281171)
64
+ torrent.torrent.should eq("http://torrentleech.org/download/281171/The.Tourist.2010.720p.BRRip.x264-TiMPE.torrent")
65
+ torrent.title.should eq("The Tourist 2010 720p BRRip x264-TiMPE")
66
+ end
67
+ end
@@ -0,0 +1,68 @@
1
+ describe Trackers::Tti do
2
+ def rest_client(url, type)
3
+ RestClient.should_receive(:get).with(url, {:timeout => 10, :cookies => cookies}).any_number_of_times.and_return(File.read("spec/data/tti/#{type}.html"))
4
+ end
5
+
6
+ def cookies
7
+ authentication["cookies"]
8
+ end
9
+
10
+ def authentication
11
+ YAML::load(File.read("authentication/tti.yaml"))
12
+ end
13
+
14
+ def create_torrent
15
+ Container::Torrent.new({
16
+ details: "http://tti.nu/details.php?id=132470",
17
+ torrent: "http://tti.nu/download2.php/132230/Macbeth.2010.DVDRip.XviD-VoMiT.torrent",
18
+ title: "The title",
19
+ tracker: "tti",
20
+ cookies: cookies
21
+ })
22
+ end
23
+
24
+ it "should only list torrents with the right title" do
25
+ rest_client("http://tti.nu/browse.php?search=dvd&page=0&incldead=0", "search")
26
+ torrents = Torrents.tti.cookies(cookies).search("dvd")
27
+
28
+ torrents.results.each do |torrent|
29
+ torrent.title.should_not eq(torrent.torrent)
30
+ torrent.id.should_not eq(0)
31
+ end
32
+
33
+ torrents.should have(50).results
34
+ end
35
+
36
+ it "should be possible to parse the details view" do
37
+ rest_client("http://tti.nu/details.php?id=132470", "details")
38
+ torrent = create_torrent
39
+
40
+ torrent.should be_valid
41
+ torrent.seeders.should eq(70)
42
+ end
43
+
44
+ it "should be possible to list recent torrents" do
45
+ rest_client("http://tti.nu/browse.php?page=0&incldead=0", "recent")
46
+ Torrents.tti.cookies(cookies).should have(50).results
47
+ end
48
+
49
+ it "should found 50 recent movies" do
50
+ rest_client("http://tti.nu/browse.php?c47=1&c65=1&c59=1&c48=1&page=0&incldead=0", "movies")
51
+ Torrents.tti.cookies(cookies).category(:movies).should have(50).results
52
+ end
53
+
54
+ it "should have a working find_by_details method" do
55
+ rest_client("http://tti.nu/details.php?id=132470", "details")
56
+ torrent = Torrents.tti.cookies(cookies).find_by_details("http://tti.nu/details.php?id=132470")
57
+
58
+ torrent.should_not be_dead
59
+ torrent.seeders.should eq(70)
60
+ torrent.tid.should eq("413a6c863f0a8f58180f97a52f635bd3")
61
+ torrent.domain.should eq("tti.nu")
62
+ torrent.imdb.should eq("http://www.imdb.com/title/tt1536044")
63
+ torrent.imdb_id.should eq("tt1536044")
64
+ torrent.id.should eq(132470)
65
+ torrent.torrent.should eq("http://tti.nu/download2.php/132470/Paranormal.Activity.2.2010.UNRATED.NORDIC.PAL.DVDR-iDiFF.torrent")
66
+ torrent.title.should eq("Paranormal.Activity.2.2010.UNRATED.NORDIC.PAL.DVDR-iDiFF")
67
+ end
68
+ end
data/torrents.gemspec ADDED
@@ -0,0 +1,31 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = "torrents"
6
+ s.version = "1.0.0"
7
+ s.platform = Gem::Platform::RUBY
8
+ s.authors = ["Linus Oleander"]
9
+ s.email = ["linus@oleander.nu"]
10
+ s.homepage = "https://github.com/oleander/Torrents"
11
+ s.summary = %q{Search and download torrents from your favorite bittorrent tracker using Ruby}
12
+ s.description = %q{Search and download torrents from your favorite bittorrent tracker using Ruby.
13
+ Get information like; subtitles, movie information from IMDB (actors, grade, original title, length, trailers and so on.), direct download link to the torrent.
14
+ }
15
+
16
+ s.rubyforge_project = "torrents"
17
+
18
+ s.files = `git ls-files`.split("\n")
19
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
20
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
21
+ s.require_paths = ["lib"]
22
+
23
+ s.add_dependency('rest-client')
24
+ s.add_dependency('nokogiri')
25
+ s.add_dependency('rchardet19')
26
+ s.add_dependency('classify', '~> 0.0.3')
27
+ s.add_dependency('movie_searcher', '~> 0.1.4')
28
+ s.add_dependency('undertexter', '~> 0.1.5')
29
+
30
+ s.add_development_dependency('rspec')
31
+ end
metadata ADDED
@@ -0,0 +1,180 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: torrents
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 1.0.0
6
+ platform: ruby
7
+ authors:
8
+ - Linus Oleander
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2011-02-22 00:00:00 +01:00
14
+ default_executable:
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: rest-client
18
+ prerelease: false
19
+ requirement: &id001 !ruby/object:Gem::Requirement
20
+ none: false
21
+ requirements:
22
+ - - ">="
23
+ - !ruby/object:Gem::Version
24
+ version: "0"
25
+ type: :runtime
26
+ version_requirements: *id001
27
+ - !ruby/object:Gem::Dependency
28
+ name: nokogiri
29
+ prerelease: false
30
+ requirement: &id002 !ruby/object:Gem::Requirement
31
+ none: false
32
+ requirements:
33
+ - - ">="
34
+ - !ruby/object:Gem::Version
35
+ version: "0"
36
+ type: :runtime
37
+ version_requirements: *id002
38
+ - !ruby/object:Gem::Dependency
39
+ name: rchardet19
40
+ prerelease: false
41
+ requirement: &id003 !ruby/object:Gem::Requirement
42
+ none: false
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: "0"
47
+ type: :runtime
48
+ version_requirements: *id003
49
+ - !ruby/object:Gem::Dependency
50
+ name: classify
51
+ prerelease: false
52
+ requirement: &id004 !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirements:
55
+ - - ~>
56
+ - !ruby/object:Gem::Version
57
+ version: 0.0.3
58
+ type: :runtime
59
+ version_requirements: *id004
60
+ - !ruby/object:Gem::Dependency
61
+ name: movie_searcher
62
+ prerelease: false
63
+ requirement: &id005 !ruby/object:Gem::Requirement
64
+ none: false
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: 0.1.4
69
+ type: :runtime
70
+ version_requirements: *id005
71
+ - !ruby/object:Gem::Dependency
72
+ name: undertexter
73
+ prerelease: false
74
+ requirement: &id006 !ruby/object:Gem::Requirement
75
+ none: false
76
+ requirements:
77
+ - - ~>
78
+ - !ruby/object:Gem::Version
79
+ version: 0.1.5
80
+ type: :runtime
81
+ version_requirements: *id006
82
+ - !ruby/object:Gem::Dependency
83
+ name: rspec
84
+ prerelease: false
85
+ requirement: &id007 !ruby/object:Gem::Requirement
86
+ none: false
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: "0"
91
+ type: :development
92
+ version_requirements: *id007
93
+ description: "Search and download torrents from your favorite bittorrent tracker using Ruby. \n Get information like; subtitles, movie information from IMDB (actors, grade, original title, length, trailers and so on.), direct download link to the torrent.\n "
94
+ email:
95
+ - linus@oleander.nu
96
+ executables: []
97
+
98
+ extensions: []
99
+
100
+ extra_rdoc_files: []
101
+
102
+ files:
103
+ - .gitignore
104
+ - .rspec
105
+ - Gemfile
106
+ - README.md
107
+ - Rakefile
108
+ - lib/torrents.rb
109
+ - lib/torrents/container.rb
110
+ - lib/torrents/trackers/the_pirate_bay.rb
111
+ - lib/torrents/trackers/torrentleech.rb
112
+ - lib/torrents/trackers/tti.rb
113
+ - spec/data/the_pirate_bay/details.html
114
+ - spec/data/the_pirate_bay/movies.html
115
+ - spec/data/the_pirate_bay/recent.html
116
+ - spec/data/the_pirate_bay/search.html
117
+ - spec/data/torrentleech/details.html
118
+ - spec/data/torrentleech/movies.html
119
+ - spec/data/torrentleech/recent.html
120
+ - spec/data/torrentleech/search.html
121
+ - spec/data/tti/details.html
122
+ - spec/data/tti/movies.html
123
+ - spec/data/tti/recent.html
124
+ - spec/data/tti/search.html
125
+ - spec/shared_spec.rb
126
+ - spec/spec_helper.rb
127
+ - spec/torrent_spec.rb
128
+ - spec/torrents_spec.rb
129
+ - spec/trackers/the_pirate_bay_spec.rb
130
+ - spec/trackers/torrentleech_spec.rb
131
+ - spec/trackers/tti_spec.rb
132
+ - torrents.gemspec
133
+ has_rdoc: true
134
+ homepage: https://github.com/oleander/Torrents
135
+ licenses: []
136
+
137
+ post_install_message:
138
+ rdoc_options: []
139
+
140
+ require_paths:
141
+ - lib
142
+ required_ruby_version: !ruby/object:Gem::Requirement
143
+ none: false
144
+ requirements:
145
+ - - ">="
146
+ - !ruby/object:Gem::Version
147
+ version: "0"
148
+ required_rubygems_version: !ruby/object:Gem::Requirement
149
+ none: false
150
+ requirements:
151
+ - - ">="
152
+ - !ruby/object:Gem::Version
153
+ version: "0"
154
+ requirements: []
155
+
156
+ rubyforge_project: torrents
157
+ rubygems_version: 1.5.0
158
+ signing_key:
159
+ specification_version: 3
160
+ summary: Search and download torrents from your favorite bittorrent tracker using Ruby
161
+ test_files:
162
+ - spec/data/the_pirate_bay/details.html
163
+ - spec/data/the_pirate_bay/movies.html
164
+ - spec/data/the_pirate_bay/recent.html
165
+ - spec/data/the_pirate_bay/search.html
166
+ - spec/data/torrentleech/details.html
167
+ - spec/data/torrentleech/movies.html
168
+ - spec/data/torrentleech/recent.html
169
+ - spec/data/torrentleech/search.html
170
+ - spec/data/tti/details.html
171
+ - spec/data/tti/movies.html
172
+ - spec/data/tti/recent.html
173
+ - spec/data/tti/search.html
174
+ - spec/shared_spec.rb
175
+ - spec/spec_helper.rb
176
+ - spec/torrent_spec.rb
177
+ - spec/torrents_spec.rb
178
+ - spec/trackers/the_pirate_bay_spec.rb
179
+ - spec/trackers/torrentleech_spec.rb
180
+ - spec/trackers/tti_spec.rb