rscmbbng
6 years ago
2 changed files with 25 additions and 21 deletions
@ -1,3 +1,4 @@ |
|||||
__pychache__ |
__pychache__ |
||||
solar_server_stats/* |
solar_server_stats/* |
||||
*.json |
*.json |
||||
|
*.db |
||||
|
@ -1,52 +1,55 @@ |
|||||
import urllib.request, json, datetime,os |
import urllib.request, json, datetime,os |
||||
from urllib.error import URLError, HTTPError |
from urllib.error import URLError, HTTPError |
||||
from tinydb import TinyDB, Query |
import sqlite3 |
||||
|
|
||||
folder = 'solar_server_stats' |
|
||||
now = datetime.datetime.now() |
now = datetime.datetime.now() |
||||
day = now.strftime('%F') |
day = now.strftime('%F') |
||||
|
time = now.strftime('%H:%M') |
||||
|
|
||||
url = 'https://solar.lowtechmagazine.com/api/stats.json' |
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')) |
if not os.path.exists('stats.db'): |
||||
|
db = sqlite3.connect('stats.db') |
||||
|
c = db.cursor() |
||||
|
c.execute("""CREATE TABLE stats(date text, time text, error text, server text) |
||||
|
""") |
||||
|
db.commit() |
||||
|
else: |
||||
|
db = sqlite3.connect('stats.db') |
||||
|
c = db.cursor() |
||||
|
|
||||
|
|
||||
request = urllib.request.Request(url) |
|
||||
|
|
||||
stats = {} |
request = urllib.request.Request(url) |
||||
|
|
||||
try: |
try: |
||||
response = urllib.request.urlopen(request) |
response = urllib.request.urlopen(request) |
||||
|
|
||||
except HTTPError as e: |
except HTTPError as e: |
||||
# print('The server couldn\'t fulfill the request.') |
print('The server couldn\'t fulfill the request.') |
||||
# print('Error code: ', e.code) |
print('Error code: ', e.code) |
||||
error = e.code |
error = e.code |
||||
stats['server'] = None |
server = None |
||||
pass |
pass |
||||
except URLError as e: |
except URLError as e: |
||||
# print('We failed to reach a server.') |
print('We failed to reach a server.') |
||||
# print('Reason: ', e.reason) |
print('Reason: ', e.reason) |
||||
error = e.reason |
error = e.reason |
||||
stats['server'] = None |
server = None |
||||
pass |
pass |
||||
|
|
||||
|
|
||||
else: |
else: |
||||
# everything is fine |
# everything is fine |
||||
data = response.read().decode('utf-8') |
data = response.read().decode('utf-8') |
||||
stats['server'] = json.loads(data) |
server = data |
||||
error = None |
error = None |
||||
|
|
||||
if error: |
if error: |
||||
stats['error'] = error.args[1] |
error = error.args[1] |
||||
else: |
|
||||
stats['error'] = error |
|
||||
|
|
||||
stats['day'] = day |
|
||||
stats['time'] = now.strftime('%H:%M') |
|
||||
|
|
||||
db.insert(stats) |
|
||||
|
|
||||
|
c.execute("""INSERT INTO stats VALUES(?,?,?,?)""", (day, time, error, server)) |
||||
|
db.commit() |
||||
|
db.close() |
Loading…
Reference in new issue