diff options
author | David Gadling <dave@toasterwaffles.com> | 2009-03-30 11:43:24 -0700 |
---|---|---|
committer | Giuseppe Bilotta <giuseppe.bilotta@gmail.com> | 2009-05-20 14:40:53 +0200 |
commit | 5d0d86a26c08eccf2dc6934d380662a9912b49d5 (patch) | |
tree | a8b1c0c9370c4fde841d69c1665ca10202c67ac3 /data | |
parent | 11e245be3a7974edcf5b174af5a3af5a548f39f3 (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.rb | 28 |
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 |