Skip to content
Merged
2 changes: 1 addition & 1 deletion irc2phpbb/data/marvin_strings.json
Original file line number Diff line number Diff line change
Expand Up @@ -206,7 +206,7 @@

"smhi": {
"station_url": "https://opendata-download-metobs.smhi.se/api/version/1.0/parameter/13/station/65090/period/latest-hour/data.json",
"current_weather_url": "https://opendata-download-metfcst.smhi.se/api/category/pmp3g/version/2/geotype/point/lon/15.5890/lat/56.1500/data.json",
"current_weather_url": "https://opendata-download-metobs.smhi.se/api/version/1.0/parameter/1/station/65090/period/latest-hour/data.json",
"weather_codes_url": "https://opendata-download-metobs.smhi.se/api/version/1.0/parameter/13/codes.json",
"failed": "Något har hänt med SMHI, de svarar inte."
},
Expand Down
12 changes: 4 additions & 8 deletions irc2phpbb/marvin_actions.py
Original file line number Diff line number Diff line change
Expand Up @@ -295,28 +295,24 @@ def marvinWeather(row):
"""
msg = ""
if any(r in row for r in ["väder", "vädret", "prognos", "prognosen", "smhi"]):
forecast = ""
temperature = ""
observation = ""

try:
station_req = requests.get(getString("smhi", "station_url"), timeout=5)
weather_code:int = int(station_req.json().get("value")[0].get("value"))
weather_code: int = int(station_req.json().get("value")[0].get("value"))

weather_codes_req = requests.get(getString("smhi", "weather_codes_url"), timeout=5)
weather_codes_arr: list = weather_codes_req.json().get("entry")

current_weather_req = requests.get(getString("smhi", "current_weather_url"), timeout=5)
current_w_data: list = current_weather_req.json().get("timeSeries")[0].get("parameters")

for curr_w in current_w_data:
if curr_w.get("name") == "t":
forecast = curr_w.get("values")[0]
temperature: str = current_weather_req.json().get("value")[0].get("value")

for code in weather_codes_arr:
if code.get("key") == weather_code:
observation = code.get("value")

msg = f"Karlskrona just nu: {forecast} °C. {observation}."
msg = f"Karlskrona just nu: {temperature} °C. {observation}."

except Exception as e:
LOG.error("Failed to get weather: %s", e)
Expand Down
251 changes: 66 additions & 185 deletions tests/resources/weather/weather.json
Original file line number Diff line number Diff line change
@@ -1,191 +1,72 @@
{
"approvedTime": "2024-10-23T19:30:09Z",
"referenceTime": "2024-10-23T19:00:00Z",
"geometry": {
"type": "Point",
"coordinates": [
[
15.582146,
56.14957
]
]
"updated": 1787346000000,
"parameter": {
"key": "1",
"name": "Lufttemperatur",
"summary": "momentanvärde, 1 gång/tim",
"unit": "celsius"
},
"timeSeries": [
"station": {
"key": "65090",
"name": "Karlskrona-Söderstjerna",
"owner": "Försvarsmakten",
"ownerCategory": "CLIMATE",
"measuringStations": "CORE",
"height": 2
},
"period": {
"key": "latest-hour",
"from": 1787342401000,
"to": 1787346000000,
"summary": "Data från senaste timmen",
"sampling": "Ej angivet"
},
"position": [
{
"from": 1267401600000,
"to": 1787347212000,
"height": 2.4,
"latitude": 56.15,
"longitude": 15.589
}
],
"link": [
{
"href": "https://opendata-download-metobs.smhi.se/api/version/1.0/parameter/1/station/65090/period/latest-hour/data.json",
"rel": "data",
"type": "application/json"
},
{
"href": "https://opendata-download-metobs.smhi.se/api/version/1.0/parameter/1/station/65090/period/latest-hour/data.xml",
"rel": "data",
"type": "application/xml"
},
{
"href": "https://opendata-download-metobs.smhi.se/api/version/1.0/parameter/1/station/65090/period/latest-hour/data.csv",
"rel": "data",
"type": "text/plain"
},
{
"href": "https://opendata-download-metobs.smhi.se/api/version/1.0/parameter/1/station/65090/period/latest-hour.atom",
"rel": "period",
"type": "application/atom+xml"
},
{
"href": "https://opendata-catalog.smhi.se/md/25080190-38ba-4279-a65d-d9ef8d0bf949",
"rel": "iso19139",
"type": "application/vnd.iso.19139+xml"
},
{
"href": "https://opendata-catalog.smhi.se/md/c6ae10b6-6a18-4e15-9444-fbd746f4609d",
"rel": "iso19139",
"type": "application/vnd.iso.19139+xml"
}
],
"value": [
{
"validTime": "2024-10-23T20:00:00Z",
"parameters": [
{
"name": "spp",
"levelType": "hl",
"level": 0,
"unit": "percent",
"values": [
-9
]
},
{
"name": "pcat",
"levelType": "hl",
"level": 0,
"unit": "category",
"values": [
0
]
},
{
"name": "pmin",
"levelType": "hl",
"level": 0,
"unit": "kg/m2/h",
"values": [
0.0
]
},
{
"name": "pmean",
"levelType": "hl",
"level": 0,
"unit": "kg/m2/h",
"values": [
0.0
]
},
{
"name": "pmax",
"levelType": "hl",
"level": 0,
"unit": "kg/m2/h",
"values": [
0.0
]
},
{
"name": "pmedian",
"levelType": "hl",
"level": 0,
"unit": "kg/m2/h",
"values": [
0.0
]
},
{
"name": "tcc_mean",
"levelType": "hl",
"level": 0,
"unit": "octas",
"values": [
3
]
},
{
"name": "lcc_mean",
"levelType": "hl",
"level": 0,
"unit": "octas",
"values": [
0
]
},
{
"name": "mcc_mean",
"levelType": "hl",
"level": 0,
"unit": "octas",
"values": [
0
]
},
{
"name": "hcc_mean",
"levelType": "hl",
"level": 0,
"unit": "octas",
"values": [
3
]
},
{
"name": "t",
"levelType": "hl",
"level": 2,
"unit": "Cel",
"values": [
11.7
]
},
{
"name": "msl",
"levelType": "hmsl",
"level": 0,
"unit": "hPa",
"values": [
1031.3
]
},
{
"name": "vis",
"levelType": "hl",
"level": 2,
"unit": "km",
"values": [
38.5
]
},
{
"name": "wd",
"levelType": "hl",
"level": 10,
"unit": "degree",
"values": [
260
]
},
{
"name": "ws",
"levelType": "hl",
"level": 10,
"unit": "m/s",
"values": [
7.7
]
},
{
"name": "r",
"levelType": "hl",
"level": 2,
"unit": "percent",
"values": [
83
]
},
{
"name": "tstm",
"levelType": "hl",
"level": 0,
"unit": "percent",
"values": [
0
]
},
{
"name": "gust",
"levelType": "hl",
"level": 10,
"unit": "m/s",
"values": [
10.1
]
},
{
"name": "Wsymb2",
"levelType": "hl",
"level": 0,
"unit": "category",
"values": [
2
]
}
]
"date": 1787346000000,
"value": "16.6",
"quality": "G"
}
]
}
4 changes: 2 additions & 2 deletions tests/test_weather.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ def testWeatherRequest(self):
self.executeAction(marvin_actions.marvinWeather, "väder")
for url in ["https://opendata-download-metobs.smhi.se/api/version/1.0/parameter/13/station/65090/period/latest-hour/data.json",
"https://opendata-download-metobs.smhi.se/api/version/1.0/parameter/13/codes.json",
"https://opendata-download-metfcst.smhi.se/api/category/pmp3g/version/2/geotype/point/lon/15.5890/lat/56.1500/data.json"]:
"https://opendata-download-metobs.smhi.se/api/version/1.0/parameter/1/station/65090/period/latest-hour/data.json"]:
self.assertTrue(mock.call(url, timeout=5) in r.get.call_args_list)

def testWeatherResponse(self):
Expand All @@ -35,5 +35,5 @@ def testWeatherResponse(self):

with mock.patch("irc2phpbb.marvin_actions.requests") as r:
r.get.side_effect = responses
expected = "Karlskrona just nu: 11.7 °C. Inget signifikant väder observerat."
expected = "Karlskrona just nu: 16.6 °C. Inget signifikant väder observerat."
self.assertActionOutput(marvin_actions.marvinWeather, "väder", expected)
Loading