oedb-backend/extractors/bison_fute/bisonfute_previ.py
2025-09-17 23:52:49 +02:00

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)))