lib/nnmClub_api/search.rb in nnmClub_api-0.1.2 vs lib/nnmClub_api/search.rb in nnmClub_api-0.1.3

- old
+ new

@@ -1,9 +1,5 @@ -require "uri" -require "open-uri" -require "nokogiri" - class Hash def any_nil? @result = false self.keys.each { |key| @result = self[key].nil? ? true : false @@ -11,37 +7,27 @@ } @result end end - module NnmClub - class Search - attr_reader :torrents, :url - def initialize(query, category = nil) - torrents = [] - query = URI.escape(query) - @url = NnmClub::URL+"nm=#{query}"+(!category.nil? ? "&c=#{category}" : "") - - document = Nokogiri::HTML(open(@url)) - document.css("table.forumline.tablesorter").css(".prow1",".prow2").each { |row| - - size = row.at("td[6]/u").nil? ? nil : row.at("td[6]/u").text.to_i - title = row.css(".topictitle").empty? ? nil : row.css(".topictitle").text.strip - seeders = row.css(".seedmed").empty? ? nil : row.css(".seedmed").text.to_i - leechers = row.css(".leechmed").empty? ? nil : row.css(".leechmed").text.to_i - torrent_id = row.css(".topictitle").empty? ? nil : row.css(".topictitle").first[:href].split("=").last - - torrent = { :title => title, - :size => size, - :seeders => seeders, - :leechers => leechers, - :torrent_id => torrent_id, - :tracker => NnmClub::ID + attr_reader :torrents + def initialize(query, agent = Mechanize.new) + form = agent.get(NnmClub::URL).forms.last + form.field("nm").value = query + form.checkbox("sd").check + form.checkbox("a").check + torrents = form.submit.search(".prow1",".prow2").collect { |row| + torrent = { + :title => row.css(".topictitle").empty? ? (nil and status=true) : row.css(".topictitle").text.strip, + :size => row.at("td[6]/u").nil? ? nil : row.at("td[6]/u").text.to_i, + :seeders => row.css(".seedmed").empty? ? nil : row.css(".seedmed").text.to_i, + :torrent_id => status ? nil : row.css(".topictitle").first[:href].split("=").last } - torrents.push(torrent) unless torrent.any_nil? + torrent unless torrent.any_nil? } @torrents = torrents + end end end \ No newline at end of file