I’m trying to find the Country name for the given IP address using the ‘GeoIP2-City.mmdb’ file.
Ex: IP: 24.171.221.56, I need to get ‘Puerto Rico’. But this isn’t working when I passed the IP address in a function.
ipa = ['24.171.221.56'] def country(ipa, reader): try: response = reader.city(ipa) response = response.country.name return response except: return 'NA' country(ipa, reader=geoip2.database.Reader('GeoIP2-City.mmdb')) 'NA'
However, If I use the actual IP address in the function it is returning ‘Puerto Rico’
ipa = ['24.171.221.56'] def country(ipa, reader): try: response = reader.city('24.171.221.56') response = response.country.name return response except: return 'NA' country(ipa, reader=geoip2.database.Reader('GeoIP2-City.mmdb')) 'Puerto Rico'
Can someone help with this?
Advertisement
Answer
You can try the following code snippet.
Code:
import geoip2.database as ip_db ip_list = ['24.171.221.56', '81.212.104.158', '90.183.159.46'] def country(ip_list, reader): country_dict = {} for ip in ip_list: try: response = reader.city(ip) country = response.country.name country_dict[ip] = country except: country_dict[ip] = 'NA' return country_dict print(country(ip_list, reader=ip_db.Reader('GeoIP2-City.mmdb')))
Output:
{'24.171.221.56': 'Puerto Rico', '81.212.104.158': 'Turkey', '90.183.159.46': 'Czechia'}