All pastes #977518 Raw Edit

Stuff

public text v1 · immutable
·published 2008-04-08 21:49 UTC
rendered paste body
#!/usr/bin/env ruby
require 'IRC'
require 'uri'
require 'net/http'
require 'rexml/document'
#require 'IRCSSLConnection'

url = 'http://www3.de.indymedia.org/RSS/openposting.xml'
fetching_pause = 120
messaging_pause = 5
#host = '209.51.169.94' # che
#host = '209.44.112.163' # guerin
#port = '6697'
#port = '6667'
host = 'localhost'
port = '691'
realname = 'openposting bot'
channel = '#test'

bot = IRC.new('openposting_', host, port, realname)
IRCEvent.add_callback('endofmotd') { |event| bot.add_channel(channel) }

botthread = Thread.new(bot) { |bot| bot.connect }

fetched = []
iteration = 0

while true do
  sleep fetching_pause
  xml = REXML::Document.new(Net::HTTP.get_response(URI.parse(url)).body)
  puts fetched.inspect
  xml.elements.each('//item') do |element|
    unless fetched.include?(element.elements['link'].text)
      fetched.push(element.elements['link'].text)
      next if iteration == 0
      bot.send_message(
        channel,
        element.elements['title'].text + ' | ' +
          element.elements['link'].text + ' | ' +
          element.elements['description'].text.gsub(/<.*?>/, ' ').gsub(/ {2,}/, ' ').strip
      )
      sleep messaging_pause
    end
  end
  iteration += 1
end