lib/imdb.rb in pirate-autonzb-0.3.5 vs lib/imdb.rb in pirate-autonzb-0.4

- old
+ new

@@ -3,16 +3,17 @@ require 'open-uri' require 'htmlentities' class IMDB - attr_accessor :link + attr_accessor :link, :doc, :id def initialize(name, year = nil, link = nil) @name, @year, @link = name, year, link @coder = HTMLEntities.new set_doc + set_id end def score if @doc && score_text = @doc.search("div.meta b").first score_text.inner_html.match(/(.*)\/10/)[1].to_f @@ -27,34 +28,38 @@ def name $KCODE = 'utf-8' @doc ? @coder.decode(@doc.search("title").inner_html.match(/(.*)\s\(/u)[1]) : @name end - + private def set_doc - if link - @doc = Hpricot(open(link.gsub(/\/\s*$/,''))) + if @link + @doc = Hpricot(open(@link.gsub(/\/\s*$/,''))) else query = "#{@name} (#{@year})" search_url = "http://www.imdb.com/find?q=#{CGI::escape(query)}" doc = Hpricot(open(search_url)) case doc.search("title").inner_html - when "IMDb Title Search" # search result page + when "IMDb Title Search", "IMDb Search" # search result page if !doc.search("b[text()*='Media from'] a").empty? imdb_id = doc.search("b[text()*='Media from'] a").first[:href] movie_url = "http://www.imdb.com#{imdb_id}" elsif !doc.search("td[@valign='top'] a[@href^='/title/tt']").empty? imdb_id = doc.search("td[@valign='top'] a[@href^='/title/tt']").first[:href] movie_url = "http://www.imdb.com#{imdb_id}" + else + movie_url = nil end - @doc = Hpricot(open(movie_url)) - when "IMDb Search" - @doc = nil + @doc = Hpricot(open(movie_url)) if movie_url else # direct in movie page @doc = doc end end + end + + def set_id + @id = doc.search("a[@href*='/title/tt']").first[:href].match(/tt[0-9]+/)[0] if doc end end \ No newline at end of file