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