diff --git a/src/main/kotlin/org/mosad/thecitadelofricks/controller/StartupController.kt b/src/main/kotlin/org/mosad/thecitadelofricks/controller/StartupController.kt
index d8cfac8..31e1bad 100644
--- a/src/main/kotlin/org/mosad/thecitadelofricks/controller/StartupController.kt
+++ b/src/main/kotlin/org/mosad/thecitadelofricks/controller/StartupController.kt
@@ -44,7 +44,7 @@ class StartupController {
var cachetAPIKey = "0"
var cachetBaseURL = "https://status.mosad.xyz"
var courseListURL = "https://www.hs-offenburg.de/studium/vorlesungsplaene/"
- var mensaMenuURL = "https://www.swfr.de/essen-trinken/speiseplaene/mensa-offenburg/"
+ var mensaMenuURL = "https://www.swfr.de/essen/mensen-cafes-speiseplaene/mensa-offenburg"
var mensaName = "Offenburg"
}
diff --git a/src/main/kotlin/org/mosad/thecitadelofricks/hsoparser/MensaParser.kt b/src/main/kotlin/org/mosad/thecitadelofricks/hsoparser/MensaParser.kt
index 3125994..40d0478 100644
--- a/src/main/kotlin/org/mosad/thecitadelofricks/hsoparser/MensaParser.kt
+++ b/src/main/kotlin/org/mosad/thecitadelofricks/hsoparser/MensaParser.kt
@@ -59,19 +59,24 @@ class MensaParser {
val mealWeekList = MensaWeek()
try {
- htmlDoc.select("#speiseplan-tabs").select("div.tab-content").select("div.menu-tagesplan")
+ htmlDoc.select("#tabsWeekdaysMenu").select("div.menu-tagesplan")
.forEachIndexed { dayIndex, day ->
+ val meals = mealWeekList.days[dayIndex].meals
val strDay = day.select("h3").text()
- day.select("div.row").forEachIndexed { _, meal ->
- val heading = meal.select("h4.menu-header").text()
- val parts = ArrayList(meal.select("div.menu-info").html().substringBefore("
"))
- val additives = meal.select("span.show-with-allergenes").text()
+ day.select("div.menu-tagesplan > div.grid").first()?.select("div.flex-col")?.forEachIndexed { _, meal ->
+ val heading = meal.select("h5").text()
+ val parts = ArrayList(meal.select("small.extra-text").html().split("
").map { it.trim() })
+ val additives = meal.select("small.zusatzsstoffe[x-show=showAllergenes]").text()
parts.removeIf { x -> x.isEmpty() || x.isBlank() }
- mealWeekList.days[dayIndex].meals.add(Meal(strDay, heading, parts, additives))
+ meals.add(Meal(strDay, heading, parts, additives))
}
+ if (meals.isEmpty()) {
+ // Add an empty Meal entry to preserve the day information
+ meals.add(Meal(strDay, "", ArrayList(), ""))
+ }
}
} catch (pex: Exception) {
logger.error("error while parsing the html file", pex)
@@ -87,8 +92,7 @@ class MensaParser {
*/
fun getMenuLinkNextWeek(mensaMenuURL: String): String {
val menuHTML = Jsoup.connect(mensaMenuURL).get()
-
- return "https://www.swfr.de" + menuHTML.select("#speiseplan-tabs").select("a.next-week").attr("href")
+ return "https://www.swfr.de" + menuHTML.select("div.section-mensa").select("a.next-week").attr("href")
}
}
\ No newline at end of file
diff --git a/src/test/kotlin/org/mosad/thecitadelofricks/hsoparser/MensaParserTest.kt b/src/test/kotlin/org/mosad/thecitadelofricks/hsoparser/MensaParserTest.kt
index 02fed83..819ea8c 100644
--- a/src/test/kotlin/org/mosad/thecitadelofricks/hsoparser/MensaParserTest.kt
+++ b/src/test/kotlin/org/mosad/thecitadelofricks/hsoparser/MensaParserTest.kt
@@ -28,7 +28,7 @@ import org.junit.jupiter.api.Test
import java.io.File
internal class MensaParserTest {
- private val mensaMenuURL = "https://www.swfr.de/essen-trinken/speiseplaene/mensa-offenburg/"
+ private val mensaMenuURL = "https://www.swfr.de/essen/mensen-cafes-speiseplaene/mensa-offenburg"
@Test
fun parseMensaMenuNormalWeek() {
diff --git a/src/test/resources/expected/Mensa_empty-week.txt b/src/test/resources/expected/Mensa_empty-week.txt
index 1f734ca..113a8e7 100644
--- a/src/test/resources/expected/Mensa_empty-week.txt
+++ b/src/test/resources/expected/Mensa_empty-week.txt
@@ -1 +1 @@
-MensaWeek(days=[Meals(meals=[Meal(day=Montag 12.08., heading=, parts=[], additives=)]), Meals(meals=[Meal(day=Dienstag 13.08., heading=, parts=[], additives=)]), Meals(meals=[Meal(day=Mittwoch 14.08., heading=, parts=[], additives=)]), Meals(meals=[Meal(day=Donnerstag 15.08., heading=, parts=[], additives=)]), Meals(meals=[Meal(day=Freitag 16.08., heading=, parts=[], additives=)]), Meals(meals=[Meal(day=Samstag 17.08., heading=, parts=[], additives=)]), Meals(meals=[])])
\ No newline at end of file
+MensaWeek(days=[Meals(meals=[Meal(day=Montag 26.12., heading=, parts=[], additives=)]), Meals(meals=[Meal(day=Dienstag 27.12., heading=, parts=[], additives=)]), Meals(meals=[Meal(day=Mittwoch 28.12., heading=, parts=[], additives=)]), Meals(meals=[Meal(day=Donnerstag 29.12., heading=, parts=[], additives=)]), Meals(meals=[Meal(day=Freitag 30.12., heading=, parts=[], additives=)]), Meals(meals=[Meal(day=Samstag 31.12., heading=, parts=[], additives=)]), Meals(meals=[])])
\ No newline at end of file
diff --git a/src/test/resources/expected/Mensa_normal-week.txt b/src/test/resources/expected/Mensa_normal-week.txt
index 945337d..b6f457e 100644
--- a/src/test/resources/expected/Mensa_normal-week.txt
+++ b/src/test/resources/expected/Mensa_normal-week.txt
@@ -1 +1 @@
-MensaWeek(days=[Meals(meals=[Meal(day=Montag 09.03., heading=Essen 1, parts=[Kartoffel-Frischkäsebratling , Gemüseragout Toskana , Beilagensalat ], additives=enthält Allergene: Se,Gl,GlW,ML), Meal(day=Montag 09.03., heading=Essen 2, parts=[Schweineschnitzel Wiener Art , Bratensauce , Pommes frites , Mixsalat ], additives=Kennzeichnungen/Zusatzstoffe: sch enthält Allergene: Gl,GlW,GlG), Meal(day=Montag 09.03., heading=Buffet, parts=[Grill und Salatbar , Asiatisches aus dem Wok , Fleisch- und Fischspezialitäten , Pasta-, Reis und Kartoffelvariationen , Gemüse ], additives=)]), Meals(meals=[Meal(day=Dienstag 10.03., heading=Essen 1, parts=[Tortellini mit Gemüsefüllung , Tomatensauce , Geriebener Hartkäse , Beilagensalat ], additives=Kennzeichnungen/Zusatzstoffe: 6 enthält Allergene: Ei,Se,Gl,GlW,ML), Meal(day=Dienstag 10.03., heading=Essen 2, parts=[Frikadelle , Champignon-Rahmsauce , Bauernspätzle , Blattsalat ], additives=Kennzeichnungen/Zusatzstoffe: sch,ri enthält Allergene: Ei,Gl,GlW,GlG,ML), Meal(day=Dienstag 10.03., heading=Buffet, parts=[Grill und Salatbar , Asiatisches aus dem Wok , Fleisch- und Fischspezialitäten , Pasta-, Reis und Kartoffelvariationen , Gemüse ], additives=)]), Meals(meals=[Meal(day=Mittwoch 11.03., heading=Essen 1, parts=[Gebratener Gemüsereis Nasi Goreng , Raita , Mixsalat ], additives=Kennzeichnungen/Zusatzstoffe: 5 enthält Allergene: So,Sn,Se,Gl,GlW,ML), Meal(day=Mittwoch 11.03., heading=Essen 2, parts=[Kalbsbratwurst , Bratensauce , Kartoffelbrei , Apfelrotkraut ], additives=Kennzeichnungen/Zusatzstoffe: sch,5,6,8,ri enthält Allergene: Sn,Se,Sf,Gl,GlW,GlG,ML), Meal(day=Mittwoch 11.03., heading=Buffet, parts=[Grill und Salatbar , Asiatisches aus dem Wok , Fleisch- und Fischspezialitäten , Pasta-, Reis und Kartoffelvariationen , Gemüse ], additives=)]), Meals(meals=[Meal(day=Donnerstag 12.03., heading=Essen 1, parts=[Spaghetti , Chinagemüse , Sauce süß-sauer , Geriebener Hartkäse , Mixsalat ], additives=Kennzeichnungen/Zusatzstoffe: 5,6 enthält Allergene: Ei,Sn,Se,Sf,Gl,GlW,GlG,ML), Meal(day=Donnerstag 12.03., heading=Essen 2, parts=[Paniertes Seelachsfilet , Sesam-Mayonnaise , Salzkartoffeln , Karottenmix mit Brokkoli und Bohnen ], additives=Kennzeichnungen/Zusatzstoffe: nF enthält Allergene: Ei,Sn,Fi,Sa,Gl,GlW), Meal(day=Donnerstag 12.03., heading=Buffet, parts=[Grill und Salatbar , Asiatisches aus dem Wok , Fleisch- und Fischspezialitäten , Pasta-, Reis und Kartoffelvariationen , Gemüse ], additives=)]), Meals(meals=[Meal(day=Freitag 13.03., heading=Essen 1, parts=[Kartoffel-Gorgonzolagratin , Brokkoligemüse , Beilagensalat ], additives=enthält Allergene: ML), Meal(day=Freitag 13.03., heading=Essen 2, parts=[Hähnchenbrustfilet , Apfel-Rahmsauce , Mandelreis , Karottengemüse ], additives=Kennzeichnungen/Zusatzstoffe: 5 enthält Allergene: Gl,GlW,GlG,Nu,NM,ML), Meal(day=Freitag 13.03., heading=Buffet, parts=[Grill und Salatbar , Asiatisches aus dem Wok , Fleisch- und Fischspezialitäten , Pasta-, Reis und Kartoffelvariationen , Gemüse ], additives=)]), Meals(meals=[Meal(day=Samstag 14.03., heading=, parts=[], additives=)]), Meals(meals=[])])
\ No newline at end of file
+MensaWeek(days=[Meals(meals=[Meal(day=Montag 19.12., heading=Essen 1, parts=[auf Wunsch vegan, Gemüselasagne oder, Cannelloni mit Gemüse und Käsekruste, Tomatensauce, Beilagensalat oder Regio-Apfel], additives=Kennzeichnungen/Zusatzstoffe: 5 enthält Allergene: ML,GlW,Gl,Ei,Se), Meal(day=Montag 19.12., heading=Essen 2, parts=[Grönsaksbullar -Gemüsebällchen oder, Köttbullar, Pfeffer-Rahmsauce, Blumenkohl-Kartoffelpüree, Beilagensalat oder Regio-Apfel], additives=Kennzeichnungen/Zusatzstoffe: 5,sch,ri,4 enthält Allergene: ML,GlW,Gl,Ei)]), Meals(meals=[Meal(day=Dienstag 20.12., heading=Essen 1, parts=[Brokkoli-Nussecken, Rotweinsauce, Kartoffel-Kürbispüree, Apfelrotkraut, Feldsalat], additives=Kennzeichnungen/Zusatzstoffe: 5 enthält Allergene: GlW,GlH,ML,NM,Gl,Sf,Se,Nu,NH), Meal(day=Dienstag 20.12., heading=Essen 2, parts=[Weihnachtsessen, Hirschgulasch, Rotweinsauce, Bauernspätzle, Apfelrotkraut, Feldsalat], additives=Kennzeichnungen/Zusatzstoffe: 5 enthält Allergene: Ei,Gl,GlW,ML,Sf)]), Meals(meals=[Meal(day=Mittwoch 21.12., heading=Essen 1, parts=[Gemüsenuggets, Mojo Dip, Gitterkartoffeln, Beilagensalat oder Regio-Apfel], additives=Kennzeichnungen/Zusatzstoffe: 5 enthält Allergene: GlW,GlG,Gl,ML), Meal(day=Mittwoch 21.12., heading=Essen 2, parts=[Gebratener Gemüsereis Nasi Goreng, Bio Tofu-Erdnusswürfel, Beilagensalat oder Regio-Apfel], additives=Kennzeichnungen/Zusatzstoffe: o enthält Allergene: Gl,GlW,Se,Sf,So,Sn)]), Meals(meals=[Meal(day=Donnerstag 22.12., heading=Essen 1, parts=[Schupfnudel-Gemüsepfanne, Weiße Sauce, Beilagensalat oder Regio-Apfel], additives=enthält Allergene: Gl,GlW,Se,So), Meal(day=Donnerstag 22.12., heading=Essen 2, parts=[Fischragout, Bandnudeln, Buntes Marktgemüse], additives=Kennzeichnungen/Zusatzstoffe: nF enthält Allergene: Se,ML,GlW,Gl,Ei,Fi)]), Meals(meals=[Meal(day=Freitag 23.12., heading=, parts=[], additives=)]), Meals(meals=[Meal(day=Samstag 24.12., heading=, parts=[], additives=)]), Meals(meals=[])])
\ No newline at end of file
diff --git a/src/test/resources/html/Mensa_empty-week.html b/src/test/resources/html/Mensa_empty-week.html
index c736dd7..e8bce88 100644
--- a/src/test/resources/html/Mensa_empty-week.html
+++ b/src/test/resources/html/Mensa_empty-week.html
@@ -1,134 +1,3339 @@
-
-