Dask_bot/cogs/weather.py

35 lines
1.1 KiB
Python

import requests
import os
from geopy.geocoders import Nominatim
from dotenv import load_dotenv
#Dans ce fichier avec le token de openweather, cet classe fait appel au API quand l'utilisateur tape le nom de la ville souhaité, et puis récupère et renvoi le résultat en json
load_dotenv()
WEATHER_TOKEN = os.getenv("WEATHER_TOKEN")
class OpenWeatherMapAPIClient:
def __init__(self, api_token, name):
self.base_url = "https://api.openweathermap.org"
self._api_token = WEATHER_TOKEN
self.name = name
def get_geodata(self, location):
geolocator = Nominatim(user_agent=self.name)
geodata = geolocator.geocode(location, language="en-us").raw
return geodata["lat"], geodata["lon"]
def get_current_weather(self, location, units="metric"):
url = f"{self.base_url}/data/2.5/weather"
lat, lon = self.get_geodata(location)
params = {
"lat": lat,
"lon": lon,
"units": units,
"appid": self._api_token,
}
response = requests.get(url, params=params)
data = response.json()
return data