diff options
author | Giuseppe Bilotta <giuseppe.bilotta@gmail.com> | 2009-08-31 21:10:59 +0200 |
---|---|---|
committer | Giuseppe Bilotta <giuseppe.bilotta@gmail.com> | 2009-08-31 21:10:59 +0200 |
commit | 58fa16fbb206c87dc54d401307b6822f5952c15e (patch) | |
tree | f52d00e6735b9243f00aad95f363da136174161d /data | |
parent | 30e9bb21325872963f5532527e78d787fe7b26d0 (diff) |
search: show long definitions with 'google define:stuff'
Diffstat (limited to 'data')
-rw-r--r-- | data/rbot/plugins/search.rb | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/data/rbot/plugins/search.rb b/data/rbot/plugins/search.rb index 827a1303..95b88a0c 100644 --- a/data/rbot/plugins/search.rb +++ b/data/rbot/plugins/search.rb @@ -59,6 +59,10 @@ class SearchPlugin < Plugin def google(m, params) what = params[:words].to_s + if what.match(/^define:/) + return google_define(m, what, params) + end + searchfor = CGI.escape what # This method is also called by other methods to restrict searching to some sites if params[:site] @@ -125,6 +129,34 @@ class SearchPlugin < Plugin end + def google_define(m, what, params) + begin + wml = @bot.httputil.get(GOOGLE_SEARCH + CGI.escape(what)) + raise unless wml + rescue => e + m.reply "error googling for #{what}" + return + end + + begin + related_index = wml.index(/Related phrases:/, 0) + raise unless related_index + defs_index = wml.index(/Definitions of <b>/, related_index) + raise unless defs_index + defs_end = wml.index(/<input/, defs_index) + raise unless defs_end + rescue => e + m.reply "no results found for #{what}" + return + end + + related = wml[related_index...defs_index] + defs = wml[defs_index...defs_end] + + m.reply defs.ircify_html(:a_href => Underline), :split_at => (Underline + ' ') + + end + def lucky(m, params) params.merge!(:lucky => true) google(m, params) |