Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
## 1.0.9 (2025-12-18)
### Fixed
- Fix SH pegel page scraping

## 1.0.8 (2025-12-09)
### Fixed
- Fix TH pegel page scraping
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ build-backend = "hatchling.build"

[project]
name = "lhpapi"
version = "1.0.8"
version = "1.0.9"
authors = [
{ name="stephan192", email="stephan192@outlook.com" },
]
Expand Down
36 changes: 20 additions & 16 deletions src/lhpapi/sh_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

from __future__ import annotations

from datetime import datetime

from .api_utils import (
DynamicData,
LHPError,
Expand All @@ -13,6 +15,21 @@
)


def parse_timestamp(parts: list[str]) -> datetime:
"""Parse timestamp with optional timezone."""
if len(parts) >= 5:
timezone = parts[4].strip("()")
else:
timezone = None
base_time = parts[2] + parts[3]

if timezone == "MEZ":
return convert_to_datetime(f"{base_time}+0100", "%d.%m.%Y%H:%M%z")
if timezone == "MESZ":
return convert_to_datetime(f"{base_time}+0200", "%d.%m.%Y%H:%M%z")
return convert_to_datetime(base_time, "%d.%m.%Y%H:%M")


def init_SH(ident: str) -> StaticData: # pylint: disable=invalid-name
"""Init data for Schleswig-Holstein."""
try:
Expand Down Expand Up @@ -67,28 +84,15 @@ def update_SH(static_data: StaticData) -> DynamicData: # pylint: disable=invali
and element.attrs["class"][0] == "tooltip-content__w"
):
element_text = element.getText().split()
if element_text[1] == "cm":
if len(element_text) >= 4 and element_text[1] == "cm":
level = convert_to_float(element_text[0], True)
if element_text[4] == "(MEZ)":
last_update = convert_to_datetime(
element_text[2] + element_text[3] + "+0100",
"%d.%m.%Y%H:%M%z",
)
elif element_text[4] == "(MESZ)":
last_update = convert_to_datetime(
element_text[2] + element_text[3] + "+0200",
"%d.%m.%Y%H:%M%z",
)
else:
last_update = convert_to_datetime(
element_text[2] + element_text[3], "%d.%m.%Y%H:%M"
)
last_update = parse_timestamp(element_text)
if (
element.name == "dd"
and element.attrs["class"][0] == "tooltip-content__q"
):
element_text = element.getText().split()
if element_text[1] == "m3/s":
if len(element_text) >= 2 and element_text[1] == "m3/s":
flow = convert_to_float(element_text[0], True)
return DynamicData(level=level, stage=stage, flow=flow, last_update=last_update)
except Exception as err:
Expand Down