#include String textBeginString = "@"; String textEndString = "@"; String lehrTextBeginString = "@@"; String sourceBeginString = "@"; String sourceEndString = "@"; String url = "https://www.losungen.de/fileadmin/media-losungen/kalender/kalender_daten.php"; String getHTML(String url, String post_params) { String result = ""; if(WiFi.status() == WL_CONNECTED) { HTTPClient http; http.begin(url); // initialize the http instance http.addHeader("Content-Type", "application/x-www-form-urlencoded"); // add the header; needed for the POST request Serial.printf("[HTTP] POST %s | DATA: %s\n", url.c_str(), post_params.c_str()); int httpCode = http.POST(post_params); // get the page; httpCode will be negative on error if(httpCode > 0) { // HTTP header has been send and Server response header has been handled Serial.printf("[HTTP] POST %d: %s\n", httpCode, url.c_str()); // file found at server if(httpCode == HTTP_CODE_OK) { result = http.getString(); } } else { Serial.printf("[HTTP] POST: %s\n", http.errorToString(httpCode).c_str()); } http.end(); } return result; } String getHTML() { // gets the date and year from time.h library struct tm timeinfo; char dayInMonth[3]; char month[3]; char year[5]; if(!getLocalTime(&timeinfo)){ Serial.println("Failed to obtain time"); return ""; } strftime(dayInMonth,3, "%d", &timeinfo); sprintf(month,"%d",timeinfo.tm_mon); // the month number has to be in range 0-11! strftime(year,5, "%Y", &timeinfo); String post_params = "jahr=" + String(year) + "&monat=" + String(month) + "&tag=" + String(dayInMonth); // create post parameters of the form "jahr=2023&monat=2&tag=2" return getHTML(url, post_params); } String getLosungFromHTML(String html) { int losungBeginIndex = html.indexOf(textBeginString)+textBeginString.length(); int losungEndIndex = html.indexOf(textEndString,losungBeginIndex); return html.substring(losungBeginIndex, losungEndIndex); } String getLosungSourceFromHTML(String html) { // get the source of losung in given html String losung = getLosungFromHTML(html); int losungIndex = html.indexOf(losung); int losungSourceBeginIndex = html.indexOf(sourceBeginString, losungIndex)+sourceBeginString.length(); int losungSourceEndIndex = html.indexOf(sourceEndString, losungIndex+losung.length()+sourceBeginString.length()); return html.substring(losungSourceBeginIndex, losungSourceEndIndex); } String getLehrtextFromHTML(String html) { int lehrtextBeginIndex = html.indexOf(lehrTextBeginString)+lehrTextBeginString.length(); int lehrtextEndIndex = html.indexOf(textEndString, lehrtextBeginIndex); // calculating is needed for better performance and to get the next index, not the current/previous return html.substring(lehrtextBeginIndex, lehrtextEndIndex); } String getLehrtextSourceFromHTML(String html) { // get the source of losung in given html String lehrtext = getLehrtextFromHTML(html); int lehrtextIndex = html.indexOf(lehrtext); int lehrtextSourceBeginIndex = html.indexOf(sourceBeginString, lehrtextIndex)+sourceBeginString.length(); int lehrtextSourceEndIndex = html.indexOf(sourceEndString, lehrtextSourceBeginIndex); // calculating is needed for better performance and to get the next index, not the current/previous return html.substring(lehrtextSourceBeginIndex, lehrtextSourceEndIndex); }