scrapers/dhmd-veranstaltungen/scrape.rb

49 lines
960 B
Ruby
Raw Normal View History

2021-09-08 21:10:08 +02:00
#!/usr/bin/env ruby
# coding: utf-8
require 'open-uri'
require 'nokogiri'
require 'erb'
class Event
attr_accessor :data, :url
def initialize data, url
@data = data
@url = url
end
end
2021-09-08 21:10:08 +02:00
events = []
url = "https://www.dhmd.de/veranstaltungen/kalender/1/"
doc = Nokogiri::HTML URI.open(url)
doc.css("a.more").each do |details_link|
event_url = URI.join url, details_link.attr('href')
details = Nokogiri::HTML URI.open(event_url)
2021-09-08 21:10:08 +02:00
details.css("a.icon-termin").each do |icon|
ical = URI.open(icon.attr('href')).read()
ical.scan(/BEGIN:VEVENT\r\n(.+?)\nEND:VEVENT/m).each do |ev,|
ev = Event::new ev, event_url
2021-09-08 21:10:08 +02:00
events << ev
end
end
end
ical = ERB::new <<~EOF
BEGIN:VCALENDAR
VERSION:2.0
METHOD:PUBLISH
X-WR-TIMEZONE;VALUE=TEXT:Europe/Berlin
<% events.each do |ev| %>
BEGIN:VEVENT
<%= ev.data %>
URL:<%= ev.url %>
LOCATION:Hygienemuseum
2021-09-08 21:10:08 +02:00
END:VEVENT
<% end %>
END:VCALENDAR
EOF
puts ical.result