kat 2.0.1 → 2.0.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a787a58459b2ef07e56e8ea0dcbd2303b88d1a2e
4
- data.tar.gz: 8044118ce50282384b57378d82c117b633a1f372
3
+ metadata.gz: 04b05fa2b57136f63c50ead52700b2ee2fe04fbf
4
+ data.tar.gz: d803a95f59ec6ad55f641522bb29c0de1a54bc9c
5
5
  SHA512:
6
- metadata.gz: 47b3095fe9256337fe71d7248d0f36d3cee42f78794d66da09bedea20bb8120efe9bed80bfa24f45469b7bf25361ee236155f4d36bab343b8b4691640aec14ce
7
- data.tar.gz: 5bfe7bd174afabe76d089625bc35054da1be957781061932db125c1e6fa74fc84be2fc22b7e3323cc8570d6f1d9f3fd99496b6e8855d99f203834bea89820e47
6
+ metadata.gz: 93af094dda2fbffe8742accaa2b63f7dd3a63e814241d1bf930ef0bb4c94e46b78253bd36bd84035d20c8b3aadf9bbc16a261713a9c63dea8b522043047ba318
7
+ data.tar.gz: fcfdc9e820d7009422441cb824ebfaa72db696db5db563898732c3a018e60be4bce4ebb05ae77d227063637fd89a7a56acb0eabb40618861bdb73a7f577b98aa
data/.gitignore CHANGED
@@ -3,6 +3,7 @@
3
3
  .bundle
4
4
  .config
5
5
  .yardoc
6
+ .DS_Store
6
7
  Gemfile.lock
7
8
  Guardfile
8
9
  InstalledFiles
@@ -195,6 +195,7 @@ module Kat
195
195
  #
196
196
  def format_results
197
197
  main_width = @window_width - (!hide_info? || @show_info ? 42 : 4)
198
+ buf = []
198
199
 
199
200
  if @kat.error
200
201
  return ["\rConnection failed".red]
@@ -202,8 +203,10 @@ module Kat
202
203
  return ["\rNo results ".red]
203
204
  end
204
205
 
205
- buf = ["\r%-#{ main_width + 5 }s#{ ' Size Age Seeds Leeches' if !hide_info? || @show_info }" %
206
- "Page #{ page + 1 } of #{ @kat.pages }", nil].yellow!
206
+ buf << "\r#{ @kat.message[:message] }\n".red if @kat.message
207
+
208
+ buf << ("\r%-#{ main_width + 5 }s#{ ' Size Age Seeds Leeches' if !hide_info? || @show_info }" %
209
+ ["Page #{ page + 1 } of #{ @kat.pages }", nil]).yellow
207
210
 
208
211
  @kat.results[@page].each_with_index { |t, i|
209
212
  age = t[:age].split "\xC2\xA0"
@@ -243,6 +246,10 @@ module Kat
243
246
  q.responses[:not_valid] = 'Invalid option.'
244
247
  q.validate = validation_regex
245
248
  }
249
+ rescue RegexpError => e
250
+ puts (@kat.pages > 0 ? "Error reading the page\n" : "Could not connect to the site\n").red
251
+
252
+ return 'q'
246
253
  end
247
254
 
248
255
  #
@@ -30,6 +30,8 @@ module Kat
30
30
  # Any error in searching is stored here
31
31
  attr_reader :error
32
32
 
33
+ attr_reader :message
34
+
33
35
  @@doc = nil
34
36
 
35
37
  class << self
@@ -122,6 +124,7 @@ module Kat
122
124
  @search_term = []
123
125
  @options = {}
124
126
  @error = nil
127
+ @message = nil
125
128
 
126
129
  self.query = search_term
127
130
  self.options = opts
@@ -181,6 +184,10 @@ module Kat
181
184
  build_query
182
185
  end
183
186
 
187
+ def sort?
188
+ sorts.any? { |k, v| @options[:sort] && k == @options[:sort].intern }
189
+ end
190
+
184
191
  #
185
192
  # Perform the search, supplying an optional page number to search on. Returns
186
193
  # a result set limited to the 25 results Kickass Torrents returns itself. Will
@@ -188,18 +195,25 @@ module Kat
188
195
  #
