52 lines
1.5 KiB
Python
52 lines
1.5 KiB
Python
import requests
|
|
from bs4 import BeautifulSoup
|
|
from time import sleep
|
|
|
|
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')
|
|
sleep(300) |