import urllib.request, json, datetime,os from urllib.error import URLError, HTTPError from tinydb import TinyDB, Query folder = 'solar_server_stats' now = datetime.datetime.now() day = now.strftime('%F') url = 'https://solar.lowtechmagazine.com/api/stats.json' if not os.path.exists(folder): os.mkdir(folder) db = TinyDB(os.path.join(folder,day+'-stats.json')) request = urllib.request.Request(url) stats = {} try: response = urllib.request.urlopen(request) except HTTPError as e: print('The server couldn\'t fulfill the request.') print('Error code: ', e.code) error = e.code stats['server'] = None pass except URLError as e: print('We failed to reach a server.') print('Reason: ', e.reason) error = e.reason stats['server'] = None pass else: # everything is fine data = response.read().decode('utf-8') stats['server'] = json.loads(data) error = None if error: stats['error'] = error.args[1] else: stats['error'] = error stats['day'] = day stats['time'] = now.strftime('%H:%M') db.insert(stats)