class Panchira::Narou::Novel18Resolver

Constants

ID_REGEXP
URL_REGEXP

Public Class Methods

new(url) click to toggle source
Calls superclass method
# File lib/panchira/resolvers/narou_resolver.rb, line 11
def initialize(url)
  super(url)

  if id = @url.match(ID_REGEXP)[:id]
    @desc = fetch_page("https://novel18.syosetu.com/novelview/infotop/ncode/#{id}/")
  end
end

Public Instance Methods

fetch_page(uri) click to toggle source
# File lib/panchira/resolvers/narou_resolver.rb, line 19
def fetch_page(uri)
  u = URI.parse(uri)
  http = Net::HTTP.new(u.host, u.port)
  http.use_ssl = u.port == 443
  res = http.get u.request_uri, {'cookie' => 'over18=yes;'}

  Nokogiri::HTML.parse(res.body, uri)
end
parse_author() click to toggle source
# File lib/panchira/resolvers/narou_resolver.rb, line 32
def parse_author
  @desc&.xpath('//*[@id="noveltable1"]/tr[2]/td')&.text&.strip
end
parse_canonical_url() click to toggle source

og:urlで指定されたncode.syosetu.com/~~~にアクセスすると301で戻されるので何もしない

# File lib/panchira/resolvers/narou_resolver.rb, line 42
def parse_canonical_url
  @url
end
parse_description() click to toggle source
# File lib/panchira/resolvers/narou_resolver.rb, line 28
def parse_description
  @desc&.xpath('//*[@id="noveltable1"]/tr/td')&.first&.text&.strip
end
parse_tags() click to toggle source
# File lib/panchira/resolvers/narou_resolver.rb, line 36
def parse_tags
  # つらい。
  @desc&.xpath('//*[@id="noveltable1"]/tr[3]')&.text&.split("\n\n\n")&.dig(1)&.split(' ')
end