hacks/geolocate/geolocate.py

45 lines
1.1 KiB
Python
Executable File

#!/usr/bin/env python
import requests
import subprocess
import sys
import json
import re
import time
import datetime
import os
def main():
ts = int(datetime.datetime.now().strftime("%s"))
loc = geolocate(wifidata=listAccessPoints())
loc['timestamp'] = ts
loc = json.dumps(loc)
path = os.path.expanduser('~/.data/location')
writeFile(os.path.join(path, 'latest.json'), loc)
writeFile(os.path.join(path, "%i.json" % ts), loc)
def writeFile(fn,content):
with open(fn,'w') as f:
f.write(content)
def geolocate(wifidata=None):
url = "https://location.services.mozilla.com/v1/geolocate?key=test"
postdata = { }
if wifidata:
postdata['wifiAccessPoints'] = wifidata
return requests.post(url, data=json.dumps(postdata)).json()
def listAccessPoints():
bssids = []
cmd = "nmcli -t d list".split(' ')
output = subprocess.check_output(cmd)
for line in output.split('\n'):
m = re.match('AP\[\d+\]\.BSSID\:(\S+)',line)
if m:
bssids.append(m.group(1))
if len(bssids) < 2:
return None
return [ {'macAddress': x} for x in bssids ]
sys.exit(main())