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"])
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)

View file

@ -1,10 +1,12 @@
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":
@ -14,26 +16,29 @@ class Weather:
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,
"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
# Run the asynchronous function and return the result
return asyncio.run(fetch_weather(unit_type))