From 7ea3df0b2bfc4503e7ac33506bc3c89022326468 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maty=C3=A1=C5=A1=20Caras?= Date: Fri, 6 Oct 2023 13:24:47 +0200 Subject: [PATCH] =?UTF-8?q?BREAKING:=20zm=C4=9Bnit=20alergeny=20na=20t?= =?UTF-8?q?=C5=99=C3=ADdu,=20opravit=20propisov=C3=A1n=C3=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 4 ++++ COMPATIBILITY.md | 6 +++--- README.md | 3 +++ lib/src/canteen.dart | 24 +++++++++++++++++++----- lib/src/tridy.dart | 11 ++++++++++- pubspec.yaml | 2 +- 6 files changed, 40 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 98756d9..01f1b7a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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 diff --git a/COMPATIBILITY.md b/COMPATIBILITY.md index 67254c9..015c08f 100644 --- a/COMPATIBILITY.md +++ b/COMPATIBILITY.md @@ -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) diff --git a/README.md b/README.md index 66a9a8f..44cdf52 100644 --- a/README.md +++ b/README.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!** diff --git a/lib/src/canteen.dart b/lib/src/canteen.dart index a18f245..ce8beb5 100644 --- a/lib/src/canteen.dart +++ b/lib/src/canteen.dart @@ -306,10 +306,21 @@ class Canteen { .replaceAll(' ,', ",") .replaceAll("
", "") .replaceAll("\n", ""); - var alergeny = - RegExp(r"""(.+?)<\/span>""") + var alergenyList = + RegExp(r"""(\d{1,2})""") .allMatches(jidlaProDen) .toList(); + + var alergeny = alergenyList.map((e) { + var jmeno = RegExp(r'(.+?)<\/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'(?<=).+?(?=<)') .firstMatch(o)! @@ -333,10 +344,13 @@ class Canteen { burzaUrl = match.group(0)!.replaceAll("amp;", ""); } } - + var jidloJmeno = RegExp(r'(.+?)(?=)') + .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 } diff --git a/lib/src/tridy.dart b/lib/src/tridy.dart index ee17b30..97d115b 100644 --- a/lib/src/tridy.dart +++ b/lib/src/tridy.dart @@ -24,7 +24,7 @@ class Jidlo { /// Seznam alergenů /// /// Pokud se žádný nepodařilo najít, vrací prázdný seznam - List alergeny; + List 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 diff --git a/pubspec.yaml b/pubspec.yaml index 701fb05..5d5070d 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -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'