nnmClub_api 0.1.2 → 0.1.3
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/README.md +17 -7
- data/lib/nnmClub_api.rb +33 -1
- data/lib/nnmClub_api/search.rb +14 -28
- data/lib/nnmClub_api/torrent.rb +12 -11
- data/lib/nnmClub_api/tracker.rb +5 -1
- data/lib/nnmClub_api/version.rb +1 -1
- data/nnmClub_api.gemspec +2 -2
- data/spec/nnmclub_spec.rb +20 -0
- data/spec/nnmcluv_api_spec.rb +15 -20
- metadata +9 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4bbb50fc2b0ad999c914a706c40c85ddc9a26ccb
|
4
|
+
data.tar.gz: 31a2c9a906ffe9867654a8768bfca844f0165d57
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8f0bbdee7d092bc664b5ab298b88354d1925444a3c460a31f900261da17654ae7466c8793c10bc66091edeb9f9fe681c143d2dbd3db2b0cba16cdb661540b1db
|
7
|
+
data.tar.gz: 960f2f698b7eb177eef51faf97508409df7e8bf6dd9f29c3f25238c188b1c1b5ed5d2025c251c5099a288b2beff97564bc83f30e7557c91b25afd5eb55c6dcf7
|
data/README.md
CHANGED
@@ -22,26 +22,36 @@ Or install it yourself as:
|
|
22
22
|
|
23
23
|
### Example:Search
|
24
24
|
|
25
|
-
NnmClub::Search("
|
25
|
+
NnmClub::Search("noize mc").torrents
|
26
26
|
|
27
27
|
returns an Array of Hashes
|
28
28
|
|
29
|
-
{
|
29
|
+
{
|
30
|
+
:title => the title of the distribution,
|
30
31
|
:size => size,
|
31
32
|
:seeders => seeders,
|
32
|
-
:leechers => leechers,
|
33
33
|
:torrent_id => torrent_id,
|
34
|
-
:tracker => NnmClub::ID
|
35
34
|
}
|
36
35
|
|
37
36
|
### Example:Torrent
|
38
37
|
|
39
|
-
NnmClub::Torrent.find "
|
38
|
+
NnmClub::Torrent.find "97600"
|
40
39
|
|
41
40
|
returns an Hash
|
42
41
|
|
43
|
-
{
|
44
|
-
:
|
42
|
+
{
|
43
|
+
:content => "HTML",
|
44
|
+
:image => "URL",
|
45
|
+
:magnet => magnet-link or none
|
46
|
+
}
|
47
|
+
|
48
|
+
### Example:NnmClub_api
|
49
|
+
|
50
|
+
api = NnmClub:NnmClub_api.new
|
51
|
+
api.search("noize mc")
|
52
|
+
#=> Array of Hashes { :title => ..., }
|
53
|
+
api.find("97600")
|
54
|
+
#=> Hash { :content => ..., }
|
45
55
|
|
46
56
|
|
47
57
|
## Contributing
|
data/lib/nnmClub_api.rb
CHANGED
@@ -1,4 +1,36 @@
|
|
1
|
+
require "mechanize"
|
1
2
|
require "nnmClub_api/version"
|
2
3
|
require "nnmClub_api/tracker"
|
3
4
|
require "nnmClub_api/search"
|
4
|
-
require "nnmClub_api/torrent"
|
5
|
+
require "nnmClub_api/torrent"
|
6
|
+
|
7
|
+
class Mechanize
|
8
|
+
def login
|
9
|
+
self.post(
|
10
|
+
NnmClub::LOGIN_PAGE,
|
11
|
+
username: NnmClub::USERNAME,
|
12
|
+
password: NnmClub::PASSWORD,
|
13
|
+
login: ""
|
14
|
+
)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
module NnmClub
|
19
|
+
class NnmClub_api
|
20
|
+
attr_reader :agent
|
21
|
+
def initialize
|
22
|
+
@agent = Mechanize.new
|
23
|
+
@agent.get(NnmClub::LOGIN_PAGE)
|
24
|
+
@agent.login
|
25
|
+
true
|
26
|
+
end
|
27
|
+
|
28
|
+
def search query
|
29
|
+
NnmClub::Search.new(query, @agent).torrents
|
30
|
+
end
|
31
|
+
|
32
|
+
def find id
|
33
|
+
NnmClub::Torrent.find(id, @agent)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
data/lib/nnmClub_api/search.rb
CHANGED
@@ -1,7 +1,3 @@
|
|
1
|
-
require "uri"
|
2
|
-
require "open-uri"
|
3
|
-
require "nokogiri"
|
4
|
-
|
5
1
|
class Hash
|
6
2
|
def any_nil?
|
7
3
|
@result = false
|
@@ -13,35 +9,25 @@ class Hash
|
|
13
9
|
end
|
14
10
|
end
|
15
11
|
|
16
|
-
|
17
12
|
module NnmClub
|
18
|
-
|
19
13
|
class Search
|
20
|
-
attr_reader :torrents
|
21
|
-
def initialize(query,
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
leechers = row.css(".leechmed").empty? ? nil : row.css(".leechmed").text.to_i
|
33
|
-
torrent_id = row.css(".topictitle").empty? ? nil : row.css(".topictitle").first[:href].split("=").last
|
34
|
-
|
35
|
-
torrent = { :title => title,
|
36
|
-
:size => size,
|
37
|
-
:seeders => seeders,
|
38
|
-
:leechers => leechers,
|
39
|
-
:torrent_id => torrent_id,
|
40
|
-
:tracker => NnmClub::ID
|
14
|
+
attr_reader :torrents
|
15
|
+
def initialize(query, agent = Mechanize.new)
|
16
|
+
form = agent.get(NnmClub::URL).forms.last
|
17
|
+
form.field("nm").value = query
|
18
|
+
form.checkbox("sd").check
|
19
|
+
form.checkbox("a").check
|
20
|
+
torrents = form.submit.search(".prow1",".prow2").collect { |row|
|
21
|
+
torrent = {
|
22
|
+
:title => row.css(".topictitle").empty? ? (nil and status=true) : row.css(".topictitle").text.strip,
|
23
|
+
:size => row.at("td[6]/u").nil? ? nil : row.at("td[6]/u").text.to_i,
|
24
|
+
:seeders => row.css(".seedmed").empty? ? nil : row.css(".seedmed").text.to_i,
|
25
|
+
:torrent_id => status ? nil : row.css(".topictitle").first[:href].split("=").last
|
41
26
|
}
|
42
|
-
|
27
|
+
torrent unless torrent.any_nil?
|
43
28
|
}
|
44
29
|
@torrents = torrents
|
30
|
+
|
45
31
|
end
|
46
32
|
end
|
47
33
|
end
|
data/lib/nnmClub_api/torrent.rb
CHANGED
@@ -1,16 +1,17 @@
|
|
1
|
-
require "uri"
|
2
|
-
require "open-uri"
|
3
|
-
require "nokogiri"
|
4
|
-
|
5
1
|
module NnmClub
|
6
2
|
class Torrent
|
7
|
-
def self.find(torrent_id)
|
8
|
-
document
|
9
|
-
|
10
|
-
|
11
|
-
|
3
|
+
def self.find(torrent_id, agent = Mechanize.new)
|
4
|
+
document = agent.get(NnmClub::TorrentURL+torrent_id)
|
5
|
+
content_xpath = "/html/body/div[@class='wrap']/table//tr[2]/td/table//tr/td/table[@class='forumline']//tr[@class='row1']/td[@class='row1'][2]/table//tr[3]/td"
|
6
|
+
link_xpath = "/html/body/div[2]/table//tr[2]/td/table//tr/td/table[5]//tr[2]/td[2]/table//tr[4]/td/table[2]//tr[2]/td[3]/a"
|
7
|
+
content = document.search(content_xpath)
|
8
|
+
content.search(".//img",".//a").remove
|
9
|
+
return {
|
10
|
+
:content => content.to_html(encoding: "UTF-8"),
|
11
|
+
:magnet => document.search(link_xpath).empty? ? "none" : document.search(link_xpath).first[:href],
|
12
|
+
:image => document.search('var.postImg').first[:title]
|
12
13
|
}
|
13
|
-
return info
|
14
14
|
end
|
15
15
|
end
|
16
|
-
end
|
16
|
+
end
|
17
|
+
|
data/lib/nnmClub_api/tracker.rb
CHANGED
@@ -1,6 +1,10 @@
|
|
1
1
|
module NnmClub
|
2
2
|
ID = "nnmclub"
|
3
3
|
IMG = "http://nnm-club.me/favicon.ico"
|
4
|
-
URL = "http://nnm-club.me/forum/tracker.php
|
4
|
+
URL = "http://nnm-club.me/forum/tracker.php"
|
5
5
|
TorrentURL = "http://nnm-club.me/forum/viewtopic.php?t="
|
6
|
+
DownloadURL = "http://nnm-club.me/forum/"
|
7
|
+
LOGIN_PAGE = "http://nnm-club.me/forum/login.php"
|
8
|
+
USERNAME = "gettornet"
|
9
|
+
PASSWORD = "gettornet"
|
6
10
|
end
|
data/lib/nnmClub_api/version.rb
CHANGED
data/nnmClub_api.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
lib = File.expand_path('../lib', __FILE__)
|
3
3
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require
|
4
|
+
require "nnmClub_api/version"
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
7
|
spec.name = "nnmClub_api"
|
@@ -23,5 +23,5 @@ Gem::Specification.new do |spec|
|
|
23
23
|
spec.add_development_dependency "rspec"
|
24
24
|
spec.add_development_dependency "guard-rspec"
|
25
25
|
|
26
|
-
spec.add_dependency "
|
26
|
+
spec.add_dependency "mechanize", "2.7.3"
|
27
27
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require "nnmClub_api"
|
2
|
+
|
3
|
+
describe "NnmClub" do
|
4
|
+
describe "NmmClub_api" do
|
5
|
+
before {
|
6
|
+
@api = NnmClub::NnmClub_api.new
|
7
|
+
@query = "ruby on rails"
|
8
|
+
@id = "97600"
|
9
|
+
}
|
10
|
+
it "should not be bad login" do
|
11
|
+
expect(@api.nil?).to eq(false)
|
12
|
+
end
|
13
|
+
it "should return results Array" do
|
14
|
+
expect(@api.search(@query).class).to eq([].class)
|
15
|
+
end
|
16
|
+
it "should return results Array" do
|
17
|
+
expect(@api.find(@id).class).to eq({}.class)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
data/spec/nnmcluv_api_spec.rb
CHANGED
@@ -1,26 +1,12 @@
|
|
1
1
|
require "nnmClub_api"
|
2
|
+
require "mechanize"
|
2
3
|
|
3
4
|
describe "NnmClub" do
|
4
|
-
describe "Search" do
|
5
|
-
before {
|
6
|
-
@query = "ruby on rails"
|
7
|
-
@search = NnmClub::Search.new @query
|
8
|
-
@url = NnmClub::URL
|
9
|
-
}
|
10
|
-
it "should return correct url without category" do
|
11
|
-
expect(@search.url).to eq(@url+"nm=#{URI.escape(@query)}")
|
12
|
-
end
|
13
|
-
|
14
|
-
it "should return correct url with category" do
|
15
|
-
@search = NnmClub::Search.new(@query,17)
|
16
|
-
expect(@search.url).to eq(@url+"nm=#{URI.escape(@query)}"+"&c=17")
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
5
|
describe "#torrents" do
|
21
6
|
before {
|
22
7
|
@query = "ruby on rails"
|
23
|
-
|
8
|
+
agent = NnmClub::NnmClub_api.new.agent
|
9
|
+
@search = NnmClub::Search.new(@query,agent)
|
24
10
|
}
|
25
11
|
|
26
12
|
it "should return array" do
|
@@ -34,12 +20,21 @@ describe "NnmClub" do
|
|
34
20
|
|
35
21
|
describe "Torrent" do
|
36
22
|
before {
|
37
|
-
@torrent_id = "
|
38
|
-
|
23
|
+
@torrent_id = "728159"
|
24
|
+
agent = NnmClub::NnmClub_api.new.agent
|
25
|
+
@torrent = NnmClub::Torrent.find(@torrent_id,agent)
|
39
26
|
}
|
40
27
|
it "should return @description" do
|
41
28
|
expect(@torrent.class).to eq({}.class)
|
42
29
|
end
|
30
|
+
it "should return image" do
|
31
|
+
expect(@torrent[:image].empty?).to eq(false)
|
32
|
+
end
|
33
|
+
it "should return content" do
|
34
|
+
expect(@torrent[:content].empty?).to eq(false)
|
35
|
+
end
|
36
|
+
it "should return link" do
|
37
|
+
expect(@torrent[:magnet].empty?).to eq(false)
|
38
|
+
end
|
43
39
|
end
|
44
|
-
|
45
40
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nnmClub_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Baranov Sergey
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-09-
|
11
|
+
date: 2014-09-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -67,19 +67,19 @@ dependencies:
|
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: mechanize
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - '='
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
75
|
+
version: 2.7.3
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - '='
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
82
|
+
version: 2.7.3
|
83
83
|
description: Gem for parsing NoNaMe Club torrent-tracker.
|
84
84
|
email:
|
85
85
|
- sergey@drummer.ru
|
@@ -100,6 +100,7 @@ files:
|
|
100
100
|
- lib/nnmClub_api/tracker.rb
|
101
101
|
- lib/nnmClub_api/version.rb
|
102
102
|
- nnmClub_api.gemspec
|
103
|
+
- spec/nnmclub_spec.rb
|
103
104
|
- spec/nnmcluv_api_spec.rb
|
104
105
|
- spec/spec_helper.rb
|
105
106
|
homepage: https://github.com/gemoroy/nnmClub_api
|
@@ -127,5 +128,6 @@ signing_key:
|
|
127
128
|
specification_version: 4
|
128
129
|
summary: NNM-Club torrent-tacker parser.
|
129
130
|
test_files:
|
131
|
+
- spec/nnmclub_spec.rb
|
130
132
|
- spec/nnmcluv_api_spec.rb
|
131
133
|
- spec/spec_helper.rb
|