id,node_id,number,title,user,state,locked,assignee,milestone,comments,created_at,updated_at,closed_at,author_association,pull_request,body,repo,type,active_lock_reason,performed_via_github_app,reactions,draft,state_reason
1557599877,I_kwDODFE5qs5c1xaF,12,location history changes,14809320,open,0,,,0,2023-01-26T03:57:25Z,2023-01-26T03:57:25Z,,NONE,,"not sure if each download is unique, but I had to change some things to work with the takeout zip I made 2023-01-25

filename changed from ""Location History.json"" to ""Records.json""

`""timestampMs""` is not present, `""timestamp""` is roughly iso timestamp

```py
def get_timestamp_ms(raw_timestamp):
    try:
        return datetime.datetime.strptime(raw_timestamp, ""%Y-%m-%dT%H:%M:%SZ"").timestamp()
    except ValueError:
        return datetime.datetime.strptime(raw_timestamp, ""%Y-%m-%dT%H:%M:%S.%fZ"").timestamp()

def save_location_history(db, zf):
    location_history = json.load(
        zf.open(""Takeout/Location History/Records.json"")
    )
    db[""location_history""].upsert_all(
        (
            {
                ""id"": id_for_location_history(row),
                ""latitude"": row[""latitudeE7""] / 1e7,
                ""longitude"": row[""longitudeE7""] / 1e7,
                ""accuracy"": row[""accuracy""],
                ""timestampMs"": get_timestamp_ms(row[""timestamp""]),
                ""when"": row[""timestamp""],
            }
            for row in location_history[""locations""]
        ),
        pk=""id"",
    )


def id_for_location_history(row):
    # We want an ID that is unique but can be sorted by in
    # date order - so we use the isoformat date + the first
    # 6 characters of a hash of the JSON
    first_six = hashlib.sha1(
        json.dumps(row, separators=("","", "":""), sort_keys=True).encode(""utf8"")
    ).hexdigest()[:6]
    return ""{}-{}"".format(
        row['timestamp'],
        first_six,
    )
```

example locations from mine

```json
{
    ""latitudeE7"": 427220206,
    ""longitudeE7"": -923423972,
    ""accuracy"": 10,
    ""deviceTag"": -1312429967,
    ""deviceDesignation"": ""PRIMARY"",
    ""timestamp"": ""2019-01-08T23:31:50.867Z""
  }
```

```json
{
    ""latitudeE7"": 427011317,
    ""longitudeE7"": -923448300,
    ""accuracy"": 5,
    ""deviceTag"": -1312429967,
    ""deviceDesignation"": ""PRIMARY"",
    ""timestamp"": ""2019-01-08T23:33:53Z""
  }, 
```",206649770,issue,,,"{""url"": ""https://api.github.com/repos/dogsheep/google-takeout-to-sqlite/issues/12/reactions"", ""total_count"": 2, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 2}",,