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"} # Call constructor from superclass super().__init__() def get_temp(self): # https://docs.python-requests.org/en/latest/ try: data = requests.get( self.CALL, headers=self.HEADERS ).json()["properties"]["timeseries"][0]["data"] self.temp = data["instant"]["details"]["air_temperature"] # data['next_1_hours']['summary']['symbol_code'] return 0 except: return -1