#!/usr/bin/env python3 ''' Get weatherdata from yr.no ''' import os import sys import requests from common import dbi lat = str(os.environ['el_yr_lat']) lon = str(os.environ['el_yr_lon']) pg_db = os.environ['el_pg_db'] pg_host = os.environ['el_pg_host'] pg_table = "yr" 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) if response.status_code != 200: print(response.status_code) print("Oh shit") response.raise_for_status() except Exception 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"],details["air_temperature"],details["air_pressure_at_sea_level"],details["cloud_area_fraction"],details["relative_humidity"],details["wind_from_direction"],details["wind_speed"])) sql = "INSERT INTO " + pg_table + """ VALUES(%s,%s,%s,%s,%s,%s,%s) ON CONFLICT (time) 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()""" dbi(sql, values, verbose=True)