https://github.com/tomhula/jecnaapi
A Kotlin/Java API to access SPŠE Ječná web's data.
https://github.com/tomhula/jecnaapi
java jecna kotlin library parser
Last synced: 11 days ago
JSON representation
A Kotlin/Java API to access SPŠE Ječná web's data.
- Host: GitHub
- URL: https://github.com/tomhula/jecnaapi
- Owner: tomhula
- License: gpl-3.0
- Created: 2022-06-04T09:26:07.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2026-01-19T20:03:04.000Z (15 days ago)
- Last Synced: 2026-01-19T21:03:59.301Z (15 days ago)
- Topics: java, jecna, kotlin, library, parser
- Language: Kotlin
- Homepage:
- Size: 1.02 MB
- Stars: 5
- Watchers: 1
- Forks: 3
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# JecnaAPI




##### [English version here](README_en.md)
JecnaAPI je Kotlin/Java knihovna, díky které lze přistupovat k datům webu [spsejecna.cz](https://spsejecna.cz). Tato knihovna vznikla primárně pro účely [JecnaMobile](https://github.com/tomhula/JecnaMobile), ale může ji použít kdokoliv.
JecnaAPI podporuje Kotlin Multiplatform pro tyto targety: `jvm`, `android`, `wasmJs`, `js`, `linuxX64`.
## Funkce
- čtení:
- Novinky
- Známky
- Rozvrh
- Příchody a odchody
- Učitelský sbor
- Obědy
- Absence a omluvný list
- Profil studenta a jeho obrázek
- Učebny
- objednávání obědů
- dávání obědů do/z burzy
- kupování obědů z burzy
## Požadavky
- Java 21+ (projekt používá JVM toolchain 21)
- Kotlin 2.2+
## Instalace
JecnaAPI je na [Maven Central](https://central.sonatype.com/artifact/io.github.tomhula/jecnaapi) repozitáři.
### Gradle
###### build.gradle (Groovy)
```groovy
dependencies {
implementation 'io.github.tomhula:jecnaapi:9.0.0'
/* Pouze pokud chcete používat z Javy, musíte přidat i následující. */
implementation 'io.github.tomhula:jecnaapi-java:9.0.0'
}
```
###### build.gradle.kts (Kotlin)
```kotlin
dependencies {
implementation("io.github.tomhula:jecnaapi:9.0.0")
/* Pouze pokud chcete používat z Javy, musíte přidat i následující. */
implementation("io.github.tomhula:jecnaapi-java:9.0.0")
}
```
### Maven
###### pom.xml
```xml
io.github.tomhula
jecnaapi
9.0.0
io.github.tomhula
jecnaapi-java
9.0.0
```
## Použití
Knihovna je primárně naprogramovaná v Kotlinu, ale je možné ji používat i z Javy. Chcete‑li ji používat i z Javy, musíte přidat závislost na `jecnaapi-java` (viz [Instalace](#instalace)). V Javě se místo Kotlin Coroutines používá API `CompletableFuture`.
### Vytvoření JecnaClient objektu
##### Kotlin
```kotlin
val jecnaClient = JecnaClient()
```
##### Java
```java
JecnaClientJavaWrapper jecnaClient = new JecnaClientJavaWrapper();
```
### Přihlášení
Přihlášení je nezbytné k čtení dat studenta.
##### Kotlin
```kotlin
/* runBlocking, nebo jiný coroutine scope. */
runBlocking {
jecnaClient.login("username", "password")
}
```
##### Java
```java
// přihlášení (počkejte na dokončení)
jecnaClient.login("username", "password").join();
```
### Čtení dat
##### Kotlin
```kotlin
/* runBlocking, nebo jiný coroutine scope. */
runBlocking {
val newsPage = jecnaClient.getNewsPage()
val gradesPage = jecnaClient.getGradesPage()
val timetablePage = jecnaClient.getTimetablePage()
val attendancePage = jecnaClient.getAttendancePage()
val teachersPage = jecnaClient.getTeachersPage()
val absencePage = jecnaClient.getAbsencePage()
}
```
##### Java
```java
NewsPage newsPage = jecnaClient.getNewsPage().join();
GradesPage gradesPage = jecnaClient.getGradesPage().join();
TimetablePage timetablePage = jecnaClient.getTimetablePage().join();
AttendancePage attendancePage = jecnaClient.getAttendancePage().join();
TeachersPage teachersPage = jecnaClient.getTeachersPage().join();
```
Některé metody berou období (např. rok) jako parametr.
##### Kotlin
```kotlin
/* runBlocking, nebo jiný coroutine scope. */
runBlocking {
/* Získání známek z roku 2021/2022 z druhého pololetí. */
val gradesPage = jecnaClient.getGradesPage(SchoolYear(2021), SchoolYearHalf.SECOND)
}
```
##### Java
```java
/* Získání známek z roku 2021/2022 z druhého pololetí. */
GradesPage gradesPage = jecnaClient.getGradesPage(new SchoolYear(2021), SchoolYearHalf.SECOND).join();
```
Více příkladů najdete ve složkách [kotlin-examples](/src/examples/kotlin) a [java-examples](/jecnaapi-java/src/examples/java).
# Kontribuce
Kontribuce jsou vítané, stačí založit Pull Request. Pokud jde o nějaké zásadní změny (což samozřejmě můžete), je dobré je se mnou nejdříve probrat, ať je neděláte zbytečně.
## License
[GNU GPLv3](LICENSE) © Tomáš Hůla