189
196
  def search(page = 0)
190
197
  @error = nil
198
+ @message = nil
191
199
 
192
200
  search_proc = -> page {
193
201
  begin
194
202
  uri = URI(URI::encode(to_s page))
195
- res = Net::HTTP.start(uri.host) { |http| http.get uri }
203
+ res = Net::HTTP.get_response(uri)
204
+ if res.code == '301'
205
+ path = Net::HTTP::Get.new(res.header['location'])
206
+ res = Net::HTTP.start(uri.host) { |http| http.request path }
207
+ @message = { message: 'Sort is not functioning' } if sort?
208
+ end
209
+
196
210
  @pages = 0 and return if res.code == '404'
197
211
 
198
212
  doc = Nokogiri::HTML(res.body)
199
213
 
200
- @results[page] = doc.css('td.torrentnameCell').map { |node|
201
- { path: node.css('a.normalgrey').first.andand.attr('href'),
202
- title: node.css('a.normalgrey').text,
214
+ @results[page] = doc.xpath('//table[@class="data"]/tr[position()>1]/td[1]').map { |node|
215
+ { path: node.css('a.torType').first.andand.attr('href'),
216
+ title: node.css('a.cellMainLink').text,
203
217
  magnet: node.css('a.imagnet').first.andand.attr('href'),
204
218
  download: node.css('a.idownload').last.andand.attr('href'),
205
219
  size: (node = node.next_element).text,
@@ -224,10 +238,11 @@ module Kat
224
238
  # Make sure we do a query for the first page of results before getting
225
239
  # subsequent pages in order to correctly figure out the total number of
226
240
  # pages of results.
227
- search_proc.call 0 if @pages == -1
228
- search_proc.call page
241
+ pages = (Range === page ? page.to_a : [page])
242
+ pages.unshift(0) if @pages == -1 && !pages.include?(0)
243
+ pages.each { |i| search_proc.call i }
229
244
 
230
- results[page]
245
+ results[Range === page ? page.max : page]
231
246
  end
232
247
 
233
248
  #
@@ -1,6 +1,6 @@
1
1
  module Kat
2
2
  NAME = 'Kickass Torrents Search'
3
- VERSION = '2.0.1'
3
+ VERSION = '2.0.4'
4
4
  MALEVOLENT_DICTATOR_FOR_LIFE = 'Fission Xuiptz'
5
5
  AUTHOR = MALEVOLENT_DICTATOR_FOR_LIFE
6
6
  VERSION_STR = "#{NAME} #{VERSION} (c) 2013 #{MALEVOLENT_DICTATOR_FOR_LIFE}"
metadata CHANGED
@@ -1,69 +1,69 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kat
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 2.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fission Xuiptz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-05 00:00:00.000000000 Z
11
+ date: 2014-03-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.6'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.6'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: highline
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '1.6'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1.6'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: trollop
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
47
  version: '2.0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ~>
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '2.0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: andand
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ~>
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
61
  version: '1.3'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ~>
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '1.3'
69
69
  description: A Ruby interface to Kickass Torrents
@@ -73,8 +73,8 @@ executables:
73
73
  extensions: []
74
74
  extra_rdoc_files: []
75
75
  files:
76
- - .gitignore
77
- - .travis.yml
76
+ - ".gitignore"
77
+ - ".travis.yml"
78
78
  - Gemfile
79
79
  - LICENSE
80
80
  - README.md
@@ -102,17 +102,17 @@ require_paths:
102
102
  - lib
103
103
  required_ruby_version: !ruby/object:Gem::Requirement
104
104
  requirements:
105
- - - '>='
105
+ - - ">="
106
106
  - !ruby/object:Gem::Version
107
107
  version: '0'
108
108
  required_rubygems_version: !ruby/object:Gem::Requirement
109
109
  requirements:
110
- - - '>='
110
+ - - ">="
111
111
  - !ruby/object:Gem::Version
112
112
  version: '0'
113
113
  requirements: []
114
114
  rubyforge_project:
115
- rubygems_version: 2.0.14
115
+ rubygems_version: 2.2.0
116
116
  signing_key:
117
117
  specification_version: 4
118
118
  summary: Kickass Torrents Interface