From eef1310cd88ba48be0dc11fb996d6b4056326c2e Mon Sep 17 00:00:00 2001 From: Astro Date: Thu, 12 Jan 2023 20:35:41 +0100 Subject: [PATCH] criticalmass: add --- criticalmass/scrape.rb | 37 +++++++++++++++++++++++++++++++++++++ default.nix | 1 + 2 files changed, 38 insertions(+) create mode 100644 criticalmass/scrape.rb diff --git a/criticalmass/scrape.rb b/criticalmass/scrape.rb new file mode 100644 index 0000000..f482403 --- /dev/null +++ b/criticalmass/scrape.rb @@ -0,0 +1,37 @@ +#!/usr/bin/env ruby + +require 'open-uri' +require 'json' +require 'erb' + +def scrape(year) + JSON.parse URI.open("https://criticalmass.in/api/ride?citySlug=dresden&year=#{year}") + .read() +end + +def fmt_time(stamp) + Time.at(stamp) + .strftime "%Y%m%dT%H%M%S" +end + +events = (scrape(Time.now.year) + scrape(Time.now.year + 1)) + +ical = ERB::new <<~EOF + BEGIN:VCALENDAR + VERSION:2.0 + METHOD:PUBLISH + X-WR-TIMEZONE;VALUE=TEXT:Europe/Berlin + <% events.each do |ev| %> + BEGIN:VEVENT + SUMMARY:<%= ev['title'] %> + DTSTART:<%= fmt_time ev['date_time'] %> + DTEND:<%= fmt_time ev['date_time'] + 3600 * (ev['estimated_duration'] or 2) %> + UID:<%= ev['id'] %>@ciritcalmass.in + URL:https://criticalmass.in/dresden + LOCATION:<%= ev['location'] %> + GEO:<%= ev['latitude'] %>;<%= ev['longitude'] %> + END:VEVENT + <% end %> + END:VCALENDAR +EOF +puts ical.result diff --git a/default.nix b/default.nix index 859a0df..60fe679 100644 --- a/default.nix +++ b/default.nix @@ -46,4 +46,5 @@ in { dresden-kulturstadt = wrapScript "dresden-kulturstadt" ./dresden-kulturstadt/scrape.rb; nabu = wrapScript "nabu" ./nabu/scrape.rb; museen-dresden = wrapScript "museen-dresden" ./museen-dresden/scrape.rb; + criticalmass = wrapScript "criticalmass" ./criticalmass/scrape.rb; }