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 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
@@ -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 nil
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(@url))
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
 
@@ -5,5 +5,9 @@ module Torrentz
5
5
  def logger
6
6
  @@logger ||= ::Logger.new($stdout)
7
7
  end
8
+
9
+ def logger=(logger)
10
+ @@logger = logger
11
+ end
8
12
  end
9
13
  end
@@ -1,3 +1,3 @@
1
1
  module Torrentz
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -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
@@ -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
@@ -0,0 +1,7 @@
1
+ require 'test_helper'
2
+
3
+ describe Torrentz::Fetch do
4
+ test 'truth' do
5
+ assert true
6
+ end
7
+ end
@@ -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.1
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-09 00:00:00.000000000 Z
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: &70201271885300 !ruby/object:Gem::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: *70201271885300
24
+ version_requirements: *70148867837020
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: nokogiri
27
- requirement: &70201271884500 !ruby/object:Gem::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: *70201271884500
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