From 5d0d86a26c08eccf2dc6934d380662a9912b49d5 Mon Sep 17 00:00:00 2001 From: David Gadling Date: Mon, 30 Mar 2009 11:43:24 -0700 Subject: search: Added a time command that gets the time from Google. !time london --- data/rbot/plugins/search.rb | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'data') diff --git a/data/rbot/plugins/search.rb b/data/rbot/plugins/search.rb index a485b0df..716fcaaf 100644 --- a/data/rbot/plugins/search.rb +++ b/data/rbot/plugins/search.rb @@ -21,6 +21,7 @@ GOOGLE_WAP_LINK = /(.*?)<\/a>/im GOOGLE_CALC_RESULT = %r{.*?

]*>(.+?)} GOOGLE_COUNT_RESULT = %r{Results 1<\/b> - 10<\/b> of about (.*)<\/b> for} GOOGLE_DEF_RESULT = %r{

(Web definitions for .*?)
(.*?)
(.*?)\s-\s+
]+>(.+?)<(br|/td)>} class SearchPlugin < Plugin Config.register Config::IntegerValue.new('google.hits', @@ -228,6 +229,32 @@ class SearchPlugin < Plugin params[:firstpar] = @bot.config['wikipedia.first_par'] return google(m, params) end + + def time(m, params) + where = params[:words].to_s + where.sub!(/^\s*in\s*/, '') + searchfor = CGI.escape("time in " + where) + url = GOOGLE_SEARCH + searchfor + + begin + html = @bot.httputil.get(url) + rescue => e + m.reply "Error googletiming #{where}" + return + end + + debug html + results = html.scan(GOOGLE_TIME_RESULT) + debug "results: #{results.inspect}" + + if results.length != 1 + m.reply "Couldn't find the time for #{where} on Google" + return + end + + time = results[0][0].ircify_html + m.reply "#{time}" + end end plugin = SearchPlugin.new @@ -241,4 +268,5 @@ plugin.map "gdef *words", :action => 'gdef', :threaded => true plugin.map "wp :lang *words", :action => 'wikipedia', :requirements => { :lang => /^\w\w\w?$/ }, :threaded => true plugin.map "wp *words", :action => 'wikipedia', :threaded => true plugin.map "unpedia *words", :action => 'unpedia', :threaded => true +plugin.map "time *words", :action => 'time', :threaded => true -- cgit v1.2.3