kat 2.0.1 → 2.0.4

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.
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