3 # needs ~/seepark.ini with
7 # 3319578 for Obsteig, AT
9 from pprint import pprint
15 baseurl = 'http://api.openweathermap.org/data/2.5/weather'
18 def getweather(apikey, cityid):
19 query = baseurl + '?units=metric&APPID={}&id={}&lang=de'.format(apikey, cityid)
21 response = requests.get(query)
22 if response.status_code != 200:
26 weatherdata = response.json()
28 except requests.exceptions.RequestException as error:
33 def fromtimestamp(timestamp, format):
34 return datetime.datetime.fromtimestamp(timestamp).strftime(format)
37 # https://stackoverflow.com/questions/7490660/converting-wind-direction-in-angles-to-text-words
38 def degToCompass(num):
41 val=int((num/22.5)+.5)
42 arr=["N","NNO","NO","ONO","O","OSO", "SO", "SSO","S","SSW","SW","WSW","W","WNW","NW","NNW"]
43 return arr[(val % 16)]
46 def extractweatherdata(w):
48 datetime = w.get('dt'),
49 sunrise = w.get('sys').get('sunrise'),
50 sunset = w.get('sys').get('sunset'),
51 temp = w.get('main').get('temp'),
52 pressure = w.get('main').get('pressure'),
53 humidity = w.get('main').get('humidity'),
54 visibility = w.get('visibility'),
55 weather=w['weather'][0]['description'],
56 sky=w['weather'][0]['main'],
57 windspeed=w.get('wind').get('speed'),
58 winddegrees=w.get('wind').get('deg'),
59 cloudiness=w.get('clouds').get('all'),
63 data['sunrise_t'] = fromtimestamp(data['sunrise'], '%H:%M:%S')
64 data['sunset_t'] = fromtimestamp(data['sunset'], '%H:%M:%S')
65 data['date'] = fromtimestamp(data['datetime'], '%Y-%m-%d')
66 data['time'] = fromtimestamp(data['datetime'], '%H:%M:%S')
67 data['winddirection'] = degToCompass(data['winddegrees'])
68 if not data['rain'] is None:
69 data['precipitation']=data['rain'].get('3h')
71 data['precipitation']='N/A'
77 config = configparser.ConfigParser()
78 config.read(os.path.expanduser('~/seewasser.ini'))
79 apikey = config.get('openweathermap', 'apikey');
80 cityid = config.get('openweathermap', 'cityid');
82 weather_raw = getweather(apikey, cityid)
85 weather = extractweatherdata(weather_raw)
92 # output like wetter.at.pl
94 weather['date'] + ';' +
95 weather['time'] + ';' +
96 weather['sunrise_t'] + ';' +
97 weather['sunset_t'] + ';' +
98 str(weather['temp']) + ';' +
99 str(weather['precipitation']) + ' mm/h;' +
100 str(weather['windspeed']) + ' km/h ' + weather['winddirection'] + ';' +
101 weather['weather'] + ';' +
102 str(weather['cloudiness'])
106 if __name__ == '__main__':