summaryrefslogtreecommitdiff
path: root/weather.py
blob: c7276fee29c529244213d19dc4bd1b04b265c3ae (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
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