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(ip)
response = response.country.name
return response
except:
return 'NA'
country(ip, 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(ip, reader=geoip2.database.Reader('GeoIP2-City.mmdb'))
'Puerto Rico'
Can someone help with this?
CodePudding user response:
You pass a list to the function, so you need to do ip[0] or change it inside the function to use lists
CodePudding user response:
In line:
response = reader.city(ip)
ip is not defined.
CodePudding user response:
First, you need to pass the ip as a string, not as a list, since your function is only designed to return the location of one IP:
ip = '24.171.221.56'
Second, it should be ip, not ipa. Your function argument must match the variable you're using inside it, and the argument you send must match what you've defined outside. It's best to standardize them all to ip.
ip = '24.171.221.56'
def country(ip, reader):
try:
response = reader.city(ip)
response = response.country.name
return response
except:
return 'NA'
country(ip, reader=geoip2.database.Reader('GeoIP2-City.mmdb'))
