obliviously.., duh!

~^▼^~

cal.py

#!/usr/bin/env python3

import requests
from datetime import date
from datetime import timedelta
from icalendar import Calendar

MY_URI = "https://api.somtoday.nl/rest/v1/icalendar/stream/XXX/XXX"
YOUR_URI = "https://api.somtoday.nl/rest/v1/icalendar/stream/YYY/YYY"

def fetch_schedule(url):
    response = requests.get(url)
    
    if response.status_code == 200:
        return response.text

    raise Exception(f"Failed to fetch schedule, got: {response.status_code}")

def time_range(schedule, date):
    calendar = Calendar.from_ical(schedule)   
    events = []
    
    for component in calendar.walk('vevent'):
        event = {
          "start": component.get('dtstart').dt,
          "end": component.get('dtend').dt
        }
        
        if event['start'].date() == date:
            events.append(event)
    
    if not events:
        # No events for this day
        return None, None
    else:    
        events = sorted(events, key=lambda e: e['start'])
        return events[0], events[-1]

my_schedule = fetch_schedule(MY_URI)
your_schedule = fetch_schedule(YOUR_URI)

now = date.today()

for i in range(0, 7):
  date = now + timedelta(days=i)
  my_first, my_last = time_range(my_schedule, date)
  your_first, your_last = time_range(your_schedule, date)

  if not my_first or not my_last or not your_first or not your_last:
      continue

  if my_first['start'].time() == your_first['start'].time():
      print(f'{date} {my_first['start'].time()}')

  if my_last['end'].time() == your_last['end'].time():
      print(f'{date} {my_last['end'].time()}')

Script that given two Somtoday iCalendar URLs, calculates which days in the following week have matching first and last hours.