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 +4 -4
- data/.gitignore +1 -0
- data/lib/kat/app.rb +9 -2
- data/lib/kat/search.rb +22 -7
- data/lib/kat/version.rb +1 -1
- metadata +15 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 04b05fa2b57136f63c50ead52700b2ee2fe04fbf
|
4
|
+
data.tar.gz: d803a95f59ec6ad55f641522bb29c0de1a54bc9c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 93af094dda2fbffe8742accaa2b63f7dd3a63e814241d1bf930ef0bb4c94e46b78253bd36bd84035d20c8b3aadf9bbc16a261713a9c63dea8b522043047ba318
|
7
|
+
data.tar.gz: fcfdc9e820d7009422441cb824ebfaa72db696db5db563898732c3a018e60be4bce4ebb05ae77d227063637fd89a7a56acb0eabb40618861bdb73a7f577b98aa
|
data/.gitignore
CHANGED
data/lib/kat/app.rb
CHANGED
@@ -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
|
206
|
-
|
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
|
#
|
data/lib/kat/search.rb
CHANGED
@@ -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.
|
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.
|
201
|
-
{ path: node.css('a.
|
202
|
-
title: node.css('a.
|
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
|
-
|
228
|
-
|
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
|
#
|
data/lib/kat/version.rb
CHANGED
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.
|
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-
|
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
|
115
|
+
rubygems_version: 2.2.0
|
116
116
|
signing_key:
|
117
117
|
specification_version: 4
|
118
118
|
summary: Kickass Torrents Interface
|