]> git.netwichtig.de Git - user/henk/code/ruby/rbot.git/blobdiff - data/rbot/plugins/imdb.rb
* (plugins/translator) fixed a diagnostic message
[user/henk/code/ruby/rbot.git] / data / rbot / plugins / imdb.rb
index 652d744246c237850f41e49e6d06edaeec5446ad..58684a721cbfd550a25c837f8a3a82e1887291d8 100644 (file)
@@ -11,8 +11,6 @@
 #
 # License:: MIT license
 
-require 'uri/common'
-
 class Imdb
   IMDB = "http://us.imdb.com"
   TITLE_OR_NAME_MATCH = /<a href="(\/(?:title|name)\/(?:tt|nm)[0-9]+\/?)[^"]*"(?:[^>]*)>([^<]*)<\/a>/
@@ -325,11 +323,11 @@ class Imdb
           extra = nil
           if txt.match(/^(.*)\s+\.\.\.\.\s+(.*)$/)
             role = $1
-            extra = "(#{$2})"
+            extra = "(#{$2.ircify_html})"
           else
             role = txt
           end
-          next if role_req and role.downcase != role_req.downcase
+          next if role_req and not role.match(/^#{role_req}/i)
           if comm
             extra ||= ""
             extra += comm.ircify_html if comm
@@ -395,7 +393,14 @@ class ImdbPlugin < Plugin
     :desc => "Whether searching movies by person/year should also return TV series")
 
   def help(plugin, topic="")
-    "imdb <string> => search http://www.imdb.org for <string>: prefix <string> with 'name' or 'title' if you only want to search for people or films respectively, e.g.: imdb name ed wood"
+    case plugin
+    when "movies"
+      "movies by <who> in <years> [as <role>] => display the movies in the <years> where which <who> was <role>; <role> can be one of actor, actress, director or anything: if it's omitted, the role is defined by the prefix: \"movies by ...\" implies director, \"movies with ...\" implies actor or actress; the years can be specified as \"in the 60s\" or as \"in 1953\""
+    when /characters?/
+      "character played by <who> in <movie> => show the character played by <who> in movie <movie>. characters in <movie> => show the actors and characters in movie <movie>"
+    else
+      "imdb <string> => search http://www.imdb.org for <string>: prefix <string> with 'name' or 'title' if you only want to search for people or films respectively, e.g.: imdb name ed wood. see also movies and characters"
+    end
   end
 
   attr_reader :i
@@ -422,7 +427,7 @@ class ImdbPlugin < Plugin
       end
     end
     if info.length == 1
-      m.reply Utils.decode_html_entities info.first.join("\n")
+      m.reply Utils.decode_html_entities(info.first.join("\n"))
     else
       m.reply info.map { |si|
         Utils.decode_html_entities si.join(" | ")
@@ -437,15 +442,16 @@ class ImdbPlugin < Plugin
     who = params[:who].to_s
     years = params[:years]
     role = params[:role]
-    if not role
+    if role and role.downcase == 'anything'
+      role = nil
+    elsif not role
       case params[:prefix].intern
       when :with
-        role = /actor|actress/
+        role = /actor|actress/i
       when :by
-        role = /director/
+        role = 'director'
       end
     end
-    role = nil if role.downcase = 'anything'
 
     name_urls = i.search(who, :type => :name)
     unless name_urls