* adding ruff auto check for pull requests as well as fixing all ruff errors * More ruff fixes: forgot half of the ruff checks Forgot to do a git add all :D --------- Co-authored-by: Kadir <git@k8n.dev>
83 lines
2.6 KiB
Python
83 lines
2.6 KiB
Python
import requests
|
|
from utils import nextMonday
|
|
from collections import defaultdict
|
|
|
|
API_KEY = "AIzaSyBoBHzeQFgR7O-NlNsuHXQcC1B7ccEHpl8"
|
|
url = "https://routes.googleapis.com/directions/v2:computeRoutes"
|
|
|
|
|
|
def travel_time(origin_lat: float, origin_lon: float, dest_lat: float, dest_lon: float):
|
|
monday9am = nextMonday()
|
|
|
|
header = {
|
|
"X-Goog-Api-Key": API_KEY,
|
|
"Content-Type": "application/json",
|
|
"X-Goog-FieldMask": "routes.distanceMeters,routes.duration,routes.staticDuration,routes.legs.steps.distanceMeters,routes.legs.steps.staticDuration,routes.legs.steps.travelMode",
|
|
}
|
|
|
|
body = {
|
|
"origin": {
|
|
"location": {"latLng": {"latitude": origin_lat, "longitude": origin_lon}}
|
|
},
|
|
"destination": {
|
|
"location": {"latLng": {"latitude": dest_lat, "longitude": dest_lon}}
|
|
},
|
|
"travelMode": "TRANSIT",
|
|
# "2023-10-15T15:01:23.045123456Z"
|
|
"departureTime": monday9am.strftime("%Y-%m-%dT%H:%M:%S.%fZ"),
|
|
"computeAlternativeRoutes": False,
|
|
# "routeModifiers": {
|
|
# "avoidTolls": false,
|
|
# "avoidHighways": false,
|
|
# "avoidFerries": false
|
|
# },
|
|
"languageCode": "en-US",
|
|
"units": "METRIC",
|
|
}
|
|
|
|
r = requests.post(url, json=body, headers=header)
|
|
if r.status_code == 200:
|
|
return r.json()
|
|
|
|
raise Exception(r.json())
|
|
|
|
|
|
def extract_time(d):
|
|
r = d["routes"][0]
|
|
print(r.keys())
|
|
distance = r["distanceMeters"]
|
|
duration = r["duration"]
|
|
duration_static = r["staticDuration"]
|
|
|
|
steps = r["legs"][0]["steps"]
|
|
# print(steps)
|
|
duration_per_transit = defaultdict(lambda: 0)
|
|
distance_per_transit = defaultdict(lambda: 0)
|
|
|
|
for step in steps:
|
|
duration_per_transit[step["travelMode"]] += int(
|
|
step["staticDuration"].strip("s")
|
|
)
|
|
distance_per_transit[step["travelMode"]] += step.get("distanceMeters", 0)
|
|
|
|
print(
|
|
f"dis {distance}, dur {duration}, duration per transit {dict(duration_per_transit)}, distance per transit {dict(distance_per_transit)}, duration_static {duration_static}"
|
|
)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
import json
|
|
|
|
with open("code/json/routing_routeapi.json", "r") as f:
|
|
d = json.load(f)
|
|
|
|
extract_time(d)
|
|
|
|
|
|
# if __name__ == "__main__":
|
|
# origin = 51.5635664310333, -0.1107173751570373 # home
|
|
# dest = 51.50475678313417, 0.04915321000190009 # london city airport
|
|
# d = travel_time(origin[0], origin[1], dest[0], dest[1])
|
|
# import json
|
|
# with open('code/json/routing_routeapi.json', 'w') as f:
|
|
# json.dump(d, f)
|