from abc import ABC, abstractmethod import requests # Abstract class for weather class weather(ABC): def __init__(self): self.temp = 0 @abstractmethod def get_temp(self): # update temp pass def temperature(self): self.get_temp() return self.temp # inheriting weather class class weather_met_no(weather): def __init__(self): # constant for location in (latitude, longitude form self.LOCATION = (51.52866, -0.35508) # constant for api request when getting data # uses Norweigen Meterological Institute api # -- todo : reference self.CALL = "https://api.met.no/weatherapi/locationforecast/2.0/compact?lat={}&lon={}".format( self.LOCATION[0], self.LOCATION[1] ) # acceptable header for the API # https://stackoverflow.com/questions/10606133/sending-user-agent-using-requests-library-in-python # https://api.met.no/doc/FAQ self.HEADERS = {"User-Agent": "TopologicalMap"} super.init(self) def get_temperature(self): # https://docs.python-requests.org/en/latest/ try: data = requests.get(self.CALL, headers=self.HEADERS).json()["properties"][ "timeseries" ][0]["data"] return data["instant"]["details"]["air_temperature"] # data['next_1_hours']['summary']['symbol_code'] except: return -1