nnmClub_api 0.0.2 → 0.1.0

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: 976f79688d6f20d4756397a3283e2a05c8f6f363
4
- data.tar.gz: c7a6d73d22c4303e5b54d3d279ffd73d0dc02587
3
+ metadata.gz: 1ce245f8e634a48d98757a38effa29e3b12b3295
4
+ data.tar.gz: 02c33eb4380d1fd6f74f6dc8cd31a4813e21492e
5
5
  SHA512:
6
- metadata.gz: 845e8e6b5bab5bb3507a898690b19fd5382dfabe7e43b90aa4d7163103cded2e49a9f6fee984f23138e5efab7ca2d3d4994cfaa513994ac549792096a76fc6b6
7
- data.tar.gz: d427906ab75a852346ff794f71d537382eb2f772d7aa6a64222271ddfb9b6542297b1982f085f669f9b9ed69145a99e856ca93eee88864c457093428c76d9e78
6
+ metadata.gz: 664329d108174f638eb427945307d910f54636f1b0fc464b5d0abafbac5aab39473746cdf849790e83bf4cbb0b0a904f04a06fec9b830b326a85f6f102f00b38
7
+ data.tar.gz: 4fe5cd73fdcadea74e4381073c0410aebc814b7fdb052df0bc4efbb5e4c804d396f76ab06d11ad2d708e75fafecb7f1096c258c0677da64d294f7d2a05043aca
data/Guardfile CHANGED
@@ -1,9 +1,5 @@
1
- # A sample Guardfile
2
- # More info at https://github.com/guard/guard#readme
3
-
4
- guard :rspec do
1
+ guard :rspec, cmd: 'bundle exec rspec' do
5
2
  watch(%r{^spec/.+_spec\.rb$})
6
3
  watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
7
4
  watch('spec/spec_helper.rb') { "spec" }
8
- end
9
-
5
+ end
data/lib/nnmClub_api.rb CHANGED
@@ -1,53 +1,4 @@
1
1
  require "nnmClub_api/version"
2
- require "rubygems"
3
- require "mechanize"
4
- require "json"
5
-
6
- class NnmclubApi
7
- attr_accessor :agent, :result
8
-
9
- SEARCH_PAGE = 'http://nnm-club.me/forum/tracker.php'
10
-
11
- ORDER_OPTIONS = { date: 1, name: 2, downloads: 4, shows: 6, seeders: 10,
12
- leechers: 11, size: 7, last_post: 8, speed_up: 12,
13
- speed_down: 13, message_count: 5, last_seed: 9 }
14
- SORT_OPTIONS = {asc: 1, desc: 2}
15
-
16
- def initialize
17
- @agent = Mechanize.new
18
- @agent.user_agent_alias = "Mac Safari"
19
- end
20
-
21
- def result
22
- @result.to_json
23
- end
24
-
25
- #@param option [Hash] the format type, `:title`
26
- #@return [Hash] the options keys with search result
27
- def search(options = {})
28
- @result = []
29
- query = prepare_query_string options
30
- @agent.get query
31
- parse_search
32
- end
33
-
34
- private
35
- def prepare_query_string(options)
36
- SEARCH_PAGE+"?nm="+options[:title].gsub(/\s/,'%20')
37
- end
38
-
39
- def parse_search
40
- @agent.page.search("//table[@class='forumline tablesorter']/tbody/tr").map do |row|
41
- size = row.at("td[6]/u").text.to_i
42
- title = row.css(".topictitle").text.strip
43
- seeders = row.css('.seedmed').text.to_i
44
- leechers = row.css('.leechmed').text.to_i
45
- torrent_id = row.css('.topictitle').at('a')
46
-
47
- if !title.nil? && !title.empty? && !torrent_id.nil?
48
- @result.push ({ title: title, torrent_id: "http://nnm-club.me/forum/#{torrent_id.values.last}",
49
- seeders: seeders, leechers: leechers, size: size })
50
- end
51
- end
52
- end
53
- end
2
+ require "nnmClub_api/tracker"
3
+ require "nnmClub_api/search"
4
+ require "nnmClub_api/torrent"
@@ -0,0 +1,47 @@
1
+ require "uri"
2
+ require "open-uri"
3
+ require "nokogiri"
4
+
5
+ class Hash
6
+ def any_nil?
7
+ @result = false
8
+ self.keys.each { |key|
9
+ @result = self[key].nil? ? true : false
10
+ break if @result
11
+ }
12
+ @result
13
+ end
14
+ end
15
+
16
+
17
+ module NnmClub
18
+
19
+ class Search
20
+ attr_reader :torrents, :url
21
+ def initialize(query, category = nil)
22
+ torrents = []
23
+ query = URI.escape(query)
24
+ @url = NnmClub::URL+"nm=#{query}"+(!category.nil? ? "&c=#{category}" : "")
25
+
26
+ document = Nokogiri::HTML(open(@url))
27
+ document.css("table.forumline.tablesorter").css(".prow1",".prow2").each { |row|
28
+
29
+ size = row.at("td[6]/u").nil? ? nil : row.at("td[6]/u").text.to_i
30
+ title = row.css(".topictitle").empty? ? nil : row.css(".topictitle").text.strip
31
+ seeders = row.css(".seedmed").empty? ? nil : row.css(".seedmed").text.to_i
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
41
+ }
42
+ torrents.push(torrent) unless torrent.any_nil?
43
+ }
44
+ @torrents = torrents
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,16 @@
1
+ require "uri"
2
+ require "open-uri"
3
+ require "nokogiri"
4
+
5
+ module NnmClub
6
+ class Torrent
7
+ def self.find(torrent_id)
8
+ document = Nokogiri::HTML(open(NnmClub::TorrentURL+torrent_id))
9
+ postbody = document.css('.postbody').first
10
+ info = {:content => postbody.to_html( encoding: "UTF-8" ),
11
+ :image => postbody.css('var.postImg').first['title']
12
+ }
13
+ return info
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,6 @@
1
+ module NnmClub
2
+ ID = "nnmclub"
3
+ IMG = "http://nnm-club.me/favicon.ico"
4
+ URL = "http://nnm-club.me/forum/tracker.php?"
5
+ TorrentURL = "http://nnm-club.me/forum/viewtopic.php?t="
6
+ end
@@ -1,3 +1,3 @@
1
1
  module NnmClubApi
