47 lines
1.7 KiB
Python
47 lines
1.7 KiB
Python
import requests
|
|
import json
|
|
import time
|
|
import csv
|
|
import psycopg2
|
|
|
|
pg = psycopg2.connect("dbname=oedb")
|
|
db = pg.cursor()
|
|
|
|
api = 'http://localhost:8080'
|
|
|
|
with open('bisonfute2016.csv') as csvfile:
|
|
trafic = csv.DictReader(csvfile, delimiter=',', quotechar='"')
|
|
for row in trafic:
|
|
start = '20'+row['date'][6:8]+'/'+row['date'][3:5]+'/'+row['date'][0:2]+'T00:00:00CET'
|
|
stop = '20'+row['date'][6:8]+'/'+row['date'][3:5]+'/'+row['date'][0:2]+'T23:59:59CET'
|
|
for sens in ['aller','retour']:
|
|
if row[sens] != '':
|
|
if row[sens][0]>'A':
|
|
defaut = row[sens][0]
|
|
else:
|
|
defaut = ''
|
|
for zone in range(1,7):
|
|
if row[sens].find(str(zone)):
|
|
couleur = row[sens][row[sens].find(str(zone))+1]
|
|
else:
|
|
couleur = defaut
|
|
if couleur > 'A':
|
|
db.execute('SELECT ST_asgeojson(geom) FROM bison_fute_geo WHERE zone = %s', (str(zone),))
|
|
geo = db.fetchone()
|
|
if geo is not None:
|
|
what = 'traffic.forecast'
|
|
if couleur == 'O':
|
|
what = what + '.orange'
|
|
if couleur == 'R':
|
|
what = what + '.red'
|
|
if couleur == 'N':
|
|
what = what + '.black'
|
|
if sens == 'aller':
|
|
what = what + '.out'
|
|
if sens == 'retour':
|
|
what = what + '.return'
|
|
p = dict(type='forecast',what=what, start=start, stop=stop, source='http://www.bison-fute.gouv.fr')
|
|
geojson = json.dumps(dict(type='Feature',properties=p, geometry=json.loads(geo[0])))
|
|
r = requests.post(api+'/event', data = geojson, )
|
|
print("%s POST: %s %s" % (r.status_code, r.text,json.dumps(p)))
|
|
|