brim-to-influx/main.py
2022-01-14 00:55:20 -05:00

52 lines
1.5 KiB
Python

import requests
from bs4 import BeautifulSoup
from datetime import time
from influxdb import InfluxDBClient
def uploadInflux(data, host='10.0.5.51', port=8086): # Main upload
json_body = [
{
"measurement": "liftdata",
"tags": {
'resort': 'brimbacombe',
},
"fields": {
'trails-day' : int(data['trails-day']),
'trails-night' :int(data['trails-night']),
'open-parks' : int(data['open-parks']),
'lift-day' : int(data['lift-day']),
'lift-night' : int(data['lift-night']),
'snowflake' : data['snowflake'],
}
}
]
client = InfluxDBClient(host, port, database = "telegraf") # Init connection to Influx Server
client.write_points(json_body) # Write Speedtest results
def main():
URL = "https://brimacombe.ca/snow-conditions-and-trails"
r = requests.get(URL)
soup = BeautifulSoup(r.content, 'html5lib')
table = soup.find_all('div', attrs = {'class':'condition-item'})
infodict = {}
for item in table:
title = item.find('img')['src'].replace('/a/img/icon-', '').replace('.png', '')
value = str(item.find('span')).replace('<span>','').replace('</span>', '').strip()
infodict[title] = value
# for item in infodict:
# print('{}: {}'.format(item, infodict[item]))
uploadInflux(infodict)
# print(table)
while True:
main()
print('DATA FETCHED AND UPLOADEDED')
time.sleep(10000)