Skip to main content

BakalářiAPI

BakalářiAPI je osobní projekt v Pythonu, který se snaží vytvořit jednoduchý způsob, jak pracovat s Bakaláři.

Status

Přestože je aktuální verze 4.0, BakalářiAPI se pořád často a poměrně drasticky mění. "Veřejná" část API tomuto nepodléhá, ale interní věci se mění prakticky neustále, a pokud je někdo užije, měl by mít na paměti, že je dost pravděpodobně, že v další verzi BakalářiAPI to nebude fungovat stejně. Jinak řečeno - prakticky každá verze je major, tzn., že pravděpodobně rozbije aplikace postavené na předchozí verzi.

Jak to funguje a co to umí?

Je to jednoduché - tváříme jako "normální" uživatel, který využívá webové rozhraní aplikace Bakaláři a při tom si zapisuje vše podstatné. Většinu dokážeme udělat jen z prostých dotazů, jejichž výsledek následně zpracujeme, avšak jelikož Bakaláři využívají ASP.NET forms, tak jsou zde určité situace, kdy nelze jednoduše udělat dotaz vytvořit a pro takové situace se pokusí BakalářiAPI použít Selenium (pokud je nastaveno).

Ačkoli původně šlo jen o vytvoření základního API, projekt postupně expandoval a nyní bych to označil za několik věcí v sobě, jehož hlavní části jsou bakalariapi (samotné API pro Bakaláře) a bakalarishell (konzolová aplikace pro základní práci s Bakaláři). V budoucnu se tyto věci pravděpodobně rozdělí, ale zatím jsou spolu.

Instalace

Instalaci lze provést přes pip:

pip install bakalariapi

Tím se nainstaluje poslední verze BakalářiAPI. Pokud chceš vyzkoušet všecny novinky, co se ještě nedostali do žádné verze, můžeš BakalářiAPI nainstalovat přímo ze zdroje (doufám, že není nutno dodávat, že BakalářiAPI může být a pravděpodobně bude značně nestabilní):

pip install git+https://github.com/Hackrrr/BakalariAPI

Nyní lze importovat modul bakalariapi a lze spustit shell přes příkaz bakalarishell. Většina funkcí by měla fungovat, ale pro další funkcionalitu je potřeba nastavit Selenium.

Selenium

Jak bylo zmíněno, Bakaláři využívají ASP.NET formuláře. Naštěstí se většinou dají obejít, ale pro některé věci je potřebujeme. A náš (ne až tak moc) vražedný nástroj na tyto formuláře je Selenium.

Nejdříve WebDriver. WebDriver je technologie, která umožňuje ovládat prohlížeč vzdáleně, například "klikni sem", "napiš tohle", "dej mi současné cookies" a další. Problém je, že WebDriver je většinou další program, mimo samotný prohlížeč a který se pro každý prohlížeč liší, tzn. jiný pro Chrome a pro Firefox. Abychom tedy mohli této technologie využít, potřebujeme stáhnout správný webdriver.

Nyní Selenium. Selenium je wrapper kolem WebDriveru. Dělá nám pěkné API k webdriveru, abychom nemuseli řešit "low-level" záležitosti (které jsou definované ve WebDriver standardu) a mohli volat jen nějakou funkci.

A nakonec - proč tohle vůbec potřebujeme? Tak jak je napsáno výše, sestavit dotaz na ASP.NET formuláře není nejjednodušší, a proto takovéto dotazy doslova simulujeme - otevřeme prohlížeč, přejdeme na danou stránku, klikneme na tlačítko a voilà - úspěšně jsme vyřešili ASP.NET formuláře.

Počkat. Vyřešili jsme sice problém, ale jen teoreticky, takže jak to vlastně zprovozním? Velice jednoduše - pro bakalarishell stačí při startu přidat argumenty -b PROHLÍŽEČ a -e CESTA_K_WEBDRIVERU (pokud webdriver není na PATH), např. -b Chrome -e webdriver.exe; pro bakalariapi je potřeba při inicializaci třídy BakalariAPI přidat instanci SeleniumHandler (a zbytek snad odvodíš podle parametrů).

Release files for BakalariAPI 4.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for BakalariAPI 4.0.0
File Size Uploaded
BakalariAPI-4.0.0.tar.gz 62.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for BakalariAPI 4.0.0
File Interpreter ABI Platform
BakalariAPI-4.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 133.5 kB

Release files / BakalariAPI-4.0.0.tar.gz

Download URL BakalariAPI-4.0.0.tar.gz
Size 62.1 kB
Tags Source
SHA-256 checksum
How to use checksums
c455b0cf5e0e633bb7e44227b37d08fda76ba93910efb012e4bce944b6890e78
BLAKE2b-256 checksum
How to use checksums
a1a62d2b7c57b2d85531803038f48c612e441bf3492e8b5c954e7b55404f564b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.2 importlib_metadata/3.7.3 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.6

Release files / BakalariAPI-4.0.0-py3-none-any.whl

Download URL BakalariAPI-4.0.0-py3-none-any.whl
Size 71.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1da64334a25ca53c57d6c3f994ea99377deb4a728a8d0fa03b70b0320e17065c
BLAKE2b-256 checksum
How to use checksums
eb5ccb8d1920c661c260171df757ae0fe9f69ab75ce3f38875346f7a4334b1e3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.2 importlib_metadata/3.7.3 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.2 CPython/3.9.6

Release history Release notifications | RSS feed

This release

4.0.0 This release

2 release files

3.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page