Sha256: 9bc4d93776f1feca8f8b31f6e629866da0d2cb146ce6fb662f680852039d3d33

Contents?: true

Size: 859 Bytes

Versions: 1

Compression:

Stored size: 859 Bytes

Contents

class ImdbSearch

  def initialize(query)
    @query = query
  end

  def movies
    @movies ||= (exact_match? ? parse_movie : parse_movies)
  end

  private
  
  def document
    @document ||= Hpricot(open("http://www.imdb.com/find?q=#{CGI::escape(@query)};s=tt").read)
  end
  
  def parse_movies
    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.map do |values|
      ImdbMovie.new(*values)
    end
  end
  
  def parse_movie
    id = document.at("a[@name='poster']")['href'][/\d+$/]
    title = document.at("h1").innerHTML.split('<span').first.strip.unescape_html
    [ImdbMovie.new(id, title)]
  end
  
  def exact_match?
    document.at("title[text()='IMDb Search']").nil?
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
porras-imdb-0.0.7 lib/imdb/imdb_search.rb