strava.cz-api 2.2.1__tar.gz → 2.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: strava-cz-api
3
- Version: 2.2.1
3
+ Version: 2.3
4
4
  Summary: Rest API for strava.cz.
5
5
  Author-email: Matěj Adamec <kralyk@kralyk.dev>
6
6
  Requires-Python: >=3.8
@@ -60,7 +60,7 @@ api = Api(
60
60
  | --- | --- | --- |
61
61
  | `getJidelnicekToday()` | Dnešní jídelníček | Vrací list (`table0`) |
62
62
  | `getJidelnicekAll()` | Kompletní jídelníček
63
- | `getInfo()` | Informace o uživateli
63
+ | `getInfo()` | Informace o uživateli | Upravený payload. Nenačítá nové cookies. Může trvat dlouho (2 - 3 s)
64
64
  | `getUsername()` | Uživatelské jméno | Vytahuje z `getInfo()` |
65
65
  | `getJidelna()` | Informace o jídelně
66
66
  | `getHistorieKlienta(date)` | Historie objednávek za měsíc | `date` = první den měsíce (např. `2025-01-01`) |
@@ -71,6 +71,7 @@ api = Api(
71
71
  | `postJidlo(veta, stav)` | Přihlásit/odhlásit jídlo | `stav`: 1 přihlásit, 0 odhlásit |
72
72
  | `postDen(datum, stav)` | Přihlásit/odhlásit celý den | `datum` ve formátu `YYYY-MM-DD` |
73
73
  | `postOrders()` | Uložit změny objednávek | Nutné po `postJidlo`/`postDen` |
74
+ | `resetChanges()` | Resetuje neuložené změny v komunikaci. | Dobré pro zrušení změn pří objednávkách
74
75
 
75
76
  ## Objednávky – správný postup
76
77
  Změny objednávek se ukládají ve dvou krocích:
@@ -50,7 +50,7 @@ api = Api(
50
50
  | --- | --- | --- |
51
51
  | `getJidelnicekToday()` | Dnešní jídelníček | Vrací list (`table0`) |
52
52
  | `getJidelnicekAll()` | Kompletní jídelníček
53
- | `getInfo()` | Informace o uživateli
53
+ | `getInfo()` | Informace o uživateli | Upravený payload. Nenačítá nové cookies. Může trvat dlouho (2 - 3 s)
54
54
  | `getUsername()` | Uživatelské jméno | Vytahuje z `getInfo()` |
55
55
  | `getJidelna()` | Informace o jídelně
56
56
  | `getHistorieKlienta(date)` | Historie objednávek za měsíc | `date` = první den měsíce (např. `2025-01-01`) |
@@ -61,6 +61,7 @@ api = Api(
61
61
  | `postJidlo(veta, stav)` | Přihlásit/odhlásit jídlo | `stav`: 1 přihlásit, 0 odhlásit |
62
62
  | `postDen(datum, stav)` | Přihlásit/odhlásit celý den | `datum` ve formátu `YYYY-MM-DD` |
63
63
  | `postOrders()` | Uložit změny objednávek | Nutné po `postJidlo`/`postDen` |
64
+ | `resetChanges()` | Resetuje neuložené změny v komunikaci. | Dobré pro zrušení změn pří objednávkách
64
65
 
65
66
  ## Objednávky – správný postup
66
67
  Změny objednávek se ukládají ve dvou krocích:
@@ -7,7 +7,7 @@ where = ["."]
7
7
 
8
8
  [project]
9
9
  name = "strava-cz-api"
10
- version = "2.2.1"
10
+ version = "2.3"
11
11
  description = "Rest API for strava.cz."
12
12
  readme = "README.md"
13
13
  requires-python = ">=3.8"
@@ -75,4 +75,21 @@ class Post:
75
75
  return new_cookie, data
76
76
 
77
77
 
78
+ class ResetChanges:
79
+ @staticmethod
80
+ def call(url, payload, cookie, headers=None):
81
+ if headers is None:
82
+ headers = {
83
+ "Content-Type": "text/plain;charset=UTF-8",
84
+ "Cookie": cookie,
85
+ "Referer": "https://app.strava.cz/"
86
+ }
87
+
88
+ response = requests.post(url, headers=headers, json=payload)
89
+ data = response.json()
90
+
91
+ raise_api_error(data)
92
+
93
+ new_cookie = response.cookies.get_dict()
78
94
 
95
+ return new_cookie
@@ -1,24 +1,6 @@
1
1
  import requests
2
2
  import json
3
- from action import Get, Post
4
-
5
- from action import (
6
- StravaError,
7
- JidelnaNenalezenaError,
8
- ChybneHesloError,
9
- BackendError,
10
- ChybneSID
11
- )
12
-
13
- __all__ = [
14
- "Api",
15
- "Auth",
16
- "StravaError",
17
- "JidelnaNenalezenaError",
18
- "ChybneHesloError",
19
- "BackendError",
20
- "ChybneSID"
21
- ]
3
+ from .action import Get, Post, ResetCookie
22
4
 
23
5
 
24
6
  class Api:
@@ -75,7 +57,7 @@ class Api:
75
57
  "lang": self.lang,
76
58
  "getText": True,
77
59
  "checkVersion": True,
78
- "resetTables" :True,
60
+ "resetTables" : False,
79
61
  "frontendFunction": "refreshInformations"
80
62
  }
81
63
 
@@ -190,6 +172,7 @@ class Api:
190
172
 
191
173
  return Get.call(url, payload)
192
174
 
175
+
193
176
  def getVydej(self):
194
177
  """
195
178
  Vrátí list vydaných jídel.
@@ -279,7 +262,29 @@ class Api:
279
262
  return self.cookie
280
263
 
281
264
 
265
+ def resetChanges(self):
266
+ """
267
+ Resetuje neuložené změny v komunikaci. Může trvat dlouho!
268
+ """
269
+ url = f"{self.base}/nactiVlastnostiPA"
270
+
271
+ payload = {
272
+ "sid": self.sid,
273
+ "url": self.s5url,
274
+ "cislo": self.cislo_jidelny,
275
+ "ignoreCert": "false",
276
+ "lang": self.lang,
277
+ "getText": True,
278
+ "checkVersion": True,
279
+ "resetTables" : True,
280
+ "frontendFunction": "refreshInformations"
281
+ }
282
+
283
+ return ResetChanges.call(url, payload, self.cookie)
284
+
285
+
282
286
  class Public:
287
+ @staticmethod
283
288
  def getJidelnicek(cislo_jidelny, lang):
284
289
  """
285
290
  Získání public jídelníčků.
@@ -298,6 +303,7 @@ class Public:
298
303
 
299
304
  return Get.call(url, payload)
300
305
 
306
+ @staticmethod
301
307
  def getJidelna(cislo_jidelny):
302
308
  """
303
309
  Vrátí informaci o jídelně.
@@ -311,6 +317,8 @@ class Public:
311
317
 
312
318
  return Get.call(url, payload)
313
319
 
320
+
321
+ @staticmethod
314
322
  def getS5url(cislo_jidelny):
315
323
  """
316
324
  Pomocná metoda co vratí url jídelny.
@@ -318,6 +326,7 @@ class Public:
318
326
  return json.loads(Public.getJidelna(cislo_jidelny)).get("urlwsdl_s")[0]
319
327
 
320
328
 
329
+ @staticmethod
321
330
  def getJidelny():
322
331
  """
323
332
  Vrátí seznam všech jídelen a jejich čísel.
@@ -332,6 +341,7 @@ class Public:
332
341
 
333
342
 
334
343
  class Auth:
344
+ @staticmethod
335
345
  def login(username, password, cislo_jidelny, lang="CZ", zustat_prihlasen=True, cookie="NEXT_LOCALE=cs"):
336
346
  """
337
347
  Vrátí data nutná pro další komunikaci.
@@ -352,6 +362,8 @@ class Auth:
352
362
 
353
363
  return Post.call(url, payload, cookie)
354
364
 
365
+
366
+ @staticmethod
355
367
  def getCredentials(data):
356
368
  """
357
369
  Vyfiltruje SID a s5url z funkce login
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: strava-cz-api
3
- Version: 2.2.1
3
+ Version: 2.3
4
4
  Summary: Rest API for strava.cz.
5
5
  Author-email: Matěj Adamec <kralyk@kralyk.dev>
6
6
  Requires-Python: >=3.8
@@ -60,7 +60,7 @@ api = Api(
60
60
  | --- | --- | --- |
61
61
  | `getJidelnicekToday()` | Dnešní jídelníček | Vrací list (`table0`) |
62
62
  | `getJidelnicekAll()` | Kompletní jídelníček
63
- | `getInfo()` | Informace o uživateli
63
+ | `getInfo()` | Informace o uživateli | Upravený payload. Nenačítá nové cookies. Může trvat dlouho (2 - 3 s)
64
64
  | `getUsername()` | Uživatelské jméno | Vytahuje z `getInfo()` |
65
65
  | `getJidelna()` | Informace o jídelně
66
66
  | `getHistorieKlienta(date)` | Historie objednávek za měsíc | `date` = první den měsíce (např. `2025-01-01`) |
@@ -71,6 +71,7 @@ api = Api(
71
71
  | `postJidlo(veta, stav)` | Přihlásit/odhlásit jídlo | `stav`: 1 přihlásit, 0 odhlásit |
72
72
  | `postDen(datum, stav)` | Přihlásit/odhlásit celý den | `datum` ve formátu `YYYY-MM-DD` |
73
73
  | `postOrders()` | Uložit změny objednávek | Nutné po `postJidlo`/`postDen` |
74
+ | `resetChanges()` | Resetuje neuložené změny v komunikaci. | Dobré pro zrušení změn pří objednávkách
74
75
 
75
76
  ## Objednávky – správný postup
76
77
  Změny objednávek se ukládají ve dvou krocích:
File without changes
File without changes