class Scrapers::RubyTapas::Episode

Constants

Attributes

description[RW]
file_list[RW]
guid[RW]
number[RW]
pub_date[RW]
slug[RW]
title[RW]

Public Class Methods

new(*args) click to toggle source
# File lib/scrapers/rubytapas/episode.rb, line 14
def initialize(*args)
  if args.size == 1
    case args[0]
    when String
      parse_item(Nokogiri::XML.parse(args[0]){|c| c.noblanks}.children.first)
    when Nokogiri::XML::Element
      parse_item(args[0])
    when Hash
      parse_options(args[0])
    else
    end
  elsif args.size > 1
    assign_from_args(*args)
  end
end

Public Instance Methods

file_list_from_description() click to toggle source
# File lib/scrapers/rubytapas/episode.rb, line 38
def file_list_from_description
  find_file_list(description)
end
number_from_title() click to toggle source
# File lib/scrapers/rubytapas/episode.rb, line 30
def number_from_title
  title.scan(/\w+/).first
end
slug_from_title() click to toggle source
# File lib/scrapers/rubytapas/episode.rb, line 34
def slug_from_title
  title.to_s.to_url
end

Private Instance Methods

assign_from_args(*args) click to toggle source
# File lib/scrapers/rubytapas/episode.rb, line 66
def assign_from_args(*args)
  self.number,
  self.title,
  self.slug,
  self.link,
  self.description,
  self.guid,
  self.pub_date,
  self.file_list =
    *args
end
find_file_list(content) click to toggle source
# File lib/scrapers/rubytapas/episode.rb, line 78
def find_file_list(content)
  Nokogiri::HTML.parse(content).css("a").
    select {|link| link['href'] =~ /download\?file_id=/ }.
    map { |link| FileLink.new(link.child.text, link['href']) }
end
parse_item(item) click to toggle source
# File lib/scrapers/rubytapas/episode.rb, line 44
def parse_item(item)
  self.title = item.xpath("title").text
  self.number = number_from_title
  self.slug = slug_from_title
  self.link = item.xpath("link").text
  self.description = item.xpath("description").text
  self.guid = item.xpath("guid").text
  self.pub_date = DateTime.parse(item.xpath("pubDate").text)
  self.file_list = file_list_from_description
end
parse_options(options) click to toggle source
# File lib/scrapers/rubytapas/episode.rb, line 55
def parse_options(options)
  self.number = options[:number]
  self.title = options[:title]
  self.slug = options[:slug]
  self.link = options[:link]
  self.description = options[:description]
  self.guid = options[:guid]
  self.pub_date = options[:pub_date]
  self.file_list = options[:file_list]
end