Sha256: 478127925ff5e46df0b94f4a3e7566d545f9de5270f9240a0361ea542f69491f

Contents?: true

Size: 1.1 KB

Versions: 3

Compression:

Stored size: 1.1 KB

Contents

require 'mechanize'

module TorrentSearch
  module Trackers
    module KickAss
      class Scraper

        BASE_URL = "http://kickass.to/usearch"
        LIMIT = 10

        def initialize(search_terms, options = {})
          @search_terms = search_terms
          @options = options
        end

        def search
          search_results.map do |row|
            Torrent.new(row)
          end
        rescue Mechanize::ResponseCodeError
          []
        end

        private

        def search_results
          page.search('table.data tr').tap do |results|
            results.shift
          end.take(limit)
        end

        def limit
          @options.fetch 'limit', LIMIT
        end

        def page
          @page ||= agent.get search_url
        end

        def search_url
          terms = @search_terms.join("%20")
          [BASE_URL, terms, search_append].join "/"
        end

        def search_append
          "?field=seeders&sorder=desc"
        end

        def agent
          @agent ||= Mechanize.new { |agent| agent.user_agent_alias = 'Mac Safari' }
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
torrent_search-0.0.3 lib/torrent_search/trackers/kick_ass/scraper.rb
torrent_search-0.0.2 lib/torrent_search/trackers/kick_ass/scraper.rb
torrent_search-0.0.1 lib/torrent_search/trackers/kick_ass/scraper.rb