add nominatim-based extract-geo script
parent
817a61c2c7
commit
6b0366ca9e
|
@ -1,5 +1,6 @@
|
||||||
import csv
|
import csv
|
||||||
import re
|
import re
|
||||||
|
import time
|
||||||
import click
|
import click
|
||||||
import requests
|
import requests
|
||||||
from flask.cli import AppGroup
|
from flask.cli import AppGroup
|
||||||
|
@ -97,3 +98,33 @@ def extract_places(apikey):
|
||||||
print(' -> failed (%s)' % (exc,))
|
print(' -> failed (%s)' % (exc,))
|
||||||
|
|
||||||
db.session.commit()
|
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)
|
||||||
|
|
Loading…
Reference in New Issue