2
- VERSION = "0.0.2"
2
+ VERSION = "0.1.0"
3
3
  end
data/nnmClub_api.gemspec CHANGED
@@ -8,8 +8,8 @@ Gem::Specification.new do |spec|
8
8
  spec.version = NnmClubApi::VERSION
9
9
  spec.authors = ["Baranov Sergey"]
10
10
  spec.email = ["sergey@drummer.ru"]
11
- spec.summary = %q{ Write a short summary. Required.}
12
- spec.description = %q{ Write a longer description. Optional.}
11
+ spec.summary = %q{NNM-Club torrent-tacker parser.}
12
+ spec.description = %q{Gem for parsing NoNaMe Club torrent-tracker.}
13
13
  spec.homepage = "https://github.com/gemoroy/nnmClub_api"
14
14
  spec.license = "MIT"
15
15
 
@@ -18,6 +18,10 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_development_dependency "bundler", "~> 1.6"
21
+ spec.add_development_dependency "bundler", "~> 1.7"
22
22
  spec.add_development_dependency "rake"
23
- end
23
+ spec.add_development_dependency "rspec"
24
+ spec.add_development_dependency "guard-rspec"
25
+
26
+ spec.add_dependency "nokogiri"
27
+ end
@@ -1,14 +1,45 @@
1
- require 'nnmClub_api'
1
+ require "nnmClub_api"
2
2
 
3
- describe "NnmclubApi " do
4
- before { @tracker = NnmclubApi.new('login', 'pass') }
5
- subject { @tracker }
3
+ 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
6
13
 
7
- describe "#search" do
8
- describe "with valid params" do
9
- it "returns link with term" do
10
- expect( @tracker.search(title: "Noize MC") ).to eq('http://nnm-club.me/forum/tracker.php?nm=Noize%20MC')
11
- end
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")
12
17
  end
13
18
  end
19
+
20
+ describe "#torrents" do
21
+ before {
22
+ @query = "ruby on rails"
23
+ @search = NnmClub::Search.new @query
24
+ }
25
+
26
+ it "should return array" do
27
+ expect(@search.torrents.class).to eq([].class)
28
+ end
29
+
30
+ it "should retur array of 3 elements" do
31
+ expect(@search.torrents.length).to eq(3)
32
+ end
33
+ end
34
+
35
+ describe "Torrent" do
36
+ before {
37
+ @torrent_id = "728159"
38
+ @torrent = NnmClub::Torrent.find @torrent_id
39
+ }
40
+ it "should return @description" do
41
+ expect(@torrent.class).to eq({}.class)
42
+ end
43
+ end
44
+
14
45
  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.0.2
4
+ version: 0.1.0
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-07-24 00:00:00.000000000 Z
11
+ date: 2014-09-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.6'
19
+ version: '1.7'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.6'
26
+ version: '1.7'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -38,7 +38,49 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
- description: " Write a longer description. Optional."
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: guard-rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: nokogiri
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ description: Gem for parsing NoNaMe Club torrent-tracker.
42
84
  email:
43
85
  - sergey@drummer.ru
44
86
  executables: []
@@ -53,6 +95,9 @@ files:
53
95
  - README.md
54
96
  - Rakefile
55
97
  - lib/nnmClub_api.rb
98
+ - lib/nnmClub_api/search.rb
99
+ - lib/nnmClub_api/torrent.rb
100
+ - lib/nnmClub_api/tracker.rb
56
101
  - lib/nnmClub_api/version.rb
57
102
  - nnmClub_api.gemspec
58
103
  - spec/nnmcluv_api_spec.rb
@@ -77,10 +122,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
77
122
  version: '0'
78
123
  requirements: []
79
124
  rubyforge_project:
80
- rubygems_version: 2.2.2
125
+ rubygems_version: 2.4.1
81
126
  signing_key:
82
127
  specification_version: 4
83
- summary: Write a short summary. Required.
128
+ summary: NNM-Club torrent-tacker parser.
84
129
  test_files:
85
130
  - spec/nnmcluv_api_spec.rb
86
131
  - spec/spec_helper.rb