Advertisement
Guest User

IP Geolocation Checker

a guest
Aug 3rd, 2016
473
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.71 KB | None | 0 0
  1. #!/usr/bin/python3
  2.  
  3. import requests
  4. import argparse
  5. from html.parser import HTMLParser
  6.  
  7.  
  8. class DirtyWttrParser(HTMLParser):
  9.     def __init__(self):
  10.         HTMLParser.__init__(self)
  11.         self.start = False
  12.         self.stop = False
  13.         self.weather = str()
  14.  
  15.     def is_doable(self):
  16.         return self.start + self.stop
  17.  
  18.     def handle_starttag(self, tag, attrs):
  19.         if tag == 'pre':
  20.             self.start = True
  21.  
  22.     def handle_endtag(self, tag):
  23.         if tag == 'pre':
  24.             self.stop = True
  25.  
  26.     def handle_data(self, data):
  27.         if self.is_doable() == 1:
  28.             self.weather += data
  29.  
  30.  
  31. def get_data(url, type):
  32.     try:
  33.         r = requests.get(url)
  34.     except Exception as e:
  35.         print("[-] Failed fetching data")
  36.         print(e)
  37.         return
  38.     if type == 'json':
  39.         return r.json()
  40.     elif type == 'html':
  41.         return r.text
  42.  
  43.  
  44. def main():
  45.     # parse script args (IP)
  46.     argsp = argparse.ArgumentParser()
  47.     argsp.add_argument("ip", help="IP to check", type=str)
  48.     args = argsp.parse_args()
  49.  
  50.     # init components
  51.     ip_to_check = args.ip
  52.     url_geoip = 'http://freegeoip.net/json/'
  53.     url_wttr = 'http://wttr.in/'
  54.     url_maps = 'https://www.google.com/maps?z=12&t=m&q=loc:@'
  55.     parser = DirtyWttrParser()
  56.  
  57.     # get info
  58.     ip_info = get_data(url_geoip + ip_to_check, 'json')
  59.     parser.feed(get_data(url_wttr + '@' + ip_to_check, 'html'))
  60.  
  61.     # display info
  62.     print('-' * 50)
  63.  
  64.     for k, v in ip_info.items():
  65.         print('{}: {}'.format(k, v))
  66.  
  67.     print(parser.weather)
  68.  
  69.     print('{}{},{}'.format(url_maps, ip_info['latitude'], ip_info['longitude']))
  70.  
  71.     print('-' * 50)
  72.  
  73. if __name__ == '__main__':
  74.     main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement