summaryrefslogtreecommitdiff
path: root/lib/rbot/plugins/slashdot.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rbot/plugins/slashdot.rb')
-rw-r--r--lib/rbot/plugins/slashdot.rb95
1 files changed, 0 insertions, 95 deletions
diff --git a/lib/rbot/plugins/slashdot.rb b/lib/rbot/plugins/slashdot.rb
deleted file mode 100644
index b09ac7a7..00000000
--- a/lib/rbot/plugins/slashdot.rb
+++ /dev/null
@@ -1,95 +0,0 @@
-require 'rexml/document'
-require 'uri/common'
-
-class SlashdotPlugin < Plugin
- include REXML
- def help(plugin, topic="")
- "slashdot search <string> [<max>=4] => search slashdot for <string>, slashdot [<max>=4] => return up to <max> 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)
- begin
- xml = @bot.httputil.get(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
- end
- unless xml
- m.reply "search for #{search} failed"
- return
- end
- begin
- doc = Document.new xml
- rescue REXML::ParseException => e
- puts e
- m.reply "couldn't parse output XML: #{e.class}"
- return
- end
- unless doc
- m.reply "search for #{search} failed"
- return
- end
- max = 8 if max > 8
- done = 0
- doc.elements.each("*/item") {|e|
- desc = e.elements["title"].text
- desc.gsub!(/(.{150}).*/, '\1..')
- reply = sprintf("%s | %s", e.elements["link"].text, desc)
- m.reply reply
- done += 1
- break if done >= max
- }
- end
-
- def slashdot(m, max=4)
- xml = @bot.httputil.get(URI.parse("http://slashdot.org/slashdot.xml"))
- unless xml
- m.reply "slashdot news parse failed"
- return
- end
- doc = Document.new xml
- unless doc
- m.reply "slashdot news parse failed (invalid xml)"
- return
- end
- done = 0
- oneline = false
- if max < 0
- max = (0 - max)
- oneline = true
- end
- max = 8 if max > 8
- matches = Array.new
- doc.elements.each("*/story") {|e|
- matches << [ e.elements["title"].text,
- e.elements["author"].text,
- e.elements["time"].text.gsub(/\d{4}-(\d{2})-(\d{2})/, "\\2/\\1").gsub(/:\d\d$/, "") ]
- done += 1
- break if done >= max
- }
- if oneline
- m.reply matches.collect{|mat| mat[0]}.join(" | ")
- else
- matches.each {|mat|
- m.reply sprintf("%36s | %8s | %8s", mat[0][0,36], mat[1][0,8], mat[2])
- }
- end
- end
-end
-plugin = SlashdotPlugin.new
-plugin.register("slashdot")