module TheatresJacroCinema
Parse JACRO/Tapos cinema widgets (e.g. kingaroycinema.com).
Constants
- TIME_PATTERN
Public Instance Methods
Source
# File lib/theatres_jacro_cinema.rb, line 44 def dedupe_times(times) seen = {} times.each_with_object([]) do |time, list| next if time.empty? || seen[time] seen[time] = true list << time end end
Source
# File lib/theatres_jacro_cinema.rb, line 37 def normalize_time(time) match = time.to_s.strip.match(TIME_PATTERN) return "" unless match match[0].strip.gsub(/\s+/, " ").upcase end
Source
# File lib/theatres_jacro_cinema.rb, line 11 def parse_sessions(html, cinema:, chain: nil) doc = Nokogiri::HTML(html.to_s) movies = [] doc.css("div.movie-tabs").each do |block| title = block.at_css("h3.no-underline a, h3 a")&.text.to_s.strip next if title.empty? rating = block.at_css("span.certificate")&.text.to_s.strip times = block.css("a.perfbtn").map { |node| normalize_time(node.text) }.reject(&:empty?) next if times.empty? movies << { title: title, rating: rating.empty? ? nil : rating, times: dedupe_times(times) } end { cinema: cinema.to_s, chain: chain, movies: movies } end