Sha256: 3e7fae9a7b309a0ae3cd58b4fbe15441f8a896a05eba9c43693315e96acb9d67

Contents?: true

Size: 933 Bytes

Versions: 1

Compression:

Stored size: 933 Bytes

Contents

module Imdb
  class Search

    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|
        Imdb::Movie.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
      [Imdb::Movie.new(id, title)]
    end
  
    def exact_match?
      document.at("title[text()='IMDb Search']").nil?
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
langalex-imdb-0.0.8 lib/imdb/imdb_search.rb