Class: ComingSoon::Movie
- Inherits:
-
Object
- Object
- ComingSoon::Movie
- Defined in:
- lib/coming_soon/movie.rb
Instance Attribute Summary collapse
-
#name ⇒ Object
Returns the value of attribute name.
-
#start_date ⇒ Object
Returns the value of attribute start_date.
-
#synopsis ⇒ Object
Returns the value of attribute synopsis.
-
#url ⇒ Object
Returns the value of attribute url.
Class Method Summary collapse
Instance Attribute Details
#name ⇒ Object
Returns the value of attribute name.
3 4 5 |
# File 'lib/coming_soon/movie.rb', line 3 def name @name end |
#start_date ⇒ Object
Returns the value of attribute start_date.
3 4 5 |
# File 'lib/coming_soon/movie.rb', line 3 def start_date @start_date end |
#synopsis ⇒ Object
Returns the value of attribute synopsis.
3 4 5 |
# File 'lib/coming_soon/movie.rb', line 3 def synopsis @synopsis end |
#url ⇒ Object
Returns the value of attribute url.
3 4 5 |
# File 'lib/coming_soon/movie.rb', line 3 def url @url end |
Class Method Details
.movies ⇒ Object
5 6 7 8 9 10 11 |
# File 'lib/coming_soon/movie.rb', line 5 def self.movies self.scrape_movies @movies end |
.scrape_movies ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/coming_soon/movie.rb', line 13 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 |
.scrape_synopsis ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/coming_soon/movie.rb', line 42 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 |