fix(gismeteo): fix gismeteo parser

This commit is contained in:
2026-08-28 10:02:36 +03:00
parent 50c4221b8d
commit 60c0a7a6fc
5 changed files with 35 additions and 17 deletions
+10
View File
@@ -28,6 +28,11 @@ class Cloudness(StrEnum):
CLOUDY = auto()
MAINLY_CLOUDY = auto()
values: list[Self]
Cloudness.values = list(Cloudness)
class Precipitation(StrEnum):
NO = auto()
@@ -39,6 +44,11 @@ class Precipitation(StrEnum):
HEAVY_SNOW = auto()
HAIL = auto()
values: list[Self]
Precipitation.values = list(Precipitation)
class Sky(Model):
cloudness: Cloudness
+5 -1
View File
@@ -1,8 +1,12 @@
from typing import Self
from gallery.sketch.weather.model import WindDirection, WindDirectionDeg
class ParseError(Exception):
pass
@classmethod
def invalid_date(cls, date_str: str) -> Self:
return cls("Invalid date string", date_str)
WIND_DIRECTION_MAP: dict[str, WindDirection] = {
+2 -4
View File
@@ -50,13 +50,11 @@ def merge_weather_values(date: datetime.datetime, values: list[WeatherValue]) ->
result.wind_speed = round(statistics.mean(wind_speeds))
result.wind_gust = round(statistics.mean(wind_gusts))
result.wind_direction = statistics.mean(wind_directions)
# TODO: merge cloudnesses
for item in cloudnesses:
if item != Cloudness.CLEAR:
if Cloudness.values.index(item) > Cloudness.values.index(result.sky.cloudness):
result.sky.cloudness = item
# TODO: merge precipitations
for item in precipitations:
if item != Precipitation.NO:
if Precipitation.values.index(item) > Precipitation.values.index(result.sky.precipitation):
result.sky.precipitation = item
result.precipitation = precipitation
return result