Sha256: def4d090d703100360771f2c7ca32f2e4dfb78ef9229a4e8c691f18d99c9596c
Contents?: true
Size: 1.1 KB
Versions: 1
Compression:
Stored size: 1.1 KB
Contents
class ImdbSearch attr_accessor :query def initialize(query) self.query = query end def movies @movies ||= parse_movies_from_document end private def document @document ||= Hpricot(open("http://www.imdb.com/find?q=#{CGI::escape(query)};s=tt").read) end def parse_movies_from_document exact_match? ? parse_exact_match_search_results : parse_multi_movie_search_results end def parse_exact_match_search_results id = document.at("a[@name='poster']")['href'][/\d+$/] title = document.at("h1").innerHTML.split('<span').first.strip.unescape_html rescue nil [ImdbMovie.new(id, title)] end def parse_multi_movie_search_results ids_and_titles = document.search('a[@href^="/title/tt"]').reject do |element| element.innerHTML.strip_tags.empty? end.map do |element| [element['href'][/\d+/], element.innerHTML.strip_tags.unescape_html] end.uniq ids_and_titles.map do |id_and_title| ImdbMovie.new(id_and_title[0], id_and_title[1]) end end def exact_match? document.search("title[text()='IMDb Title Search']").empty? end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
jasonrudolph-imdb-0.0.6 | lib/imdb/imdb_search.rb |