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