X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=data%2Frbot%2Fplugins%2Fsearch.rb;h=dc0c2ca9bb58419912ef91ac8bf6d327a232df7c;hb=9a66dcadede5cadc00b4fde344f75a9bd78220d7;hp=493db9367ad62f0c3969c57a3de23479d435ca2a;hpb=1c06426e4a8fbd9655322627a57a3fb8d6fff798;p=user%2Fhenk%2Fcode%2Fruby%2Frbot.git diff --git a/data/rbot/plugins/search.rb b/data/rbot/plugins/search.rb index 493db936..dc0c2ca9 100644 --- a/data/rbot/plugins/search.rb +++ b/data/rbot/plugins/search.rb @@ -18,20 +18,21 @@ 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_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+ 3, :desc => "Number of hits to return from Google searches") - BotConfig.register BotConfigIntegerValue.new('google.first_par', + Config.register Config::IntegerValue.new('google.first_par', :default => 0, :desc => "When set to n > 0, the bot will return the first paragraph from the first n search hits") - BotConfig.register BotConfigIntegerValue.new('wikipedia.hits', + Config.register Config::IntegerValue.new('wikipedia.hits', :default => 3, :desc => "Number of hits to return from Wikipedia searches") - BotConfig.register BotConfigIntegerValue.new('wikipedia.first_par', + Config.register Config::IntegerValue.new('wikipedia.first_par', :default => 1, :desc => "When set to n > 0, the bot will return the first paragraph from the first n wikipedia search hits") @@ -137,6 +138,36 @@ class SearchPlugin < Plugin debug "replying with: #{result.inspect}" m.reply "#{result}" end + + def gcount(m, params) + what = params[:words].to_s + searchfor = CGI.escape(what) + + debug "Getting gcount thing: #{searchfor.inspect}" + url = GOOGLE_SEARCH + searchfor + + begin + html = @bot.httputil.get(url) + rescue => e + m.reply "error googlecounting #{what}" + return + end + + debug "#{html.size} bytes of html recieved" + + results = html.scan(GOOGLE_COUNT_RESULT) + debug "results: #{results.inspect}" + + if results.length != 1 + m.reply "couldn't count #{what}" + return + end + + result = results[0][0].ircify_html + debug "replying with: #{result.inspect}" + m.reply "total results: #{result}" + + end def gdef(m, params) what = params[:words].to_s @@ -191,11 +222,12 @@ end plugin = SearchPlugin.new -plugin.map "search *words", :action => 'google' -plugin.map "google *words", :action => 'google' -plugin.map "gcalc *words", :action => 'gcalc' -plugin.map "gdef *words", :action => 'gdef' -plugin.map "wp :lang *words", :action => 'wikipedia', :requirements => { :lang => /^\w\w\w?$/ } -plugin.map "wp *words", :action => 'wikipedia' -plugin.map "unpedia *words", :action => 'unpedia' +plugin.map "search *words", :action => 'google', :threaded => true +plugin.map "google *words", :action => 'google', :threaded => true +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 "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

 (?:

)?(.+)(?:

)?
} +GOOGLE_CALC_RESULT = %r{ (?:

)?(.+)(?:

)?