Class: FilmAffinity::Movie
- Inherits:
-
Object
- Object
- FilmAffinity::Movie
- Defined in:
- lib/filmaffinity/movie.rb
Instance Attribute Summary collapse
-
#id ⇒ Object
readonly
Returns the value of attribute id.
Instance Method Summary collapse
- #cast ⇒ Object
- #company ⇒ Object
- #country ⇒ Object
- #director ⇒ Object
- #document_html ⇒ Object
- #duration ⇒ Object
- #generate_html ⇒ Object
- #genres ⇒ Object
-
#initialize(id, title = nil) ⇒ Movie
constructor
A new instance of Movie.
- #music ⇒ Object
- #photography ⇒ Object
- #poster ⇒ Object
- #poster_big ⇒ Object
- #rating ⇒ Object
- #script ⇒ Object
- #sinopsis ⇒ Object
- #title ⇒ Object
- #to_json(*_args) ⇒ Object
- #year ⇒ Object
Constructor Details
#initialize(id, title = nil) ⇒ Movie
Returns a new instance of Movie.
7 8 9 10 11 12 |
# File 'lib/filmaffinity/movie.rb', line 7 def initialize(id, title = nil) @id = id @title = title @json_parser = JsonMovieParser.new @poster_manager = PosterManager.new end |
Instance Attribute Details
#id ⇒ Object (readonly)
Returns the value of attribute id.
5 6 7 |
# File 'lib/filmaffinity/movie.rb', line 5 def id @id end |
Instance Method Details
#cast ⇒ Object
76 77 78 79 80 81 82 |
# File 'lib/filmaffinity/movie.rb', line 76 def cast document_html.search(Constants.tag(:cast)).map do |actor| actor.at(Constants.tag(:cast_each)).content.strip end rescue StandardError [] end |
#company ⇒ Object
58 59 60 61 62 |
# File 'lib/filmaffinity/movie.rb', line 58 def company document_html.at(Constants.tag(:company)).next_sibling.next_sibling.content rescue StandardError nil end |
#country ⇒ Object
40 41 42 43 44 |
# File 'lib/filmaffinity/movie.rb', line 40 def country document_html.at(Constants.tag(:country)).next_sibling.content&.gsub(/\A[[:space:]]+|[[:space:]]+\z/, '') rescue StandardError nil end |
#director ⇒ Object
46 47 48 49 50 |
# File 'lib/filmaffinity/movie.rb', line 46 def director document_html.at(Constants.tag(:director)).content&.strip rescue StandardError nil end |
#document_html ⇒ Object
14 15 16 |
# File 'lib/filmaffinity/movie.rb', line 14 def document_html @document_html ||= Nokogiri::HTML(generate_html) end |
#duration ⇒ Object
34 35 36 37 38 |
# File 'lib/filmaffinity/movie.rb', line 34 def duration document_html.at(Constants.tag(:duration)).content[/\d+/].to_i rescue StandardError nil end |
#generate_html ⇒ Object
18 19 20 |
# File 'lib/filmaffinity/movie.rb', line 18 def generate_html URI.parse(Constants.urls[:movie] % id).open end |
#genres ⇒ Object
84 85 86 87 88 89 90 91 92 |
# File 'lib/filmaffinity/movie.rb', line 84 def genres node = document_html.at(Constants.tag(:genre)).next_sibling.next_sibling raw_genres = node.search('a') raw_genres.map do |raw_genre| raw_genre.content.strip end rescue StandardError [] end |
#music ⇒ Object
52 53 54 55 56 |
# File 'lib/filmaffinity/movie.rb', line 52 def music document_html.at(Constants.tag(:music)).next_sibling.next_sibling.content rescue StandardError nil end |
#photography ⇒ Object
70 71 72 73 74 |
# File 'lib/filmaffinity/movie.rb', line 70 def photography document_html.at(Constants.tag(:photography)).next_sibling.next_sibling.content rescue StandardError nil end |
#poster ⇒ Object
107 108 109 110 111 112 |
# File 'lib/filmaffinity/movie.rb', line 107 def poster poster_url = document_html.at(Constants.tag(:poster))['src'] @poster_manager.load_poster(poster_url) if poster_url rescue StandardError nil end |
#poster_big ⇒ Object
114 115 116 117 118 119 |
# File 'lib/filmaffinity/movie.rb', line 114 def poster_big poster_url = document_html.at(Constants.tag(:poster_big))['href'] @poster_manager.load_poster(poster_url) if poster_url rescue StandardError nil end |
#rating ⇒ Object
100 101 102 103 104 105 |
# File 'lib/filmaffinity/movie.rb', line 100 def = document_html.at(Constants.tag(:rating)).content.strip &.tr(',', '.')&.to_f rescue StandardError nil end |
#script ⇒ Object
64 65 66 67 68 |
# File 'lib/filmaffinity/movie.rb', line 64 def script document_html.at(Constants.tag(:script)).next_sibling.next_sibling.content rescue StandardError nil end |
#sinopsis ⇒ Object
94 95 96 97 98 |
# File 'lib/filmaffinity/movie.rb', line 94 def sinopsis document_html.at(Constants.tag(:sinopsis)).content rescue StandardError nil end |
#title ⇒ Object
22 23 24 25 26 |
# File 'lib/filmaffinity/movie.rb', line 22 def title @title ||= document_html.at(Constants.tag(:title)).content.strip rescue StandardError nil end |
#to_json(*_args) ⇒ Object
121 122 123 |
# File 'lib/filmaffinity/movie.rb', line 121 def to_json(*_args) @json_parser.to_json(self) end |