Sha256: ccb238155344d7af4de657e742eaf74469792e576934c41cf26fb825c1301c4c
Contents?: true
Size: 1.6 KB
Versions: 2
Compression:
Stored size: 1.6 KB
Contents
class ComingSoon::Movie attr_accessor :name, :start_date, :url, :synopsis def self.movies self.scrape_movies @movies end def self.scrape_movies doc = Nokogiri::HTML(open("http://www.fandango.com/moviescomingsoon")) # name: doc.css("li.visual-item a.visual-title").text.strip # start_date: doc.css("li.visual-item span").text # url: doc.css("li.visual-item a").attribute("href").value movie_list = doc.css("li.visual-item") @movies = [] count = 1 movie_list.each do |movie| @soon = self.new @soon.name = movie.css("a.visual-title").text.strip @soon.start_date = movie.css("span").text @soon.url = movie.css("a").attribute("href").value self.scrape_synopsis @movies << @soon count+=1 if count > 20 # Displays only 20 movies break end end end def self.scrape_synopsis redirect_failed = false begin @doc_synop1 = Nokogiri::HTML(open(@soon.url)) # Uses the HTTP 'movieoverview' url rescue redirect_failed = true # An HTTP to HTTPS redirect failed end if !@doc_synop1.css("a.movie-synopsis-link").any? && !redirect_failed && @doc_synop1.css("span#SynopsisTextLabel").any? # If not a redirect failure and a READ FULL SYNOPSIS link is not # present and any text is available, use the text for the synopsis @soon.synopsis = @doc_synop1.css("span#SynopsisTextLabel").text else # scrape the synopsis using the HTTP 'plotsummary' url synop_url = @soon.url.sub(/movieoverview/, 'plotsummary') doc_synop2 = Nokogiri::HTML(open(synop_url)) @soon.synopsis = doc_synop2.css("p.subpage-descriptive-content").text end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
coming_soon-0.2.4 | lib/coming_soon/movie.rb |
coming_soon-0.2.3 | lib/coming_soon/movie.rb |