class MediaartsScraper::Page::AnimeSeriesPage

Constants

OPTION
PATH

Attributes

ans_id[RW]

Public Class Methods

from_ans_id(ans_id) click to toggle source
# File lib/mediaarts_scraper/page/anime_series_page.rb, line 11
def self.from_ans_id(ans_id)
  self.new(url: generate_url(ans_id))
end
generate_url(ans_id) click to toggle source
# File lib/mediaarts_scraper/page/anime_series_page.rb, line 15
def self.generate_url(ans_id)
  [MediaartsScraper.base_url,
   PATH,
   ans_id,
   OPTION].join
end

Public Instance Methods

episodes_page() click to toggle source
# File lib/mediaarts_scraper/page/anime_series_page.rb, line 22
def episodes_page
  @episodes_page ||= parse_episode_page
end
packages_pages() click to toggle source
# File lib/mediaarts_scraper/page/anime_series_page.rb, line 26
def packages_pages
  @package_page ||= parse_packages_pages
end

Private Instance Methods

parse(html) click to toggle source
# File lib/mediaarts_scraper/page/anime_series_page.rb, line 32
def parse(html)
  {}.tap do |result|
    doc.xpath("//div[@class='main']/section/table").each do |table|
      result.merge!(parse_common_key_value_table(table))
    end

    doc.xpath("//div[@class='sub']/section").each do |section|
      result.merge!(parse_sub_section(section))
    end

    doc.xpath("//div[@class='moreContents']")&.each do |div|
      result.merge!(parse_more_contents(div))
    end
  end
end
parse_episode_page() click to toggle source
# File lib/mediaarts_scraper/page/anime_series_page.rb, line 70
def parse_episode_page
  move_story_element = doc.at_xpath("//div[@class='sub']/section/p[@class='moveStory']/a")

  return unless move_story_element

  relative_url = move_story_element.attribute("href").value

  AnimeEpisodesPage.from_url(resolve_relative_url(url, relative_url))
end
parse_more_contents(div) click to toggle source
# File lib/mediaarts_scraper/page/anime_series_page.rb, line 60
def parse_more_contents(div)
  base_key = div.xpath("h3").text.strip

  table_items = div.xpath("section/table[@class='seriesTbl']").each_with_object({}) do |table, memo|
    memo.merge!(parse_common_key_value_table(table))
  end

  {base_key => table_items}
end
parse_packages_pages() click to toggle source
# File lib/mediaarts_scraper/page/anime_series_page.rb, line 80
def parse_packages_pages
  doc.xpath("//div[@class='sub']/section/table[@class='seriesTbl2']/tbody/tr/td[@class='i']/a").map do |package_anchor_element|
    relative_url = package_anchor_element.attribute("href").value

    AnimePackagesPage.from_url(resolve_relative_url(url, relative_url))
  end
end
parse_sub_section(section) click to toggle source
# File lib/mediaarts_scraper/page/anime_series_page.rb, line 48
def parse_sub_section(section)
  base_key = section.xpath("h3").first.children.first.text.strip

  tables = section.xpath("table[@class='seriesTbl2']")

  raise ParseError unless tables.count == 1

  table = tables.first

  {base_key => parse_common_serial_rows_table(table)}
end