def loadDate(client, date):
    """Load the page for a date and blocks until the html is ready"""
    url = 'https://otv.karlsruhe.de/terminmodul/live/termin/index'
    dateStr = date.strftime('%Y-%m-%d')
    req = QWebEngineHttpRequest.postRequest(QUrl(url), {
        'selectedDate': dateStr,
        'baseUrl': '/terminmodul/live'
    })
    client.myload(req)
if __name__ == '__main__':
    client = Client()

    # load service selection page
    url = 'https://otv.karlsruhe.de/terminmodul/live/index/index/dienststelle/38'
    client.myload(QUrl(url))
    # print(client.html)

    # choose application and load calendar page
    calendarUrl = 'https://otv.karlsruhe.de/terminmodul/live/dienstleistung/save'
    req = QWebEngineHttpRequest.postRequest(
        QUrl(calendarUrl), {
            'dienstleistungsid[]': '460',
            'personenzahl[460]': '1',
            'personenzahl[458]': '1',
            'bemerkung': '',
            'anmeldung_action': '1',
            'lang': 'de',
            'weiter': 'Weiter: Terminauswahl'
        })

    client.myload(req)

    # get all possible days (excluding weekends and holidays) within 90 days
    startDate = getSelectedDate(client.html)
    holidays = set(
        getHolidays(startDate) +
        getHolidays(startDate + datetime.timedelta(days=60)))
    possibleDates = []
    for dayDelta in range(90):
        date = startDate + datetime.timedelta(days=dayDelta)