# for most languages
GOOGLE_SEARCH = "http://www.google.com/search?oe=UTF-8&q="
-GOOGLE_WAP_SEARCH = "http://www.google.com/wml/search?hl=en&q="
+GOOGLE_WAP_SEARCH = "http://www.google.com/m/search?hl=en&q="
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',
"gcalc <equation> => use the google calculator to find the answer to <equation>"
when "gdef"
"gdef <term(s)> => use the google define mechanism to find a definition of <term(s)>"
+ when "gtime"
+ "gtime <location> => use the google clock to find the current time at <location>"
when "wp"
"wp [<code>] <string> => search for <string> on Wikipedia. You can select a national <code> to only search the national Wikipedia"
when "unpedia"
params[:firstpar] = @bot.config['wikipedia.first_par']
return google(m, params)
end
+
+ def gtime(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
plugin.map "gcount *words", :action => 'gcount', :threaded => true
plugin.map "gcalc *words", :action => 'gcalc', :threaded => true
plugin.map "gdef *words", :action => 'gdef', :threaded => true
+plugin.map "gtime *words", :action => 'gtime', :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