BREAKING: změnit alergeny na třídu, opravit propisování
This commit is contained in:
parent
58db9adf6e
commit
7ea3df0b2b
6 changed files with 40 additions and 10 deletions
|
@ -1,3 +1,7 @@
|
|||
## 2.0.0
|
||||
- Alergeny jsou nyní ve tříde `Alergen`
|
||||
- Opravena chyba, kdy se HTML alergenů propisovalo do názvu jídla
|
||||
|
||||
## 1.1.4
|
||||
- Opravit info o stavu na burze
|
||||
## 1.1.3
|
||||
|
|
|
@ -11,8 +11,8 @@ Kantýny, které v adrese obsahují i číslo portu, dokážou být často probl
|
|||
|
||||
| Provozovatel | Verze iCanteen | Funkční | Verze knihovny | Adresa |
|
||||
|:--------------:|------------------|---------|----------------|---------|
|
||||
| SŠTE Brno | iCanteen 2.18.19 | ✅ | 1.0.1 | https://stravovani.sstebrno.cz
|
||||
| SPŠ Třebíč | iCanteen 2.10.25 | ❓ | 0.1.0-alpha | https://icanteen.spst.cz
|
||||
| SPŠEI Ostrava | iCanteen 2.17.03 | ❓ [zde](https://git.mnau.xyz/hernik/canteenlib/issues/2) | 1.0.1 | https://obedy.spseiostrava.cz:8443/
|
||||
| SŠTE Brno | iCanteen 2.19.13 | ✅ | 2.0.0 | https://stravovani.sstebrno.cz
|
||||
| SPŠ Třebíč | iCanteen 2.10.25 | ❌ | 0.1.0-alpha | https://icanteen.spst.cz
|
||||
| SPŠEI Ostrava | iCanteen 2.17.03 | ❌ [zde](https://git.mnau.xyz/hernik/canteenlib/issues/2) | 1.0.1 | https://obedy.spseiostrava.cz:8443/
|
||||
|
||||
Pokud chcete přispět s testem, otestujte tuto knihovnu na instanci iCanteen, kde, nejlépe legálně, máte přístup, a nahlašte své poznatky [zde](https://git.mnau.xyz/hernik/canteenlib/issues/new?template=.github%2fISSUE_TEMPLATE%2fhl--en--kompatibility.md)
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
## INFO
|
||||
__Knihovna již není aktivně vyvíjena a jsou vydávány pouze rychlé opravy, když je potřebuji. Pokud někdo chcete moji hroznou práci přebrat nebo chcete zde mít odkaz na vaši vlastní implementaci, dejte mi vědět.__
|
||||
|
||||
## O knihovně
|
||||
Experimentální **neoficiální** webscrape knihovna pro komunikaci se systémem [iCanteen](https://www.z-ware.cz/internetove-objednavky). **Knihovna je aktuálně nestabilní! Používejte na vlastní riziko!**
|
||||
|
||||
|
|
|
@ -306,10 +306,21 @@ class Canteen {
|
|||
.replaceAll(' ,', ",")
|
||||
.replaceAll(" <br>", "")
|
||||
.replaceAll("\n", "");
|
||||
var alergeny =
|
||||
RegExp(r"""<span title=".+?" class="textGrey">(.+?)<\/span>""")
|
||||
var alergenyList =
|
||||
RegExp(r"""<span(?: |\n).+?title="(.+?)".+?>(\d{1,2})""")
|
||||
.allMatches(jidlaProDen)
|
||||
.toList();
|
||||
|
||||
var alergeny = alergenyList.map<Alergen>((e) {
|
||||
var jmeno = RegExp(r'<b>(.+?)<\/b>')
|
||||
.firstMatch(e.group(1).toString())!
|
||||
.group(1);
|
||||
var popis =
|
||||
RegExp(r'<\/b> - (.+)').firstMatch(e.group(1).toString())?.group(1);
|
||||
var kod = int.parse(e.group(2).toString());
|
||||
return Alergen(nazev: jmeno!, kod: kod, popis: popis);
|
||||
}).toList();
|
||||
|
||||
var vydejna = RegExp(
|
||||
r'(?<=<span class="smallBoldTitle button-link-align">).+?(?=<)')
|
||||
.firstMatch(o)!
|
||||
|
@ -333,10 +344,13 @@ class Canteen {
|
|||
burzaUrl = match.group(0)!.replaceAll("amp;", "");
|
||||
}
|
||||
}
|
||||
|
||||
var jidloJmeno = RegExp(r'(.+?)(?=<sub>)')
|
||||
.firstMatch(jidlaProDen)!
|
||||
.group(1)
|
||||
.toString();
|
||||
jidla.add(
|
||||
Jidlo(
|
||||
nazev: jidlaProDen.replaceAll(
|
||||
nazev: jidloJmeno.replaceAll(
|
||||
r' (?=[^a-zA-ZěščřžýáíéĚŠČŘŽÝÁÍÉŤŇťň])', ''),
|
||||
objednano: objednano,
|
||||
varianta: vydejna,
|
||||
|
@ -347,7 +361,7 @@ class Canteen {
|
|||
burzaUrl: burzaUrl,
|
||||
naBurze:
|
||||
(burzaUrl == null) ? false : burzaUrl.contains("minusburza"),
|
||||
alergeny: [...alergeny.map((e) => e.group(1).toString())]),
|
||||
alergeny: alergeny),
|
||||
);
|
||||
// KONEC formátování do třídy
|
||||
}
|
||||
|
|
|
@ -24,7 +24,7 @@ class Jidlo {
|
|||
/// Seznam alergenů
|
||||
///
|
||||
/// Pokud se žádný nepodařilo najít, vrací prázdný seznam
|
||||
List<String> alergeny;
|
||||
List<Alergen> alergeny;
|
||||
|
||||
/// URL pro požadavek na objednání jídla
|
||||
final String? orderUrl;
|
||||
|
@ -44,6 +44,15 @@ class Jidlo {
|
|||
required this.naBurze});
|
||||
}
|
||||
|
||||
/// Popisuje alergen v jídelníčku
|
||||
class Alergen {
|
||||
final int kod;
|
||||
final String nazev;
|
||||
final String? popis;
|
||||
|
||||
const Alergen({required this.nazev, required this.kod, this.popis});
|
||||
}
|
||||
|
||||
/// Reprezentuje cizí jídlo na burze
|
||||
class Burza {
|
||||
/// Den, který je jídlo vydáváno
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
name: canteenlib
|
||||
description: Library for communication with the czech canteen food ordering system iCanteen
|
||||
version: 1.1.4
|
||||
version: 2.0.0
|
||||
repository: 'https://git.mnau.xyz/hernik/canteenlib'
|
||||
issue_tracker: 'https://git.mnau.xyz/hernik/canteenlib/issues'
|
||||
|
||||
|
|
Reference in a new issue