feat(weather): wehaer value sky model instead of text cloudness

This commit is contained in:
2024-07-26 18:25:15 +03:00
parent f711b2d77b
commit 48a6cce569
6 changed files with 135 additions and 47 deletions

View File

@@ -1,38 +1,39 @@
def wind_direction_icon(wind_direction: str) -> str:
from weather.model import Cloudness, Precipitation, Sky, WindDirection
def wind_direction_icon(wind_direction: WindDirection) -> str:
return {
"С": "🡫",
"СВ": "🡯",
"В": "🡨",
"ЮВ": "🡬",
"Ю": "🡡",
"ЮЗ": "🡭",
"З": "🡪",
"СЗ": "🡦",
"штиль": "",
WindDirection.N: "🡫",
WindDirection.NO: "🡯",
WindDirection.O: "🡨",
WindDirection.SO: "🡬",
WindDirection.S: "🡡",
WindDirection.SW: "🡭",
WindDirection.W: "🡪",
WindDirection.NW: "🡦",
WindDirection.CALM: "",
}.get(wind_direction, wind_direction)
def cloudness_icon(cloudness: str) -> list[str]:
icons = []
values = {item.strip().lower() for item in cloudness.split(",")}
if "дымка" in values:
def cloudness_icon(sky: Sky) -> list[str]:
main_icon = ""
if sky.thunder:
if sky.cloudness == Cloudness.CLEAR:
main_icon = "🌩️"
if sky.precipitation == Precipitation.NO:
main_icon = ""
else:
main_icon = "⛈️"
elif sky.precipitation == Precipitation.NO:
main_icon = {
Cloudness.CLEAR: "☀️",
Cloudness.PARTLY_CLOUDY: "🌤️",
Cloudness.CLOUDY: "",
Cloudness.MAINLY_CLOUDY: "☁️",
}[sky.cloudness]
else:
main_icon = "🌧️"
icons = [main_icon]
if sky.fog:
icons.append("🌫️")
values.remove("дымка")
icons = [
{
frozenset(["ясно"]): "☀️",
frozenset(["малооблачно", "без осадков"]): "🌤️",
frozenset(["облачно", "без осадков"]): "",
frozenset(["малооблачно", "небольшой дождь"]): "🌦️",
frozenset(["пасмурно", "без осадков"]): "☁️",
frozenset(["облачно", "небольшой дождь"]): "🌧️",
frozenset(["облачно", "дождь"]): "🌧️",
frozenset(["облачно", "небольшой дождь", "гроза"]): "⛈️",
frozenset(["малооблачно", "дождь"]): "🌦️",
frozenset(["пасмурно", "небольшой дождь"]): "🌧️",
frozenset(["облачно", "дождь", "гроза"]): "⛈️",
frozenset(["пасмурно", "дождь"]): "🌧️",
frozenset(["пасмурно", "дождь", "гроза"]): "⛈️",
}.get(frozenset(values), "|".join(values))
] + icons
return icons

View File

@@ -44,7 +44,7 @@
<tr>
{% for value in response.values %}
<td class="cloudness">
{% for icon in value.cloudness | cloudness_icon %}
{% for icon in value.sky | cloudness_icon %}
<div class="icon">{{icon}}</div>
{% endfor %}
</td>
@@ -76,7 +76,6 @@
{% for value in response.values %}
<td class="wind">
<span class="icon">{{value.wind_direction | wind_direction_icon}}</span>
<span class="direction">{{value.wind_direction}}</span>
</td>
{% endfor %}
</tr>