class TalkTalkTV::FilmPage
Attributes
body[R]
url[R]
Public Class Methods
from_url(url)
click to toggle source
# File lib/talktalk_tv/film_page.rb, line 14 def self.from_url(url) response = HTTPClient.new.get(url) FilmPage.new(body: Nokogiri::HTML(response.body), url: url) end
new(body:, url: nil)
click to toggle source
# File lib/talktalk_tv/film_page.rb, line 7 def initialize(body:, url: nil) @body = body @url = url end
Public Instance Methods
buy_price()
click to toggle source
# File lib/talktalk_tv/film_page.rb, line 59 def buy_price select_price(body, '.c-retailButton--purchase .c-retailButton__price > text()') end
certificate()
click to toggle source
# File lib/talktalk_tv/film_page.rb, line 45 def certificate match = body.css('.g-assetInfo li').map { |n| %r{CERT (.*)}.match(n.content) }.compact.first match && match[1] end
film()
click to toggle source
# File lib/talktalk_tv/film_page.rb, line 19 def film Film.new( title: title, url: url, image_url: image_url, release_year: release_year, certificate: certificate, running_time_in_minutes: running_time_in_minutes, rental_price: rental_price, buy_price: buy_price ) end
image_url()
click to toggle source
# File lib/talktalk_tv/film_page.rb, line 36 def image_url body.css('.c-packShot noscript img').first.attributes['src'].value end
release_year()
click to toggle source
# File lib/talktalk_tv/film_page.rb, line 40 def release_year match = body.css('.g-assetInfo li').map { |n| %r{(\d{4})}.match(n.content) }.compact.first match && match[1].to_i end
rental_price()
click to toggle source
# File lib/talktalk_tv/film_page.rb, line 55 def rental_price select_price(body, '.c-retailButton--rental .c-retailButton__price > text()') end
running_time_in_minutes()
click to toggle source
# File lib/talktalk_tv/film_page.rb, line 50 def running_time_in_minutes match = body.css('.g-assetInfo li').map { |n| %r{(\d+) HRS (\d+) MINS}.match(n.content) }.compact.first match && (match[1].to_i * 60 + match[2].to_i) end
title()
click to toggle source
# File lib/talktalk_tv/film_page.rb, line 32 def title body.css('.g-assetTitle').first.content.strip end
Private Instance Methods
select_price(body, selector)
click to toggle source
# File lib/talktalk_tv/film_page.rb, line 64 def select_price(body, selector) price_tag = body.css(selector).first price_tag && price_tag.text.strip end