Как перевести координаты в место

в ходе работы появилась потребность узнать в каком городе(районе) находится пользователь приложения, и все что я нашел это только код что бы узнать свой ip

import geocoder
g = geocoder.ip('me')
print(g.latlng)

Теперь новый вопрос: как мне получить название города по IP?


Ответы (3 шт):

Автор решения: CrazyElf

Смотрите, что есть в g.geojson (я смотрю в Google Colab):

{'features': [{'geometry': {'coordinates': [-95.8608, 41.2619],
    'type': 'Point'},
   'properties': {'address': 'Council Bluffs, Iowa, US',
    'city': 'Council Bluffs',
    'country': 'US',
    'hostname': '63.121.122.34.bc.googleusercontent.com',
    'ip': '34.122.121.63',
    'lat': 41.2619,
    'lng': -95.8608,
    'ok': True,
    'org': 'AS15169 Google LLC',
    'postal': '51502',
    'raw': {'city': 'Council Bluffs',
     'country': 'US',
     'hostname': '63.121.122.34.bc.googleusercontent.com',
     'ip': '34.122.121.63',
     'loc': '41.2619,-95.8608',
     'org': 'AS15169 Google LLC',
     'postal': '51502',
     'readme': 'https://ipinfo.io/missingauth',
     'region': 'Iowa',
     'timezone': 'America/Chicago'},
    'state': 'Iowa',
    'status': 'OK'},
   'type': 'Feature'}],
 'type': 'FeatureCollection'}

Город тут лежит в g.geojson['features'][0]['properties']['city']: Council Bluffs.

Но можно и короче через g.city город получить, как написано в другом ответе. В общем, вся инфа там есть, читайте доки.

→ Ссылка
Автор решения: Roman Konoval

У объекта, который возвращает geocoder.ip есть полезные свойства:

  • address
  • city
  • country
  • state

и другие

Обращаться так:

import geocoder
g = geocoder.ip('me')
print(g.city)
→ Ссылка
Автор решения: Polina St.

Если через IPinfo.io, то https://ipinfo.io/IP_address/city?token=TOKEN Этот запрос выдаст только город, без остальной ненужной информации. Токен с 50к запросов бесплатный, потом можно перейти на платный план с 250к. Пример без токена: https://ipinfo.io/1.1.1.1/city И тогда не нужно координаты в город конвертить.

→ Ссылка