1 from datetime import datetime, timezone
2 from sqlite3 import connect
5 from .gps303proto import *
6 from .opencellid import qry_cell
8 db = connect(sys.argv[1])
11 "select timestamp, imei, clntaddr, length, proto, payload from events"
14 print("""<?xml version="1.0"?>
17 xmlns="http://www.topografix.com/GPX/1/1">
18 <name>Location Data</name>
20 <name>Location Data</name>
24 for timestamp, imei, clntaddr, length, proto, payload in c:
25 msg = make_object(length, proto, payload)
26 if isinstance(msg, (WIFI_POSITIONING, WIFI_OFFLINE_POSITIONING)):
27 lat, lon = qry_cell(sys.argv[2], msg.mcc, msg.gsm_cells)
28 if lat is None or lon is None:
30 elif isinstance(msg, (GPS_POSITIONING, GPS_OFFLINE_POSITIONING)):
31 lat, lon = msg.latitude, msg.longitude
34 isotime = datetime.fromtimestamp(timestamp).astimezone(tz=timezone.utc).isoformat()
35 isotime = isotime[:isotime.rfind(".")] + "Z"
36 trkpt = """ <trkpt lat="{}" lon="{}">
38 </trkpt>""".format(lat, lon, isotime)
42 datetime.fromtimestamp(timestamp)
43 .astimezone(tz=timezone.utc)