#!/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)