Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python3
- import requests
- import argparse
- from html.parser import HTMLParser
- class DirtyWttrParser(HTMLParser):
- def __init__(self):
- HTMLParser.__init__(self)
- self.start = False
- self.stop = False
- self.weather = str()
- def is_doable(self):
- return self.start + self.stop
- def handle_starttag(self, tag, attrs):
- if tag == 'pre':
- self.start = True
- def handle_endtag(self, tag):
- if tag == 'pre':
- self.stop = True
- def handle_data(self, data):
- if self.is_doable() == 1:
- self.weather += data
- def get_data(url, type):
- try:
- r = requests.get(url)
- except Exception as e:
- print("[-] Failed fetching data")
- print(e)
- return
- if type == 'json':
- return r.json()
- elif type == 'html':
- return r.text
- def main():
- # parse script args (IP)
- argsp = argparse.ArgumentParser()
- argsp.add_argument("ip", help="IP to check", type=str)
- args = argsp.parse_args()
- # init components
- ip_to_check = args.ip
- url_geoip = 'http://freegeoip.net/json/'
- url_wttr = 'http://wttr.in/'
- url_maps = 'https://www.google.com/maps?z=12&t=m&q=loc:@'
- parser = DirtyWttrParser()
- # get info
- ip_info = get_data(url_geoip + ip_to_check, 'json')
- parser.feed(get_data(url_wttr + '@' + ip_to_check, 'html'))
- # display info
- print('-' * 50)
- for k, v in ip_info.items():
- print('{}: {}'.format(k, v))
- print(parser.weather)
- print('{}{},{}'.format(url_maps, ip_info['latitude'], ip_info['longitude']))
- print('-' * 50)
- if __name__ == '__main__':
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement