From 6eac79f06f7fcd870d3f7e11c8c96c2888d1121e Mon Sep 17 00:00:00 2001 From: Astro Date: Wed, 8 Sep 2021 21:10:08 +0200 Subject: [PATCH] dhmt-veranstaltungen: init --- default.nix | 1 + dhmd-veranstaltungen/scrape.rb | 35 ++++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+) create mode 100644 dhmd-veranstaltungen/scrape.rb diff --git a/default.nix b/default.nix index 8dba3c0..4359857 100644 --- a/default.nix +++ b/default.nix @@ -32,4 +32,5 @@ in { impfee = wrapScript "impfee" ./impfee/scrape.rb; riesa-efau-kalender = wrapScript "riesa-efau-kalender" ./riesa-efau-kalender/scrape.rb; kreuzchor-termine = wrapScript "kreuzchor-termine" ./kreuzchor-termine/scrape.rb; + dhmd-veranstaltungen = wrapScript "dhmd-veranstaltungen" ./dhmd-veranstaltungen/scrape.rb; } diff --git a/dhmd-veranstaltungen/scrape.rb b/dhmd-veranstaltungen/scrape.rb new file mode 100644 index 0000000..a1dfe78 --- /dev/null +++ b/dhmd-veranstaltungen/scrape.rb @@ -0,0 +1,35 @@ +#!/usr/bin/env ruby +# coding: utf-8 + +require 'open-uri' +require 'nokogiri' +require 'erb' + +events = [] + +url = "https://www.dhmd.de/veranstaltungen/kalender/1/" +doc = Nokogiri::HTML URI.open(url) +doc.css("a.more").each do |details_link| + details = Nokogiri::HTML URI.open(URI.join url, details_link.attr('href')) + 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,| + 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 %> + END:VEVENT + <% end %> + END:VCALENDAR +EOF + +puts ical.result