diff --git a/irc2phpbb/data/marvin_strings.json b/irc2phpbb/data/marvin_strings.json index 556dc5a..9797511 100644 --- a/irc2phpbb/data/marvin_strings.json +++ b/irc2phpbb/data/marvin_strings.json @@ -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." }, diff --git a/irc2phpbb/marvin_actions.py b/irc2phpbb/marvin_actions.py index 5326ab6..c16920a 100644 --- a/irc2phpbb/marvin_actions.py +++ b/irc2phpbb/marvin_actions.py @@ -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) diff --git a/tests/resources/weather/weather.json b/tests/resources/weather/weather.json index 7f07039..aceb7ba 100644 --- a/tests/resources/weather/weather.json +++ b/tests/resources/weather/weather.json @@ -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" } ] } diff --git a/tests/test_weather.py b/tests/test_weather.py index 981f0f9..6e74304 100644 --- a/tests/test_weather.py +++ b/tests/test_weather.py @@ -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): @@ -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)