diff --git a/freegeoip.py b/freegeoip.py index 92704e0..3343727 100755 --- a/freegeoip.py +++ b/freegeoip.py @@ -16,6 +16,7 @@ from urllib import urlopen from csv import reader +import json import sys import re @@ -28,7 +29,7 @@ __status__ = "Development" FREE_GEOIP_CSV_URL = "http://freegeoip.net/csv/%s" - +FREE_GEOIP_JSON_URL = "http://freegeoip.net/json/%s" def valid_ip(ip): @@ -57,8 +58,17 @@ def __get_geodata_csv(ip): "longitude":csv_data[9] } +def __get_geodata_json(ip): + if not valid_ip(ip): + raise Exception('Invalid IP format', 'You must enter a valid ip format: X.X.X.X') + + URL = FREE_GEOIP_JSON_URL % ip + #response_json = json.loads(urlopen(URL)) + response_json = urlopen(URL); + return json.loads(response_json.read()) + def get_geodata(ip): - return __get_geodata_csv(ip) + return __get_geodata_json(ip) if __name__ == "__main__": #code to execute if called from command-line intput_ip = sys.argv[1]