-
Notifications
You must be signed in to change notification settings - Fork 2
/
maps.py
48 lines (35 loc) · 1.37 KB
/
maps.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import json
import time
import requests
from customLogging import get_logger, DEBUG
from db import dbHelper
from params import config, root_dir
from pincode_data import get_address_by_pincode
from util import get_key
logger = get_logger('maps', path=root_dir, log_level=5)
token = config['mapbox_key']
def update_pincode_maps_info(pincode):
params = {
'types': 'place',
'country': 'IN',
'worldview': 'in'
}
query = get_address_by_pincode(pincode)
url = f"https://api.mapbox.com/geocoding/v5/mapbox.places/{query}.json?access_token={token}"
response = requests.get(url, params)
if response.status_code == 200:
data = json.loads(response.content.decode())
features = get_key(data, ['features'])
if len(features) > 0:
feature_max_relevance = max(features, key=lambda x: x['relevance'])
ret = dbHelper.update_pincode_info_set(pincode, {'mapboxFeatures': json.dumps(feature_max_relevance)})
if ret > 0:
logger.log(DEBUG, f'Failed to update for pincode [{pincode}].')
def run():
pincodes = dbHelper.get_pincode_info_all(filters={'mapboxFeatures': {'$exists': 0}}, sort=[('_id', 1)])
for pincode_info in pincodes:
pincode = int(pincode_info['pincode'])
update_pincode_maps_info(pincode)
time.sleep(1)
if __name__ == '__main__':
run()