#!/usr/bin/env python3 ''' Get weatherdata from yr.no ''' import os import sys import common import requests location = int(os.environ['el_location']) lat = str(os.environ['el_yr_lat']) lon = str(os.environ['el_yr_lon']) apiUrl = "https://api.met.no/weatherapi/locationforecast/2.0/compact?lat=" + lat + "&lon=" + lon ### Get the data try: url = apiUrl # Request headers hdr = { 'User-Agent': 'gratis.morell@litepost.no', 'Cache-Control': 'no-cache', } response = requests.get(url, headers=hdr, timeout=10) if response.status_code != 200: print(response.status_code) print("Oh shit") response.raise_for_status() except requests.exceptions.RequestException as e: print("oh lol") sys.exit(e) data = response.json() ### insert data into database values = [] for item in data["properties"]["timeseries"]: details = item["data"]["instant"]["details"] values.append(( item["time"], location, details["air_temperature"], details["air_pressure_at_sea_level"], details["cloud_area_fraction"], details["relative_humidity"], details["wind_from_direction"], details["wind_speed"])) # SQL sql = """INSERT INTO yr ( time, location, air_temperature, air_pressure_at_sea_level, cloud_area_fraction, relative_humidity, wind_from_direction, wind_speed) VALUES(%s, %s, %s, %s, %s, %s, %s, %s) ON CONFLICT (time, location) DO UPDATE SET air_temperature=EXCLUDED.air_temperature, air_pressure_at_sea_level=EXCLUDED.air_pressure_at_sea_level, cloud_area_fraction=EXCLUDED.cloud_area_fraction, relative_humidity=EXCLUDED.relative_humidity, wind_from_direction=EXCLUDED.wind_from_direction, wind_speed=EXCLUDED.wind_speed, updated=now()""" common.dbi(sql, values, verbose=True)