torrentz 0.0.1 → 0.0.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/Rakefile +18 -0
- data/lib/torrentz/fetch.rb +15 -4
- data/lib/torrentz/logger.rb +4 -0
- data/lib/torrentz/version.rb +1 -1
- data/test/integration/fetch_test.rb +28 -0
- data/test/test_helper.rb +15 -0
- data/test/torrentz/fetch_test.rb +7 -0
- data/torrentz.gemspec +5 -0
- metadata +57 -7
data/Rakefile
CHANGED
@@ -1,2 +1,20 @@
|
|
1
1
|
#!/usr/bin/env rake
|
2
2
|
require "bundler/gem_tasks"
|
3
|
+
|
4
|
+
require 'rake'
|
5
|
+
require 'rake/testtask'
|
6
|
+
|
7
|
+
task :default => :test
|
8
|
+
|
9
|
+
Rake::TestTask.new do |t|
|
10
|
+
t.libs << 'test'
|
11
|
+
t.pattern = "test/**/*_test.rb"
|
12
|
+
t.verbose = true
|
13
|
+
end
|
14
|
+
Rake::Task['test'].comment = "Run all tests"
|
15
|
+
|
16
|
+
Rake::TestTask.new('integration') do |t|
|
17
|
+
t.libs << 'test'
|
18
|
+
t.pattern = "test/integration/*_test.rb"
|
19
|
+
t.verbose = true
|
20
|
+
end
|
data/lib/torrentz/fetch.rb
CHANGED
@@ -1,7 +1,11 @@
|
|
1
|
+
require 'addressable/uri'
|
2
|
+
|
1
3
|
module Torrentz
|
2
4
|
class Fetch
|
3
5
|
include Torrentz::Logger
|
4
6
|
|
7
|
+
attr_accessor :url
|
8
|
+
|
5
9
|
def initialize(url)
|
6
10
|
@url = url
|
7
11
|
end
|
@@ -24,14 +28,14 @@ module Torrentz
|
|
24
28
|
end
|
25
29
|
end
|
26
30
|
|
27
|
-
return
|
31
|
+
return torrent_from_torrentz_url
|
28
32
|
end
|
29
33
|
|
30
34
|
def get_magnet
|
31
35
|
candidate_urls.each do |candidate_url|
|
32
36
|
case candidate_url
|
33
37
|
when /thepiratebay/
|
34
|
-
logger.info "Found Piratebay
|
38
|
+
logger.info "Found Piratebay: #{candidate_url}"
|
35
39
|
return PirateBay.new(candidate_url).get
|
36
40
|
end
|
37
41
|
end
|
@@ -40,7 +44,7 @@ module Torrentz
|
|
40
44
|
end
|
41
45
|
|
42
46
|
def torrentz_doc
|
43
|
-
@torrentz_doc ||= Nokogiri::HTML(open(
|
47
|
+
@torrentz_doc ||= Nokogiri::HTML(open(Addressable::URI.encode(url)))
|
44
48
|
end
|
45
49
|
|
46
50
|
def candidate_urls
|
@@ -49,6 +53,13 @@ module Torrentz
|
|
49
53
|
end
|
50
54
|
end
|
51
55
|
|
56
|
+
##
|
57
|
+
# Uses torcache to try to fetch a torrent.
|
58
|
+
def torrent_from_torrentz_url
|
59
|
+
torrent_id = url.split("/").last
|
60
|
+
"https://torcache.net/torrent/#{torrent_id}.torrent"
|
61
|
+
end
|
62
|
+
|
52
63
|
class Simple
|
53
64
|
include Torrentz::Logger
|
54
65
|
|
@@ -57,7 +68,7 @@ module Torrentz
|
|
57
68
|
end
|
58
69
|
|
59
70
|
def doc
|
60
|
-
@doc ||= Nokogiri::HTML(open(@url))
|
71
|
+
@doc ||= Nokogiri::HTML(open(Addressable::URI.encode(@url)))
|
61
72
|
end
|
62
73
|
end
|
63
74
|
|
data/lib/torrentz/logger.rb
CHANGED
data/lib/torrentz/version.rb
CHANGED
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
describe Torrentz do
|
4
|
+
it 'will find a file that resembles what was queried' do
|
5
|
+
[
|
6
|
+
'Big Bang Theory S05E04 720p',
|
7
|
+
'House S01E01'
|
8
|
+
].each do |search|
|
9
|
+
result = Torrentz.get(search)
|
10
|
+
logger.info result.inspect
|
11
|
+
|
12
|
+
torrent_info = Typhoeus::Request.get(result[:torrent], :follow_location => true).body.bdecode
|
13
|
+
torrent_name = torrent_info['info']['name']
|
14
|
+
|
15
|
+
size_difference = torrent_name.size - search.size
|
16
|
+
size_difference * -1 if size_difference < 0
|
17
|
+
|
18
|
+
smallest = [torrent_name.size, search.size].min
|
19
|
+
distance = Text::Levenshtein.distance(torrent_name, search)
|
20
|
+
logger.info "Distance of result: #{distance}"
|
21
|
+
|
22
|
+
difference = (distance - size_difference) / smallest.to_f
|
23
|
+
logger.info "Difference of result: #{difference}"
|
24
|
+
|
25
|
+
difference.must_be_within_delta 0, 0.2
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'bundler/setup'
|
3
|
+
require 'minitest/autorun'
|
4
|
+
require 'minitest/spec'
|
5
|
+
require 'open-uri'
|
6
|
+
require 'text'
|
7
|
+
require 'bencode'
|
8
|
+
require 'typhoeus'
|
9
|
+
require 'torrentz'
|
10
|
+
|
11
|
+
begin
|
12
|
+
require 'ruby-debug'
|
13
|
+
rescue LoadError; end
|
14
|
+
|
15
|
+
include Torrentz::Logger
|
data/torrentz.gemspec
CHANGED
@@ -17,4 +17,9 @@ Gem::Specification.new do |gem|
|
|
17
17
|
|
18
18
|
gem.add_dependency "rack"
|
19
19
|
gem.add_dependency "nokogiri"
|
20
|
+
gem.add_dependency "addressable"
|
21
|
+
|
22
|
+
gem.add_development_dependency "text"
|
23
|
+
gem.add_development_dependency "typhoeus"
|
24
|
+
gem.add_development_dependency "torrent-ruby"
|
20
25
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: torrentz
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.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-03-
|
12
|
+
date: 2012-03-11 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rack
|
16
|
-
requirement: &
|
16
|
+
requirement: &70148867837020 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70148867837020
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: nokogiri
|
27
|
-
requirement: &
|
27
|
+
requirement: &70148867836360 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,7 +32,51 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70148867836360
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: addressable
|
38
|
+
requirement: &70148867835740 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
type: :runtime
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *70148867835740
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: text
|
49
|
+
requirement: &70148867835100 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
type: :development
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *70148867835100
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: typhoeus
|
60
|
+
requirement: &70148867834480 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ! '>='
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
66
|
+
type: :development
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *70148867834480
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: torrent-ruby
|
71
|
+
requirement: &70148867834060 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: *70148867834060
|
36
80
|
description: torrentz.eu ruby client to search and download torrentz & magnets
|
37
81
|
email:
|
38
82
|
- mrsimo@gmail.com
|
@@ -50,6 +94,9 @@ files:
|
|
50
94
|
- lib/torrentz/logger.rb
|
51
95
|
- lib/torrentz/search.rb
|
52
96
|
- lib/torrentz/version.rb
|
97
|
+
- test/integration/fetch_test.rb
|
98
|
+
- test/test_helper.rb
|
99
|
+
- test/torrentz/fetch_test.rb
|
53
100
|
- torrentz.gemspec
|
54
101
|
homepage: https://github.com/mrsimo/ruby-torrentz
|
55
102
|
licenses: []
|
@@ -75,4 +122,7 @@ rubygems_version: 1.8.10
|
|
75
122
|
signing_key:
|
76
123
|
specification_version: 3
|
77
124
|
summary: torrentz.eu ruby client to search and download torrentz & magnets
|
78
|
-
test_files:
|
125
|
+
test_files:
|
126
|
+
- test/integration/fetch_test.rb
|
127
|
+
- test/test_helper.rb
|
128
|
+
- test/torrentz/fetch_test.rb
|