-
-
Save Brandon-Clark-00/1673b4d9c5d8575e3569650f6d74cad3 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import json | |
import csv | |
import sys | |
import datetime | |
import os | |
def make_reader(in_json): | |
# Open location history data | |
json_data = json.loads(open(in_json).read()) | |
# Get the easy fields | |
for item in json_data['locations']: | |
print(item['timestamp']) | |
try: | |
dt = datetime.datetime.strptime(item['timestamp'], '%Y-%m-%dT%H:%M:%S.%fZ') | |
except ValueError: | |
dt = datetime.datetime.strptime(item['timestamp'], '%Y-%m-%dT%H:%M:%SZ') | |
date = dt.strftime('%Y-%m-%d') | |
timestamp = dt.strftime('%H:%M:%S') | |
#date = datetime.datetime.fromtimestamp( | |
# item['timestamp']).strftime('%Y-%m-%d') | |
#timestamp = datetime.datetime.fromtimestamp( | |
# item['timestamp']).strftime('%H:%M:%S') | |
longitude = item['longitudeE7']/10000000.0 | |
latitude = item['latitudeE7']/10000000.0 | |
accuracy = item['accuracy'] | |
yield [dt, date, timestamp, longitude, latitude, accuracy] | |
def getFullPath(inPath): | |
if(not os.path.isabs(inPath)): | |
# we need to set up the absolute path | |
script_path = os.path.abspath(__file__) | |
path, file = os.path.split(script_path) | |
inPath = os.path.join(path, inPath) | |
return inPath | |
# Read the Parameters | |
in_file = sys.argv[1] | |
out_file = sys.argv[2] | |
in_file = getFullPath(in_file) | |
out_file = getFullPath(out_file) | |
features = [] | |
# add the Headers | |
features.append(['Datetime', 'Date', 'Time', 'Longitude', 'Latitude', 'Accuracy', 'Activity']) | |
print("Reading {0}".format(in_file)) | |
reader = make_reader(in_file) | |
for r in reader: | |
features.append(r) | |
print('Read {0} Records'.format(len(features)-1)) | |
# write this data | |
with open(out_file, 'w', newline='')as f: | |
writer = csv.writer(f) | |
writer.writerows(features) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
@Brandon-Clark-00 Hello, I just tried to use your fork of this script, but it failed, with:
Upon investigation, it seems that the
Records-003.json
file I got from Google Takeout contains some entries withlatitudeE7
andlongitudeE7
values of0
, and noaccuracy
field.Would you be able to fix the script to address this? Perhaps it could just discard any rows of data which aren't as expected (missing fields,
0
location, etc.).Thanks!