Rest API for strava.cz.
Project description
Strava.cz rest API
⚠️ UPOZORNĚNÍ: Strava.cz má vysoce proměnlivé prostředí (každá jídelna má jiný počet obědů, jiné názvy chodů apod.) z toho důvodu toto API není plně univerzální. I když jsem se snažil ho napsat univerzálně, nějaké metody nemusí plně fungovat a bude to vyžadovat vaší opravu.
Toto je neoficiální REST api pro stravu.cz. V tomto dokumentu je popsáno vše co potřebuješ vědet o tomto API. Je zde také vysvětleno dopodrobna jak to celé funguje.
Instalace
pip install strava_cz_api
| Verze | Stav | Poznámka |
|---|---|---|
| 1.X | ❌ Legacy | Stará verze bez error handlingu. Funkční :D |
| 2.0 - 2.4.1 | ❌ Unstable | Chyba v postOrders. |
| 2.5 | ✅ Stable | Stabilní verze |
Autentizace
K API endpointům potřebuješ SID a s5url. Můžeš si je získat sám z dev tools v prohlížeči, ale nejlepší cesta je pomocí metod: Auth.login() a Auth.getCredentials():
from strava_cz_api import Auth
cookie, data = Auth.login("demo", "demo", "0000")
sid, s5url = Auth.getCredentials(data)
Poznámky:
- Podporované jazyky:
CZ,EN,SK. Auth.login()vracícookiea JSON data;Auth.getCredentials()z nich vytáhnesidas5url.
Inicializace API
from strava_cz_api import Api
api = Api(
sid="00000000000000000000000000000000",
s5url="",
cislo_jidelny="0000"
)
Poznámky:
s5url=""může být hash, url či prázdné. Někdy se stane, že musí být spravný input, někdy může být prázné.
Veřejné endpointy (bez přihlášení)
| Metoda | Popis | Poznámka |
|---|---|---|
getJidelny() |
Seznam jídelen | |
getJidelna() |
Informace o jídělne | |
getS5url() |
URL jídelny | |
getJidelnicek() |
Get veřejného jídelníčku |
Autentizované endpointy (Api)
| Metoda | Popis | Poznámka |
|---|---|---|
getJidelnicekToday() |
Dnešní jídelníček | Vrací list (table0) |
getJidelnicekAll() |
Kompletní jídelníček | |
getInfo() |
Informace o uživateli | Upravený payload. |
getUsername() |
Uživatelské jméno | Vytahuje z getInfo() |
getJidelna() |
Informace o jídelně | |
getHistorieKlienta(date) |
Historie objednávek za měsíc | date = první den měsíce (např. 2025-01-01) |
getPlaby() |
Pohyby na účtu | |
getMessages() |
Zprávy pro uživatele | |
getProtokol() |
Vrátí protokol | |
getVydej() |
Vrátí list vydaných jídel. | |
postJidlo(veta, stav) |
Přihlásit/odhlásit jídlo | stav: 1 přihlásit, 0 odhlásit |
postDen(datum, stav) |
Přihlásit/odhlásit celý den | datum ve formátu YYYY-MM-DD |
postOrders() |
Uložit změny objednávek | Nutné po postJidlo/postDen |
resetChanges() |
Resetuje neuložené změny v komunikaci. | Dobré pro zrušení změn při objednávkách |
Filtr
Filtr existuje, ale je to pre‑release: může obsahovat chyby a bude se dál rozšiřovat. Lze ho importovat (from strava_cz_api import Filter), ale zatím není zaručeno, že všude funguje správně.
from strava_cz_api import Filter
filtrovano = Filter.filter_json(["veta"], api.getJidelnicekAll())
print(filtrovano)
Objednávky – správný postup
Změny objednávek se ukládají ve dvou krocích:
- Provedení změn (
postJidlonebopostDen) - Uložení (
postOrders)
cookie_data = api.postJidlo(5, 1)
cookie_data = api.postOrders()
Návratové hodnoty
Většina metod vrací JSON string. Metody postJidlo, postDen a postOrders vrací dvojici (cookie, data) z POST odpovědi.
Chyby a omezení
- Error handling je dostupný přes výjimky, které lze importovat:
from strava_cz_api import StravaError. - Při neúspěšném požadavku se vyhazuje
ConnectionError. - Některé jídelny mohou vyžadovat úpravy payloadů nebo cookie.
Příklady
Ukázkové skripty najdeš ve složce ./examples.
Json struktura
{
"tableX": [
{
"id": 0,
"datum": "30.06.2026", // datum
"druh_popis": "Polévka", // část
"druh_chod": "Oběd", // chod
"nazev": "Polévka 1", // název chodu (oběd č. 1, Řízek)
"popis": "Snídaně", // popis chodu
"delsiPopis": "", // delší popis chodu
"zakazaneAlergeny": null, // ??
"alergeny_text": "", // alergeny
"alergeny": [], // alergeny
"chod": "C", // číslo chodu (A = snídaně, B, C)
"druh": "OB", // druh chodu ve zkratce
"cena": "45.00", // cena
"polevka": "N", // zda pole je polévka (je v ceně)
"pocet": 1, // 1 = přihlášeno, 0 = odhlášeno
"veta": "172", // id políčka
"vetaDieta": "196", // ??
"omezeniObj": { // ???
"den": "",
"obj": "",
"zm": "",
"bur": "C"
},
"burza": { // ???
"zmena": "0",
"ostatni": "0",
"nabidka": "0",
"poptavka": "0"
},
"vydejniMisto": { // kde se vydává oběd (škola má více jídelních budov)
"misto": "2",
"mista": "2"
},
"diety": { // ??
"dieta": "",
"diety": ""
},
"zkratkaProduktu": "OB", // zkratka produktu (identické jako chod, u polévky chybí??)
"cisloJidelnicku": "1", // ??
"multipleNazev": "1NOběd č. 1COB", // ??
"version": 5, // ??
"casKonec": "2026-06-29T11:50:00", // do kdy lze přihlásit
"casOdhlaseni": "2026-06-29T11:50:00", // do kdy lze přihlásit
"obrazky": []
},
...
]
}
- Mnoho polí není vyplněno. Zda víte co to je, doplňte to nebo mě kontaktujte.
Demo
- Demo uživatele si lze vytvořit na https://www.strava.cz/strava/Stravnik/Demo
- Poté se lze přihlásit na https://app.strava.cz/ na jídelně
0000
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file strava_cz_api-2.5.tar.gz.
File metadata
- Download URL: strava_cz_api-2.5.tar.gz
- Upload date:
- Size: 10.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ea3a0ac1f29dadeaa930913b43b808e5b4709bd1e0fe8e40a05f6a5dcabc9fba
|
|
| MD5 |
f7b7cb250faf8a3bb326fc5a33d88498
|
|
| BLAKE2b-256 |
28a2a05bef494ed062935bea8ed5f873dc14522762274e0581ae52de8bedbd3e
|
Provenance
The following attestation bundles were made for strava_cz_api-2.5.tar.gz:
Publisher:
python-publish.yml on kralicekgamer/strava.cz_api
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
strava_cz_api-2.5.tar.gz -
Subject digest:
ea3a0ac1f29dadeaa930913b43b808e5b4709bd1e0fe8e40a05f6a5dcabc9fba - Sigstore transparency entry: 1653493624
- Sigstore integration time:
-
Permalink:
kralicekgamer/strava.cz_api@9445f4ecf4c6fd34c58b00f2f3be9bce2e3f1721 -
Branch / Tag:
refs/tags/v2.5 - Owner: https://github.com/kralicekgamer
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@9445f4ecf4c6fd34c58b00f2f3be9bce2e3f1721 -
Trigger Event:
release
-
Statement type:
File details
Details for the file strava_cz_api-2.5-py3-none-any.whl.
File metadata
- Download URL: strava_cz_api-2.5-py3-none-any.whl
- Upload date:
- Size: 10.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
be4c39ed516356f5faf6ce9e05aba936d5e4380912758da6f9268f269a0ef60d
|
|
| MD5 |
c363144edc4e65a15dd565506fde8ade
|
|
| BLAKE2b-256 |
a092b7978e60a43976e467c17f0c3132bbbf3db7cde939405fc6f869026c4fcb
|
Provenance
The following attestation bundles were made for strava_cz_api-2.5-py3-none-any.whl:
Publisher:
python-publish.yml on kralicekgamer/strava.cz_api
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
strava_cz_api-2.5-py3-none-any.whl -
Subject digest:
be4c39ed516356f5faf6ce9e05aba936d5e4380912758da6f9268f269a0ef60d - Sigstore transparency entry: 1653493839
- Sigstore integration time:
-
Permalink:
kralicekgamer/strava.cz_api@9445f4ecf4c6fd34c58b00f2f3be9bce2e3f1721 -
Branch / Tag:
refs/tags/v2.5 - Owner: https://github.com/kralicekgamer
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@9445f4ecf4c6fd34c58b00f2f3be9bce2e3f1721 -
Trigger Event:
release
-
Statement type: