This commit is contained in:
Patrick_Pluto 2024-10-09 18:35:38 +02:00
parent 5570e9de7c
commit 281d786c19
2 changed files with 41 additions and 35 deletions

View file

@ -157,11 +157,12 @@ class API:
@self.app.route("/interstellar_ai/api/weather", methods=["POST"]) @self.app.route("/interstellar_ai/api/weather", methods=["POST"])
def get_weather(): def get_weather():
unit_type = request.args.get("unit_type") sent_data = request.get_json()
city = request.args.get("city") unit_type = sent_data.get("unit_type")
return jsonify( city = sent_data.get("city")
{"status": 200, "response": self.weather.getweather(unit_type, 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) self.app.run(debug=True, host="0.0.0.0", port=5000)

View file

@ -1,10 +1,12 @@
import python_weather import python_weather
import asyncio
class Weather: class Weather:
@staticmethod @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": if unit_type == "imperial":
unit_type = python_weather.IMPERIAL unit_type = python_weather.IMPERIAL
elif unit_type == "metric": elif unit_type == "metric":
@ -14,26 +16,29 @@ class Weather:
weather = await client.get(city) weather = await client.get(city)
data = { data = {
'temperature': weather.temperature, "temperature": weather.temperature,
'humidity': weather.humidity, "humidity": weather.humidity,
'unit': weather.unit, "unit": weather.unit,
'datetime': weather.datetime, "datetime": weather.datetime,
'coordinates': weather.coordinates, "coordinates": weather.coordinates,
'country': weather.country, "country": weather.country,
'daily_forecasts': weather.daily_forecasts, "daily_forecasts": weather.daily_forecasts,
'description': weather.description, "description": weather.description,
'feels_like': weather.feels_like, "feels_like": weather.feels_like,
'kind': weather.kind, "kind": weather.kind,
'local_population': weather.local_population, "local_population": weather.local_population,
'locale': weather.locale, "locale": weather.locale,
'location': weather.location, "location": weather.location,
'precipitation': weather.precipitation, "precipitation": weather.precipitation,
'pressure': weather.pressure, "pressure": weather.pressure,
'region': weather.region, "region": weather.region,
'ultraviolet': weather.ultraviolet, "ultraviolet": weather.ultraviolet,
'visibility': weather.visibility, "visibility": weather.visibility,
'wind_direction': weather.wind_direction, "wind_direction": weather.wind_direction,
'wind_speed': weather.wind_speed, "wind_speed": weather.wind_speed,
} }
return data return data
# Run the asynchronous function and return the result
return asyncio.run(fetch_weather(unit_type))