From 281d786c191dccb1dea8e2f33d7ad9edc2f716f1 Mon Sep 17 00:00:00 2001 From: Patrick_Pluto Date: Wed, 9 Oct 2024 18:35:38 +0200 Subject: [PATCH] work --- py/api.py | 11 +++++---- py/weather.py | 65 +++++++++++++++++++++++++++------------------------ 2 files changed, 41 insertions(+), 35 deletions(-) diff --git a/py/api.py b/py/api.py index 00709ad..089e617 100644 --- a/py/api.py +++ b/py/api.py @@ -157,11 +157,12 @@ class API: @self.app.route("/interstellar_ai/api/weather", methods=["POST"]) def get_weather(): - unit_type = request.args.get("unit_type") - city = request.args.get("city") - return jsonify( - {"status": 200, "response": self.weather.getweather(unit_type, city)} - ) + sent_data = request.get_json() + unit_type = sent_data.get("unit_type") + city = sent_data.get("city") + weather_data = self.weather.getweather(unit_type, city) + print(type(weather_data)) + return jsonify({"status": 200, "response": weather_data}) self.app.run(debug=True, host="0.0.0.0", port=5000) diff --git a/py/weather.py b/py/weather.py index bb390c5..29f101c 100644 --- a/py/weather.py +++ b/py/weather.py @@ -1,39 +1,44 @@ import python_weather +import asyncio class Weather: @staticmethod - async def getweather(unit_type, city): + def getweather(unit_type, city): + # Define an inner asynchronous function + async def fetch_weather(unit_type): + if unit_type == "imperial": + unit_type = python_weather.IMPERIAL + elif unit_type == "metric": + unit_type = python_weather.METRIC - if unit_type == "imperial": - unit_type = python_weather.IMPERIAL - elif unit_type == "metric": - unit_type = python_weather.METRIC + async with python_weather.Client(unit=unit_type) as client: + weather = await client.get(city) - async with python_weather.Client(unit=unit_type) as client: - weather = await client.get(city) + data = { + "temperature": weather.temperature, + "humidity": weather.humidity, + "unit": weather.unit, + "datetime": weather.datetime, + "coordinates": weather.coordinates, + "country": weather.country, + "daily_forecasts": weather.daily_forecasts, + "description": weather.description, + "feels_like": weather.feels_like, + "kind": weather.kind, + "local_population": weather.local_population, + "locale": weather.locale, + "location": weather.location, + "precipitation": weather.precipitation, + "pressure": weather.pressure, + "region": weather.region, + "ultraviolet": weather.ultraviolet, + "visibility": weather.visibility, + "wind_direction": weather.wind_direction, + "wind_speed": weather.wind_speed, + } - data = { - 'temperature': weather.temperature, - 'humidity': weather.humidity, - 'unit': weather.unit, - 'datetime': weather.datetime, - 'coordinates': weather.coordinates, - 'country': weather.country, - 'daily_forecasts': weather.daily_forecasts, - 'description': weather.description, - 'feels_like': weather.feels_like, - 'kind': weather.kind, - 'local_population': weather.local_population, - 'locale': weather.locale, - 'location': weather.location, - 'precipitation': weather.precipitation, - 'pressure': weather.pressure, - 'region': weather.region, - 'ultraviolet': weather.ultraviolet, - 'visibility': weather.visibility, - 'wind_direction': weather.wind_direction, - 'wind_speed': weather.wind_speed, - } + return data - return data + # Run the asynchronous function and return the result + return asyncio.run(fetch_weather(unit_type))