#!/usr/bin/python2
# -*- coding: utf-8 -*-

from __future__ import unicode_literals
from __future__ import print_function

import codecs
import json
import re

import requests

def geocode_nominatim(address):
    r = requests.get('http://nominatim.openstreetmap.org/search',
                     params=dict(q=address, format='json'))
    data = json.loads(r.text)
    if not data:
        return None
    return data[0]['lon'], data[0]['lat'], data[0]['display_name']

if __name__ == '__main__':
    for line in codecs.open('hospis_addr.txt', 'r', encoding='utf-8'):
        addr = line.strip()
        components = re.split(
            r'\,|\.|\bул\b|\bд\b|\bг\b|\bпер\b|\bпр-т\b|\bш-е\b|\bпгт\b|' +
            r'\bдом\b|\bб-р\b|\bп\b|\bс\b',
            addr, flags=re.I | re.U)
        components = [s.strip() for s in components]
        components = [s for s in components if s not in {''}]
        components = [s.replace('обл.', 'область') for s in components]
        r = geocode_nominatim(','.join(components)) or ['', '', '']
        print('\t'.join([addr] + list(r)).encode('utf-8'))
