UppLYSningar i din kalender

Ruby är trevligt att jobba med. Tillsammans med RubyRSS och iCalendar-biblioteket har jag sett till att du nu kan du ta del av UppLYSningarna i iCalendar-formatet.

Jag kör skriptet nedan var 6:e timme. Det skriptet gör är att läsa av RSS-flödet för kommande UppLYSningar och generera upplysningar.ics.

Uppdatering 2009-10-06: Koden finns på GitHub.

require 'rss/1.0'
require 'rss/2.0'
require 'open-uri'
require 'rubygems'
require 'icalendar'
require 'date'

include Icalendar

icsfile = "/home/dentarg/www/vhosts/blog.dentarg.net/upplysningar.ics" 
source = "http://www.lysator.liu.se/upplysning/upplysning.rss.html" 
content = "" # raw content of rss feed will be loaded here
open(source) {|s| content = s.read }

rss = RSS::Parser.parse(content, false)
cal = Calendar.new

rss.items.each do |item|
  if item.title.match(/(\d+)\/(\d+): (.+)/)
    day = $1.to_i
    month = $2.to_i
    title = $3
  end

  event_start = DateTime.civil(Time.now.year, month, day, 18)
  event_end = DateTime.civil(Time.now.year, month, day, 20)

  cal.event do
    dtstart(event_start)
    dtend(event_end)
    summary(title)
    description(item.description)
    klass("PUBLIC")
    url(item.link)
  end
end

File.open(icsfile, "w").write(cal.to_ical)

Leave a Reply