torrent_search 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: bd9610eafd270094d42cb2941cf33f3523c464de
4
+ data.tar.gz: 46672a36018da5016f2236cb46d5b14ac8f69aac
5
+ SHA512:
6
+ metadata.gz: b4639cc8accc906700b3ff859bc9b0365d8a783225cb20a1f67aeb5d84d2ac30701caabb4fea8b9eebf4b58ebc46c14ff0baa4974a3d670023863a7ee0ad5b32
7
+ data.tar.gz: 0f5635af0ebf544af3ad8b478a133dd8aa614be1f6752e7465f7226cc3fb7c6aa0f731d62bb41a065ea2b1485f97e8b47e922121eb93b35e8d126b36a724c57d
data/.gitignore ADDED
@@ -0,0 +1,19 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
18
+ *.DS_Store
19
+ spec/vcr*
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --format progress
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in torrent_search.gemspec
4
+ gemspec
data/Guardfile ADDED
@@ -0,0 +1,9 @@
1
+ # A sample Guardfile
2
+ # More info at https://github.com/guard/guard#readme
3
+
4
+ guard :rspec do
5
+ watch(%r{^spec/.+_spec\.rb$})
6
+ watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
7
+ watch('spec/spec_helper.rb') { "spec" }
8
+ end
9
+
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Jon Neverland
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,29 @@
1
+ # TorrentSearch
2
+
3
+ TODO: Write a gem description
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'torrent_search'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install torrent_search
18
+
19
+ ## Usage
20
+
21
+ TODO: Write usage instructions here
22
+
23
+ ## Contributing
24
+
25
+ 1. Fork it
26
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
27
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
28
+ 4. Push to the branch (`git push origin my-new-feature`)
29
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
data/bin/tsearch ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+ require "torrent_search"
3
+ require "torrent_search/cli"
4
+
5
+ TorrentSearch::CLI.start
@@ -0,0 +1,6 @@
1
+ require "torrent_search/version"
2
+ require "torrent_search/trackers/kick_ass/kick_ass"
3
+
4
+ module TorrentSearch
5
+ # Your code goes here...
6
+ end
@@ -0,0 +1,40 @@
1
+ require 'thor'
2
+ require 'torrent_search/default_command'
3
+ require 'torrent_search/download'
4
+ require 'torrent_search/result_table'
5
+ require 'torrent_search/menu'
6
+ require 'torrent_search/version'
7
+
8
+ module TorrentSearch
9
+ class CLI < Thor
10
+ include Thor::Actions
11
+ extend DefaultCommand
12
+
13
+ def self.quit
14
+ puts "\nQuitting.."
15
+ exit 0
16
+ end
17
+
18
+ desc 'version', 'Shows version'
19
+ def version(*)
20
+ say VERSION
21
+ end
22
+
23
+ default_command :search
24
+ desc '[TERMS]', 'tsearch help search for options'
25
+ method_option :limit,
26
+ type: :numeric,
27
+ aliases: '-l',
28
+ desc: 'Limit search results, default 10'
29
+
30
+ def search(*search_terms)
31
+ search_result = Trackers::KickAss::Scraper.new(search_terms, options).search
32
+ Menu.new(self, search_result).display
33
+ rescue SocketError
34
+ error 'No network connection?'
35
+ end
36
+
37
+ end
38
+ end
39
+
40
+ trap('INT') { TorrentSearch::CLI::quit }
@@ -0,0 +1,18 @@
1
+ module TorrentSearch
2
+ #Lets monkey patch Thor to have a default action with arguments!
3
+ module DefaultCommand
4
+ def dispatch(meth, given_args, given_opts, config)
5
+ meth = retrieve_command_name(given_args)
6
+ command = all_commands[normalize_command_name(meth)]
7
+ unless command
8
+ given_args.unshift meth
9
+ meth = default_command
10
+ command = all_commands[meth]
11
+ end
12
+ if given_args.empty? && command.name == default_command
13
+ handle_argument_error(command, nil, given_args, nil)
14
+ end
15
+ super
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,38 @@
1
+ require "httparty"
2
+
3
+ module TorrentSearch
4
+ DEFAULT_DIR = '.'
5
+
6
+ class Download
7
+ def initialize(view, torrent)
8
+ @view = view
9
+ @torrent = torrent
10
+ end
11
+
12
+ def perform
13
+ save! filename
14
+ say 'Complete', :green
15
+ end
16
+
17
+ private
18
+ def filename
19
+ File.join(path, "#{@torrent.filename}.torrent")
20
+ end
21
+
22
+ def path
23
+ path = @view.ask "Directory to save file (default '#{DEFAULT_DIR}'):"
24
+ path.empty? ? DEFAULT_DIR : path
25
+ end
26
+
27
+ def save!(filename)
28
+ say "Downloading #{@torrent.name}...", :green
29
+ File.open(filename, "wb") do |file|
30
+ file.write HTTParty.get(@torrent.href).parsed_response
31
+ end
32
+ end
33
+
34
+ def say(*args)
35
+ @view.say *args
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,80 @@
1
+ module TorrentSearch
2
+
3
+ ACTIONS = {
4
+ d: :download,
5
+ s: :search,
6
+ q: :quit
7
+ }
8
+
9
+ class Menu < SimpleDelegator
10
+ def initialize(view, search_result)
11
+ @view = view
12
+ @search_result = search_result
13
+ super @view
14
+ end
15
+
16
+ def display
17
+ say_status "\n[Results]", '', :green
18
+ if results?
19
+ print_table result_table
20
+ else
21
+ say 'Nothing found'
22
+ end
23
+ say_status "\n[Actions]", actions, :blue
24
+ choose_action!
25
+ end
26
+
27
+ private
28
+ def results?
29
+ @search_result.any?
30
+ end
31
+
32
+ def result_table
33
+ ResultTable.new(@search_result)
34
+ end
35
+
36
+ def available_actions
37
+ ACTIONS.dup.tap {|hash| hash.delete(:d) unless results? }
38
+ end
39
+
40
+ def actions
41
+ available_actions.map {|hash| hash.join(": ")}.join("\t")
42
+ end
43
+
44
+ def choose_action!
45
+ chosen = ask("Choose:").to_sym
46
+ send available_actions.fetch(chosen, :invalid_command)
47
+ end
48
+
49
+ def invalid_command
50
+ say 'Invalid command', :red
51
+ choose_action!
52
+ end
53
+
54
+ def quit
55
+ CLI::quit
56
+ end
57
+
58
+ def search
59
+ super ask("Search for:").split
60
+ end
61
+
62
+ def download
63
+ index = ask("Torrent (0-#{search_result_range.max}):")
64
+ unless index.match(/\A\d+\z/) && is_in_search_result?(index)
65
+ say 'Invalid option', :red
66
+ download
67
+ end
68
+ torrent = @search_result[index.to_i]
69
+ Download.new(@view, torrent).perform
70
+ end
71
+
72
+ def is_in_search_result?(index)
73
+ search_result_range.member?(index.to_i)
74
+ end
75
+
76
+ def search_result_range
77
+ @range ||= Range.new(0, @search_result.length, true)
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,31 @@
1
+ module TorrentSearch
2
+ class ResultTable
3
+ include Enumerable
4
+ extend Forwardable
5
+ def_delegators :@table, :[], :each, :empty?
6
+
7
+ def initialize(search_result)
8
+ @search_result = search_result
9
+ @table = table
10
+ end
11
+
12
+ private
13
+ def headers
14
+ ['', :name, :size, :seeders, :leechers]
15
+ end
16
+
17
+ def table
18
+ table = [headers]
19
+ counter = 0
20
+ @search_result.each_with_object(table) do |torrent, object|
21
+ object << [counter, *values(torrent)]
22
+ counter += 1
23
+ end
24
+ end
25
+
26
+ def values(torrent)
27
+ meths = headers.dup.tap {|ary|ary.shift}
28
+ meths.map {|meth|torrent.send meth}
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,8 @@
1
+ require 'torrent_search/trackers/kick_ass/scraper'
2
+ require 'torrent_search/trackers/kick_ass/torrent'
3
+ module TorrentSearch
4
+ module Trackers
5
+ module KickAss
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,55 @@
1
+ require 'mechanize'
2
+
3
+ module TorrentSearch
4
+ module Trackers
5
+ module KickAss
6
+ class Scraper
7
+
8
+ BASE_URL = "http://kickass.to/usearch"
9
+ LIMIT = 10
10
+
11
+ def initialize(search_terms, options = {})
12
+ @search_terms = search_terms
13
+ @options = options
14
+ end
15
+
16
+ def search
17
+ search_results.map do |row|
18
+ Torrent.new(row)
19
+ end
20
+ rescue Mechanize::ResponseCodeError
21
+ []
22
+ end
23
+
24
+ private
25
+
26
+ def search_results
27
+ page.search('table.data tr').tap do |results|
28
+ results.shift
29
+ end.take(limit)
30
+ end
31
+
32
+ def limit
33
+ @options.fetch 'limit', LIMIT
34
+ end
35
+
36
+ def page
37
+ @page ||= agent.get search_url
38
+ end
39
+
40
+ def search_url
41
+ terms = @search_terms.join("%20")
42
+ [BASE_URL, terms, search_append].join "/"
43
+ end
44
+
45
+ def search_append
46
+ "?field=seeders&sorder=desc"
47
+ end
48
+
49
+ def agent
50
+ @agent ||= Mechanize.new { |agent| agent.user_agent_alias = 'Mac Safari' }
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,41 @@
1
+
2
+ module TorrentSearch
3
+ module Trackers
4
+ module KickAss
5
+ class Torrent
6
+
7
+ def initialize(row)
8
+ @row = row
9
+ end
10
+
11
+ def name
12
+ @row.search('.torrentname a')[1].text
13
+ end
14
+
15
+ def size
16
+ @row.search('td')[1].text
17
+ end
18
+
19
+ def seeders
20
+ @row.search('td')[4].text
21
+ end
22
+
23
+ def leechers
24
+ @row.search('td')[5].text
25
+ end
26
+
27
+ def href
28
+ url.match(/(.*)\?/)[1]
29
+ end
30
+
31
+ def filename
32
+ url.match(/title=(.*)/)[1]
33
+ end
34
+
35
+ def url
36
+ @row.search('.iaconbox a').last.attr('href')
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,3 @@
1
+ module TorrentSearch
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,25 @@
1
+ require 'spec_helper'
2
+
3
+ describe TorrentSearch::Trackers::KickAss::Scraper do
4
+ Given(:search_terms){['ubuntu', '12']}
5
+ Given(:options){{}}
6
+ subject{described_class.new(search_terms, options)}
7
+
8
+ describe '#search', :vcr do
9
+ Given(:torrent){result.first}
10
+ When(:result){subject.search}
11
+
12
+ Then{result.count.should eq 10}
13
+ And{torrent.name.should eq "ubuntu 12.04.3 [64 bit]"}
14
+ And{torrent.size.should eq "708 MB"}
15
+ And{torrent.seeders.should eq "824"}
16
+ And{torrent.leechers.should eq "20"}
17
+ And{torrent.href.should eq "http://torcache.net/torrent/962FCFA03B061506E2E133AC4B5C8BC5151C4C6A.torrent"}
18
+ And{torrent.filename.should eq "[kickass.to]ubuntu.12.04.3.64.bit"}
19
+
20
+ context 'with limit' do
21
+ Given(:options){{'limit' => 5}}
22
+ Then{result.count.should eq 5}
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,18 @@
1
+ require 'torrent_search'
2
+ require 'rspec-given'
3
+ require 'vcr'
4
+ require 'fakeweb'
5
+
6
+ Dir[File.dirname(__FILE__) + "/support/*.rb"].each{|file| require file}
7
+
8
+ RSpec.configure do |config|
9
+ config.treat_symbols_as_metadata_keys_with_true_values = true
10
+ config.run_all_when_everything_filtered = true
11
+ config.filter_run :focus
12
+
13
+ # Run specs in random order to surface order dependencies. If you find an
14
+ # order dependency and want to debug it, you can fix the order by providing
15
+ # the seed, which is printed after each run.
16
+ # --seed 1234
17
+ config.order = 'random'
18
+ end
@@ -0,0 +1,8 @@
1
+ # spec/support/vcr_setup.rb
2
+ VCR.configure do |c|
3
+ c.cassette_library_dir = 'spec/vcr'
4
+ c.hook_into :fakeweb
5
+ c.configure_rspec_metadata!
6
+ c.allow_http_connections_when_no_cassette = true
7
+ c.default_cassette_options = { :match_requests_on => [:query, :method, :uri, :body], record: :new_episodes }
8
+ end
@@ -0,0 +1,34 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'torrent_search/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "torrent_search"
8
+ spec.version = TorrentSearch::VERSION
9
+ spec.authors = ["Jon Neverland"]
10
+ spec.email = ["jonwestin@gmail.com"]
11
+ spec.description = %q{Search various torrent sites}
12
+ spec.summary = %q{Search various torrent sites}
13
+ spec.homepage = ""
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_runtime_dependency "thor", "~> 0.18.1"
22
+ spec.add_runtime_dependency "mechanize", "~> 2.7.3"
23
+ spec.add_runtime_dependency "httparty", "~> 0.12.0"
24
+
25
+ spec.add_development_dependency "bundler", "~> 1.3"
26
+ spec.add_development_dependency "rake"
27
+ spec.add_development_dependency "rspec", ">=2.13"
28
+ spec.add_development_dependency "rspec-given"
29
+ spec.add_development_dependency "guard", ">=1.6"
30
+ spec.add_development_dependency "guard-rspec", ">=2.4"
31
+ spec.add_development_dependency "vcr"
32
+ spec.add_development_dependency "fakeweb"
33
+
34
+ end
metadata ADDED
@@ -0,0 +1,224 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: torrent_search
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Jon Neverland
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-12-23 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: thor
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: 0.18.1
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: 0.18.1
27
+ - !ruby/object:Gem::Dependency
28
+ name: mechanize
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: 2.7.3
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: 2.7.3
41
+ - !ruby/object:Gem::Dependency
42
+ name: httparty
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: 0.12.0
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: 0.12.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: bundler
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '1.3'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: '1.3'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rspec
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '2.13'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '2.13'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rspec-given
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: guard
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '1.6'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - '>='
123
+ - !ruby/object:Gem::Version
124
+ version: '1.6'
125
+ - !ruby/object:Gem::Dependency
126
+ name: guard-rspec
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - '>='
130
+ - !ruby/object:Gem::Version
131
+ version: '2.4'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - '>='
137
+ - !ruby/object:Gem::Version
138
+ version: '2.4'
139
+ - !ruby/object:Gem::Dependency
140
+ name: vcr
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - '>='
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - '>='
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: fakeweb
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - '>='
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - '>='
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ description: Search various torrent sites
168
+ email:
169
+ - jonwestin@gmail.com
170
+ executables:
171
+ - tsearch
172
+ extensions: []
173
+ extra_rdoc_files: []
174
+ files:
175
+ - .gitignore
176
+ - .rspec
177
+ - Gemfile
178
+ - Guardfile
179
+ - LICENSE.txt
180
+ - README.md
181
+ - Rakefile
182
+ - bin/tsearch
183
+ - lib/torrent_search.rb
184
+ - lib/torrent_search/cli.rb
185
+ - lib/torrent_search/default_command.rb
186
+ - lib/torrent_search/download.rb
187
+ - lib/torrent_search/menu.rb
188
+ - lib/torrent_search/result_table.rb
189
+ - lib/torrent_search/trackers/kick_ass/kick_ass.rb
190
+ - lib/torrent_search/trackers/kick_ass/scraper.rb
191
+ - lib/torrent_search/trackers/kick_ass/torrent.rb
192
+ - lib/torrent_search/version.rb
193
+ - spec/lib/torrent_search/trackers/kick_ass/scraper_spec.rb
194
+ - spec/spec_helper.rb
195
+ - spec/support/vcr_setup.rb
196
+ - torrent_search.gemspec
197
+ homepage: ''
198
+ licenses:
199
+ - MIT
200
+ metadata: {}
201
+ post_install_message:
202
+ rdoc_options: []
203
+ require_paths:
204
+ - lib
205
+ required_ruby_version: !ruby/object:Gem::Requirement
206
+ requirements:
207
+ - - '>='
208
+ - !ruby/object:Gem::Version
209
+ version: '0'
210
+ required_rubygems_version: !ruby/object:Gem::Requirement
211
+ requirements:
212
+ - - '>='
213
+ - !ruby/object:Gem::Version
214
+ version: '0'
215
+ requirements: []
216
+ rubyforge_project:
217
+ rubygems_version: 2.1.4
218
+ signing_key:
219
+ specification_version: 4
220
+ summary: Search various torrent sites
221
+ test_files:
222
+ - spec/lib/torrent_search/trackers/kick_ass/scraper_spec.rb
223
+ - spec/spec_helper.rb
224
+ - spec/support/vcr_setup.rb