add nominatim-based extract-geo script

master
informatic 2020-04-07 19:34:32 +02:00
parent 817a61c2c7
commit 6b0366ca9e
1 changed files with 31 additions and 0 deletions

View File

@ -1,5 +1,6 @@
import csv
import re
import time
import click
import requests
from flask.cli import AppGroup
@ -97,3 +98,33 @@ def extract_places(apikey):
print(' -> failed (%s)' % (exc,))
db.session.commit()
@cli.command('extract-geo')
def extract_geo():
places = FaceshieldRequest.query.filter(FaceshieldRequest.shipping_latitude == None, FaceshieldRequest.shipping_postalcode != None, FaceshieldRequest.status != Status.rejected, FaceshieldRequest.status != Status.spam).all()
for data in places:
try:
query = {
'postalcode': data.shipping_postalcode,
'format': 'json',
'country': 'Poland',
}
if data.shipping_street:
query['street'] = data.shipping_street
print(' * [%s] %r' % (data.id, query))
resp = requests.get('https://nominatim.openstreetmap.org/search', params=query)
resp_json = resp.json()
if not resp_json:
print(' -> not found')
else:
print(' -> %r' % (resp_json[0],))
data.shipping_latitude = resp_json[0]['lat']
data.shipping_longitude = resp_json[0]['lon']
db.session.commit()
except Exception as exc:
print(' -> failed (%s)' % (exc,))
time.sleep(1.0)