summaryrefslogtreecommitdiff
path: root/data
diff options
context:
space:
mode:
authorDavid Gadling <dave@toasterwaffles.com>2009-03-30 11:43:24 -0700
committerGiuseppe Bilotta <giuseppe.bilotta@gmail.com>2009-05-20 14:40:53 +0200
commit5d0d86a26c08eccf2dc6934d380662a9912b49d5 (patch)
treea8b1c0c9370c4fde841d69c1665ca10202c67ac3 /data
parent11e245be3a7974edcf5b174af5a3af5a548f39f3 (diff)
search: Added a time command that gets the time from Google. !time london
Diffstat (limited to 'data')
-rw-r--r--data/rbot/plugins/search.rb28
1 files changed, 28 insertions, 0 deletions
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 accesskey="(\d)" href=".*?u=(.*?)">(.*?)<\/a>/im
GOOGLE_CALC_RESULT = %r{<img src=/images/calc_img\.gif(?: width=40 height=30 alt="")?>.*?<h2 class=r[^>]*><b>(.+?)</b>}
GOOGLE_COUNT_RESULT = %r{<font size=-1>Results <b>1<\/b> - <b>10<\/b> of about <b>(.*)<\/b> for}
GOOGLE_DEF_RESULT = %r{<p> (Web definitions for .*?)<br/>(.*?)<br/>(.*?)\s-\s+<a href}
+GOOGLE_TIME_RESULT = %r{alt="Clock"></td><td valign=[^>]+>(.+?)<(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