X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=data%2Frbot%2Fplugins%2Fslashdot.rb;h=ef96a4b01241cf9830263e8b4e59d1f47943af4c;hb=386274dd8f83d4aac27e837f1dca11f0f9250ee8;hp=b09ac7a789706a477a88bfa19b3fce935295aed9;hpb=21949774b91eaec6ecde4eaa8ad121e2c0a36b87;p=user%2Fhenk%2Fcode%2Fruby%2Frbot.git diff --git a/data/rbot/plugins/slashdot.rb b/data/rbot/plugins/slashdot.rb index b09ac7a7..ef96a4b0 100644 --- a/data/rbot/plugins/slashdot.rb +++ b/data/rbot/plugins/slashdot.rb @@ -6,25 +6,13 @@ class SlashdotPlugin < Plugin def help(plugin, topic="") "slashdot search [=4] => search slashdot for , slashdot [=4] => return up to slashdot headlines (use negative max to return that many headlines, but all on one line.)" end - def privmsg(m) - if m.params && m.params =~ /^search\s+(.*)\s+(\d+)$/ - search = $1 - limit = $2.to_i - search_slashdot m, search, limit - elsif m.params && m.params =~ /^search\s+(.*)$/ - search = $1 - search_slashdot m, search - elsif m.params && m.params =~ /^([-\d]+)$/ - limit = $1.to_i - slashdot m, limit - else - slashdot m - end - end - def search_slashdot(m, search, max=4) + def search_slashdot(m, params) + max = params[:limit].to_i + search = params[:search].to_s + begin - xml = @bot.httputil.get(URI.parse("http://slashdot.org/search.pl?content_type=rss&query=#{URI.escape(search)}")) + xml = @bot.httputil.get_cached(URI.parse("http://slashdot.org/search.pl?content_type=rss&query=#{URI.escape(search)}")) rescue URI::InvalidURIError, URI::BadURIError => e m.reply "illegal search string #{search}" return @@ -33,10 +21,11 @@ class SlashdotPlugin < Plugin m.reply "search for #{search} failed" return end + debug xml.inspect begin doc = Document.new xml rescue REXML::ParseException => e - puts e + warning e.inspect m.reply "couldn't parse output XML: #{e.class}" return end @@ -44,6 +33,7 @@ class SlashdotPlugin < Plugin m.reply "search for #{search} failed" return end + debug doc.inspect max = 8 if max > 8 done = 0 doc.elements.each("*/item") {|e| @@ -54,10 +44,16 @@ class SlashdotPlugin < Plugin done += 1 break if done >= max } + unless done > 0 + m.reply "search for #{search} failed" + end end - def slashdot(m, max=4) - xml = @bot.httputil.get(URI.parse("http://slashdot.org/slashdot.xml")) + def slashdot(m, params) + debug params.inspect + max = params[:limit].to_i + debug "max is #{max}" + xml = @bot.httputil.get_cached(URI.parse("http://slashdot.org/slashdot.xml")) unless xml m.reply "slashdot news parse failed" return @@ -92,4 +88,7 @@ class SlashdotPlugin < Plugin end end plugin = SlashdotPlugin.new -plugin.register("slashdot") +plugin.map 'slashdot search :limit *search', :action => 'search_slashdot', + :defaults => {:limit => 4}, :requirements => {:limit => /^-?\d+$/} +plugin.map 'slashdot :limit', :defaults => {:limit => 4}, + :requirements => {:limit => /^-?\d+$/}