lhpapi 1.0.3__tar.gz → 1.0.4__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,3 +1,9 @@
1
+ ## 1.0.4 (2024-12-24)
2
+ ### Fixed
3
+ - Fix NI invalid values
4
+ - Fix BB encoding
5
+ - Add get_all_stations()
6
+
1
7
  ## 1.0.3 (2024-10-02)
2
8
  ### Fixed
3
9
  - Fix BE encoding
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.3
1
+ Metadata-Version: 2.4
2
2
  Name: lhpapi
3
- Version: 1.0.3
3
+ Version: 1.0.4
4
4
  Summary: API to retrieve data from the Länderübergreifendes Hochwasser Portal (LHP)
5
5
  Project-URL: Homepage, https://github.com/stephan192/lhpapi
6
6
  Project-URL: Issues, https://github.com/stephan192/lhpapi/issues
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "lhpapi"
7
- version = "1.0.3"
7
+ version = "1.0.4"
8
8
  authors = [
9
9
  { name="stephan192", email="stephan192@outlook.com" },
10
10
  ]
@@ -6,7 +6,7 @@ from datetime import datetime
6
6
  from types import FunctionType
7
7
  from typing import Final
8
8
 
9
- from .api_utils import DynamicData, LHPError, StaticData
9
+ from .api_utils import DynamicData, LHPError, StaticData, fetch_json
10
10
  from .bb_api import init_BB, update_BB
11
11
  from .be_api import init_BE, update_BE
12
12
  from .bw_api import init_BW, update_BW
@@ -70,6 +70,13 @@ def update_lhp_data(static_data: StaticData) -> DynamicData:
70
70
  )
71
71
 
72
72
 
73
+ def get_all_stations() -> dict[str, str]:
74
+ """Return all available stations."""
75
+ return fetch_json(
76
+ "https://raw.githubusercontent.com/stephan192/lhpapi/refs/heads/master/docs/pegel.json"
77
+ )
78
+
79
+
73
80
  class HochwasserPortalAPI:
74
81
  """API to retrieve the data."""
75
82
 
@@ -2,6 +2,8 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ from html import unescape
6
+
5
7
  from .api_utils import (
6
8
  DynamicData,
7
9
  LHPError,
@@ -61,7 +63,7 @@ def fix_bb_encoding(string_in: str) -> str:
61
63
  replace = False
62
64
  else:
63
65
  string_out = string_out + chr(num)
64
- return string_out
66
+ return unescape(string_out)
65
67
 
66
68
 
67
69
  def init_BB(ident: str) -> StaticData: # pylint: disable=invalid-name
@@ -72,6 +72,8 @@ def update_NI(static_data: StaticData) -> DynamicData: # pylint: disable=invali
72
72
  )
73
73
  except (IndexError, KeyError):
74
74
  value = None
75
+ if value == -888.0:
76
+ value = None
75
77
  try:
76
78
  if data["getStammdatenResult"][0]["Parameter"][0]["Einheit"] == "cm":
77
79
  level = value
@@ -85,15 +87,18 @@ def update_NI(static_data: StaticData) -> DynamicData: # pylint: disable=invali
85
87
  except (IndexError, KeyError):
86
88
  level = None
87
89
  flow = None
88
- try:
89
- last_update = convert_to_datetime(
90
- data["getStammdatenResult"][0]["Parameter"][0]["Datenspuren"][0][
91
- "AktuellerMesswert_Zeitpunkt"
92
- ],
93
- "%d.%m.%Y %H:%M",
94
- )
95
- except (IndexError, KeyError):
90
+ if (level is None) and (flow is None):
96
91
  last_update = None
92
+ else:
93
+ try:
94
+ last_update = convert_to_datetime(
95
+ data["getStammdatenResult"][0]["Parameter"][0]["Datenspuren"][0][
96
+ "AktuellerMesswert_Zeitpunkt"
97
+ ],
98
+ "%d.%m.%Y %H:%M",
99
+ )
100
+ except (IndexError, KeyError):
101
+ last_update = None
97
102
  return DynamicData(level=level, stage=stage, flow=flow, last_update=last_update)
98
103
  except Exception as err:
99
104
  raise LHPError(err, "ni_api.py: update_NI()") from err
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes