class Ezrss::Search

Attributes

results[R]

Public Class Methods

new(show_name, opts = {}) click to toggle source
# File lib/ezrss/search.rb, line 9
def initialize show_name, opts = {}
  @show_name       = show_name
  @show_name_exact = opts[:show_name_exact] || false
  @date            = opts[:date] ? opts[:date].strftime("%Y-%m-%d") : ""
  @quality         = opts[:quality] || ""
  @quality_exact   = opts[:quality_exact] || false
  @release_group   = opts[:release_group] || ""

  @results = fetch_results
end

Protected Instance Methods

fetch_results() click to toggle source
# File lib/ezrss/search.rb, line 22
def fetch_results
  retryable(tries: 5) do
    rss = Mash.new(HTTParty.get(search_url).parsed_response).rss
    if rss && rss.channel && rss.channel.item
      if rss.channel.item.class == Array
        rss.channel.item.map do |item|
          parse_metadata(item)
        end
      else
        [parse_metadata(rss.channel.item)]
      end
    else
      Array.new
    end
  end
end
parse_metadata( item ) click to toggle source
# File lib/ezrss/search.rb, line 52
def parse_metadata( item )
  metadata    = item.title.gsub( /.*\[(.*)\].*/, '\1').split(" - ")
  item.proper = false
  item.repack = false
  metadata.each do |m|
    if m == "PROPER"
      item.proper = true
    elsif m == "REPACK"
      item.repack = true
    elsif m == "REPACKPROPER"
      item.repack = true
      item.proper = true
    elsif m == "720P"
      item.quality = "720p"
    elsif m == "1080P"
      item.quality = "1080p"
    elsif item.quality == nil
      item.quality = m
    end
  end
  item.release_group = metadata[-1]

  desc = {}
  item.description.split(";").each do |i|
    k, v = i.split(":")
    desc[k.strip] = v.strip
  end
  item.season = desc["Season"].to_i
  item.episode = desc["Episode"].to_i

  item
end
search_url() click to toggle source
# File lib/ezrss/search.rb, line 39
def search_url
  URI::encode ( 'https://ezrss.it/search/index.php?' + 
      'show_name=%s' +
      '&show_name_exact=%s' + 
      '&date=%s' +
      '&quality=%s' +
      '&quality_exact=%s' +
      '&release_group=%s' +
      '&mode=rss' ) %
    [ @show_name, @show_name_exact, @date, 
      @quality, @quality_exact, @release_group ]
end