-
Notifications
You must be signed in to change notification settings - Fork 0
/
lib.hpi
107 lines (84 loc) · 3.66 KB
/
lib.hpi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
// WIRD UEBER DIE GNU KATZE INKLUDIERT
//
// Datentypen.
//
datentyp Speise auf Objekt {
Zeichenkette Titel /
Zeichenkette Beschreibung /
Fließkommazahl Preis /
Fließkommazahl Protein /
Zeichenkette ZeitSlot /
};
//
// Konstanten.
//
setze Zahl MENSA_FILMUNI auf 9603;
setze Zahl MENSA_GRIEBNITZSEE auf 9601;
setze Zeichenkette MENSA_URL_GENERISCH auf "https://swp.webspeiseplan.de/index.php?token=55ed21609e26bbf68ba2b19390bf7961&model=menu&location=%d&languagetype=2&_=1699354619713";
//
// Funktionen.
//
funk Lade_Speiseangebot(Zahl Mensa_Ort / Zahl Tages_Verschiebung) ergibt Liste von Speise {
setze Zeichenkette Körper auf "";
setze Zahl Antwort_Zahl auf Http(
"GET" /
Formatiere(MENSA_URL_GENERISCH / Mensa_Ort) /
"" /
[
erstelle {
Zeichenkette Schlüssel auf "Referer" /
Zeichenkette Wert auf "https://swp.webspeiseplan.de/menu" /
}
] /
&Körper /
);
falls Antwort_Zahl != 200 {
Aufgeben(1);
}
setze Speicherbox Res auf Zergliedere_JSON(Körper) als Speicherbox;
setze Liste von Speicherbox ContentRes auf Res.Nehmen("content") als Liste von Speicherbox;
setze Zahl Zähler auf 0;
setze Liste von Speise Resultat auf [];
solange Zähler < ContentRes.Länge() {
setze Speicherbox ResTemp auf ContentRes[Zähler];
setze Liste von Speicherbox Gerichte auf ResTemp.Nehmen("speiseplanGerichtData") als Liste von Speicherbox;
setze Speicherbox SpeiseplanAdvanced auf ResTemp.Nehmen("speiseplanAdvanced") als Speicherbox;
setze Zeichenkette ZeitSlot auf SpeiseplanAdvanced.Nehmen("titel") als Zeichenkette;
setze Zahl Gerichtzähler auf 0;
solange (Gerichtzähler < Gerichte.Länge()) {
setze Speicherbox Gericht auf Gerichte[Gerichtzähler];
Gerichtzähler += 1;
setze Speicherbox ZusatzInfos auf Gericht.Nehmen("zusatzinformationen") als Speicherbox;
// DIES STIRBT MANCHMAL.
setze Fließkommazahl Preis auf ZusatzInfos.Nehmen("mitarbeiterpreisDecimal2") als Fließkommazahl;
setze Speicherbox GerichtInfos auf Gericht.Nehmen("speiseplanAdvancedGericht") als Speicherbox;
setze Zeichenkette GerichtDatumRoh auf GerichtInfos.Nehmen("datum") als Zeichenkette;
setze Zeichenkette GerichtDatum auf GerichtDatumRoh.Zertrenne("T")[0];
setze Zahl Verwendeter_Tag auf Zeit().Kalendar_Tag + Tages_Verschiebung;
setze Zeichenkette HeuteDatum auf Formatiere("%d-%2d-%2d" / Zeit().Jahr / Zeit().Monat / Verwendeter_Tag);
Drucke(HeuteDatum);
setze Zeichenkette Gerichtname auf GerichtInfos
.Nehmen("gerichtname") als Zeichenkette;
falls
(GerichtDatum != HeuteDatum)
|| Gerichtname.Startet_Mit("Salatbuffet")
|| Gerichtname.Enthält("Relevo")
|| Gerichtname.Enthält("Wochenende!")
|| Gerichtname.Enthält("Preise pro 100 g")
|| Gerichtname.Enthält("Preis pro 100 g")
|| Gerichtname.Enthält("Preis pro 100g") { // WARUM??? Es gibt einfach beide!
weitermachen;
}
Resultat.Hinzufügen(erstelle {
Zeichenkette ZeitSlot auf ZeitSlot /
Zeichenkette Titel auf Formatiere("Angebot %d" / Resultat.Länge() + 1) /
Zeichenkette Beschreibung auf Gerichtname /
Fließkommazahl Preis auf Preis /
Zeichenkette ZeitSlot auf ZeitSlot /
});
}
Zähler += 1;
}
Resultat
}
// ENDE IMPORTIERE