]> git.netwichtig.de Git - user/henk/code/ruby/rbot.git/blobdiff - data/rbot/plugins/imdb.rb
imdb plugin: fixed the ratings regex
[user/henk/code/ruby/rbot.git] / data / rbot / plugins / imdb.rb
index 94e4e57101290438c5c4c329bf741f650d62bd7e..bfe27369c6b8ab8e87e02488a7f2f86d3f972fa2 100644 (file)
@@ -153,7 +153,7 @@ class Imdb
         country = data.ircify_html.gsub(' / ','/')
       end
 
-      info << [title, "(#{country}, #{date})", extra, dir ? "[#{dir}]" : nil, opts[:nourl] ? nil : ": http://us.imdb.com#{sr}"].compact.join(" ")
+      info << [title, "(#{country}, #{date})", extra, dir ? "[#{dir}]" : nil, opts[:nourl] ? nil : ": http://www.imdb.com#{sr}"].compact.join(" ")
 
       return info if opts[:title_only]
 
@@ -165,7 +165,7 @@ class Imdb
       end
 
       ratings = "no votes"
-      m = /<b>([0-9.]+)\/10<\/b>\n?\r?\s+<small>\(<a href="ratings">([0-9,]+) votes?<\/a>\)<\/small>/.match(resp.body)
+      m = /<b>([0-9.]+)\/10<\/b>\n?\r?\s+[^<]+<a href="ratings"[^>]+>([0-9,]+) votes?<\/a>/.match(resp.body)
       if m
         ratings = "#{m[1]}/10 (#{m[2]} voters)"
       end
@@ -205,7 +205,8 @@ class Imdb
       return nil if !m
       name = m[1]
 
-      info << "#{name} : http://us.imdb.com#{sr}"
+      info << "#{name}"
+      info.last << " : http://www.imdb.com#{sr}" unless opts[:nourl]
 
       return info if opts[:name_only]
 
@@ -406,11 +407,12 @@ class ImdbPlugin < Plugin
   attr_reader :i
 
   TITLE_URL = %r{^http://(?:[^.]+\.)?imdb.com(/title/tt\d+/)}
+  NAME_URL = %r{^http://(?:[^.]+\.)?imdb.com(/name/nm\d+/)}
   def imdb_filter(s)
     loc = Utils.check_location(s, TITLE_URL)
     if loc
       sr = loc.first.match(TITLE_URL)[1]
-      extra = $2
+      extra = $2 # nothign for the time being, could be fullcredits or whatever
       res = i.info_title(sr, :nourl => true, :characters => (extra == 'fullcredits'))
       debug res
       if res
@@ -419,6 +421,19 @@ class ImdbPlugin < Plugin
         return nil
       end
     end
+    loc = Utils.check_location(s, NAME_URL)
+    if loc
+      sr = loc.first.match(NAME_URL)[1]
+      extra = $2 # nothing for the time being, could be filmoyear or whatever
+      res = i.info_name(sr, :nourl => true, :movies_by_year => (extra == 'filmoyear'))
+      debug res
+      if res
+        name = res.shift
+        return {:title => name, :content => res.join(". ")}
+      else
+        return nil
+      end
+    end
     return nil
   end