# Command line
PHONE_ID=... python main.py
# Command line
PHONE_ID=... python main.py
#! /usr/bin/env python | |
# coding: utf-8 | |
import os | |
import requests | |
from bs4 import BeautifulSoup | |
from datetime import datetime, timedelta | |
_url = 'https://measurements.mobile-alerts.eu' | |
_phoneId = os.environ.get('PHONE_ID') | |
def getSensorName(sensor): | |
if 'date' in sensor.text: | |
return 'Date' | |
return sensor.text | |
def getSummary(): | |
r = requests.get( | |
'{}/Home/SensorsOverview?phoneid={}'.format(_url, _phoneId)) | |
return [getDetail(sensor) | |
for sensor in BeautifulSoup(r.text, 'html.parser').find_all('div', 'sensor')] | |
def getDetail(sensor): | |
post_data = { | |
'fromepoch': (datetime.now() - timedelta(days=1)).timestamp(), | |
'toepoch': datetime.now().timestamp(), | |
'pagesize': 250 | |
} | |
r = requests.post('{}{}'.format(_url, sensor.a['href']), data=post_data) | |
soup = BeautifulSoup(r.text, 'html.parser').find( | |
'form', {'id': 'MeasurementDetails'}) | |
header = [getSensorName(h) for h in soup.select( | |
'table thead tr th:nth-child(1n+2)')] | |
for line in soup.select('table tbody tr'): | |
publishIntoDb({ | |
"measurement": "mobilealerts", | |
"fields": { header[i]: td.text for i, td in enumerate(line.select('td:nth-child(1n+2)')) }, | |
"tags": { | |
"location": sensor.a.text, | |
}, | |
"date": line.select('td')[0].text, | |
}) | |
def publishIntoDb(data): | |
print(data) | |
# TODO: write here code to publish into influxDb | |
if __name__ == "__main__": | |
getSummary() |
requests | |
beautifulsoup4 |