Commit 9a35b066 authored by Dominik Rosiek's avatar Dominik Rosiek
parents e4c65369 f07a1cb3
......@@ -3,20 +3,22 @@ import requests
import time
from tornado.ioloop import IOLoop
from functools import partial
from db import DDBstations, DDBtypes, DDBmeasurements, DDBlastmeasurements
from db import DDBstations, DDBtypes
from dateutil.parser import parse
import models
from tornado.gen import coroutine
def get_station_by_id(station_id, station_data):
for station in station_data:
if str(station['api_station_id']) == station_id:
return station['station_id']
return models.Station.get(station['station_id'])
def get_type_by_name(type_name, type_data):
for type in type_data:
if type['shortname'] == type_name:
return type['type_id']
return models.Type.get(type['type_id'])
def get_timestamp_from_datetime(datetime_string):
......@@ -24,33 +26,30 @@ def get_timestamp_from_datetime(datetime_string):
return time.mktime(dt.timetuple())
ioloop = IOLoop.instance()
measurements = DDBmeasurements()
last_measurements = DDBlastmeasurements()
stations = DDBstations()
types = DDBtypes()
@coroutine
def main(ioloop):
stations = DDBstations()
types = DDBtypes()
apiURL = "http://powietrze.malopolska.pl/_powietrzeapi/api/dane?act=danemiasta&ci_id=1"
apiURL = "http://powietrze.malopolska.pl/_powietrzeapi/api/dane?act=danemiasta&ci_id=1"
r = requests.get(apiURL)
actual_data = r.json()['dane']['actual']
r = requests.get(apiURL)
actual_data = r.json()['dane']['actual']
station_data = ioloop.run_sync(partial(stations.get_all))
type_data = ioloop.run_sync(partial(types.get_all))
station_data = ioloop.run_sync(partial(stations.get_all))
type_data = ioloop.run_sync(partial(types.get_all))
for station_measurements in actual_data:
for station_measurements in actual_data:
for measurement in station_measurements['details']:
try:
ready_station_id = get_station_by_id(measurement['st_id'], station_data)
ready_type_id = get_type_by_name(measurement['par_name'], type_data)
ready_station = get_station_by_id(measurement['st_id'], station_data)
ready_type = get_type_by_name(measurement['par_name'], type_data)
ready_measurement_value = measurement['o_value']
ready_measurement_timestamp = get_timestamp_from_datetime(measurement['o_czas'])
if ready_station_id and ready_type_id and ready_measurement_value and ready_measurement_timestamp:
ioloop.run_sync(partial(measurements.add, station_id=ready_station_id, type_id=ready_type_id,
value=ready_measurement_value, measurement_time=ready_measurement_timestamp))
ioloop.run_sync(partial(last_measurements.add, station_id=ready_station_id, type_id=ready_type_id,
value=ready_measurement_value, measurement_time=ready_measurement_timestamp))
if ready_station and ready_type and ready_measurement_value and ready_measurement_timestamp:
measurement = models.Measurement(station=ready_station, pollution_type=ready_type,
value=ready_measurement_value, time=ready_measurement_timestamp)
yield measurement.save()
except Exception:
pass
ioloop = IOLoop.instance()
IOLoop.current().run_sync(main(ioloop))
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment