kat 2.0.7 → 2.0.9
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/.travis.yml +1 -0
- data/bin/kat +1 -1
- data/kat.gemspec +0 -1
- data/lib/kat.rb +1 -1
- data/lib/kat/app.rb +7 -4
- data/lib/kat/options.rb +2 -2
- data/lib/kat/search.rb +15 -11
- data/lib/kat/version.rb +1 -1
- data/test/kat/test_app.rb +1 -1
- data/test/kat/test_colour.rb +1 -1
- data/test/kat/test_options.rb +1 -1
- data/test/kat/test_search.rb +10 -5
- metadata +3 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 02227de36b428b2074dc46c055988ed4a7616814
|
4
|
+
data.tar.gz: 35ce5e20a8cc5daa1625a426250e198f3bf2eb38
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b0d6a7a02378661db65b1d8637ca7fdafa04c9656dc087840f1f6515cafb8b794c4fac653f65b8a8eba5551653dfc38a4e43b828652d2c3aa72334b6e40c443e
|
7
|
+
data.tar.gz: f466f1d2a7f7fc39451c8f30f35c2a7cfb72c3db93e92fd20d7b9642ea6cbab860a556d586275445053a2ee43ec3ff1335bcbb56a851aa690d508c46827f3029
|
data/.travis.yml
CHANGED
data/bin/kat
CHANGED
data/kat.gemspec
CHANGED
data/lib/kat.rb
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
require_relative 'kat/search'
|
data/lib/kat/app.rb
CHANGED
@@ -1,9 +1,10 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
require_relative '../kat'
|
2
|
+
require_relative 'options'
|
3
|
+
require_relative 'colour'
|
4
4
|
|
5
5
|
require 'highline'
|
6
6
|
require 'yaml'
|
7
|
+
require 'io/console'
|
7
8
|
|
8
9
|
module Kat
|
9
10
|
#
|
@@ -94,7 +95,9 @@ module Kat
|
|
94
95
|
# Get the width of the terminal window
|
95
96
|
#
|
96
97
|
def set_window_width
|
97
|
-
|
98
|
+
# Highline 1.7's terminal_size cannot be trusted to return the values in
|
99
|
+
# the correct order so just use IO.console.winsize directly
|
100
|
+
@window_width = IO.console.winsize[1]
|
98
101
|
end
|
99
102
|
|
100
103
|
#
|
data/lib/kat/options.rb
CHANGED
data/lib/kat/search.rb
CHANGED
@@ -1,8 +1,7 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
require_relative 'version'
|
2
|
+
require_relative 'field_map'
|
3
3
|
require 'nokogiri'
|
4
4
|
require 'net/http'
|
5
|
-
require 'andand'
|
6
5
|
|
7
6
|
module Kat
|
8
7
|
BASE_URL = 'http://kickass.to'
|
@@ -130,10 +129,6 @@ module Kat
|
|
130
129
|
build_query
|
131
130
|
end
|
132
131
|
|
133
|
-
def sort?
|
134
|
-
sorts.any? { |k, v| @options[:sort] && k == @options[:sort].intern }
|
135
|
-
end
|
136
|
-
|
137
132
|
#
|
138
133
|
# Perform the search, supplying an optional page number to search on. Returns
|
139
134
|
# a result set limited to the 25 results Kickass Torrents returns itself. Will
|
@@ -150,7 +145,6 @@ module Kat
|
|
150
145
|
if res.code == '301'
|
151
146
|
path = Net::HTTP::Get.new(res.header['location'])
|
152
147
|
res = Net::HTTP.start(uri.host) { |http| http.request path }
|
153
|
-
@message = { message: 'Sort is not functioning' } if sort?
|
154
148
|
end
|
155
149
|
|
156
150
|
@pages = 0 and return if res.code == '404'
|
@@ -158,10 +152,10 @@ module Kat
|
|
158
152
|
doc = Nokogiri::HTML(res.body)
|
159
153
|
|
160
154
|
@results[page] = doc.xpath('//table[@class="data"]/tr[position()>1]/td[1]').map do |node|
|
161
|
-
{ path: node
|
155
|
+
{ path: href_of(node, 'a.torType'),
|
162
156
|
title: node.css('a.cellMainLink').text,
|
163
|
-
magnet: node
|
164
|
-
download: node
|
157
|
+
magnet: href_of(node, 'a.imagnet'),
|
158
|
+
download: href_of(node, 'a.idownload'),
|
165
159
|
size: (node = node.next_element).text,
|
166
160
|
files: (node = node.next_element).text.to_i,
|
167
161
|
age: (node = node.next_element).text,
|
@@ -320,5 +314,15 @@ module Kat
|
|
320
314
|
!(@results.empty? || @results.first.empty?) &&
|
321
315
|
(@results.first.first[method] || @results.first.first[method[0..-2].intern]) || super
|
322
316
|
end
|
317
|
+
|
318
|
+
#
|
319
|
+
# tries to find the first <selector> in <scope> and read its href
|
320
|
+
# attribute, returns nil elsewise
|
321
|
+
#
|
322
|
+
def href_of(scope, selector)
|
323
|
+
if node = scope.css(selector).first
|
324
|
+
node.attr('href')
|
325
|
+
end
|
326
|
+
end
|
323
327
|
end
|
324
328
|
end
|
data/lib/kat/version.rb
CHANGED
data/test/kat/test_app.rb
CHANGED
data/test/kat/test_colour.rb
CHANGED
data/test/kat/test_options.rb
CHANGED
data/test/kat/test_search.rb
CHANGED
@@ -1,10 +1,12 @@
|
|
1
1
|
require 'minitest/autorun'
|
2
|
-
|
3
|
-
|
4
|
-
blue_peter = Kat.search
|
5
|
-
blue_peter.go.go 1
|
2
|
+
require_relative '../../lib/kat/search'
|
6
3
|
|
7
4
|
describe Kat::Search do
|
5
|
+
let(:blue_peter) do
|
6
|
+
Kat.search do |k|
|
7
|
+
k.go.go 1
|
8
|
+
end
|
9
|
+
end
|
8
10
|
|
9
11
|
let(:kat) { Kat.search 'test' }
|
10
12
|
let(:kat_opts) { Kat.search 'test', category: 'books' }
|
@@ -39,13 +41,16 @@ describe Kat::Search do
|
|
39
41
|
end
|
40
42
|
|
41
43
|
it 'responds to result fields after a search' do
|
44
|
+
blue_peter.search # trigger page parse?
|
42
45
|
%i(titles files).each do |s|
|
43
46
|
blue_peter.respond_to?(s).must_equal true
|
44
47
|
end
|
45
48
|
end
|
46
49
|
|
47
50
|
it 'returns identical result sets' do
|
48
|
-
|
51
|
+
called = blue_peter.search
|
52
|
+
first_page = blue_peter.results[0]
|
53
|
+
first_page.must_equal called
|
49
54
|
end
|
50
55
|
|
51
56
|
it 'returns a full result set' do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
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.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Fission Xuiptz
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-03-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|
@@ -52,20 +52,6 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '2.0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: andand
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - "~>"
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '1.3'
|
62
|
-
type: :runtime
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - "~>"
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '1.3'
|
69
55
|
description: A Ruby interface to Kickass Torrents
|
70
56
|
email: fissionxuiptz@softwaremojo.com
|
71
57
|
executables:
|
@@ -112,7 +98,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
112
98
|
version: '0'
|
113
99
|
requirements: []
|
114
100
|
rubyforge_project:
|
115
|
-
rubygems_version: 2.
|
101
|
+
rubygems_version: 2.4.5
|
116
102
|
signing_key:
|
117
103
|
specification_version: 4
|
118
104
|
summary: Kickass Torrents Interface
|