46 lines
1.3 KiB
Python
46 lines
1.3 KiB
Python
from pymongo import MongoClient
|
|
from shapely.geometry import Polygon, mapping
|
|
from alphashape import alphashape
|
|
import stravalib
|
|
from datetime import datetime
|
|
from dotenv import load_dotenv
|
|
from os import getenv
|
|
import matplotlib.pyplot as plt
|
|
|
|
load_dotenv()
|
|
|
|
|
|
client = stravalib.client.Client()
|
|
client.refresh_access_token(getenv("STRAVA_CLIENT_ID"), getenv("STRAVA_CLIENT_SECRET"), getenv("REFRESH_TOKEN"))
|
|
mongo = MongoClient("mongodb://databaseuser:databasepass@localhost:27017/")
|
|
db = mongo["turfrun"]
|
|
|
|
def save_claimed_land(player_id, coordinates):
|
|
"""Saves a newly claimed territory to the database."""
|
|
land_collection = db.turf
|
|
polygon = {
|
|
"type": "Polygon",
|
|
"coordinates": [coordinates] # Ensure it's a list of rings
|
|
}
|
|
land_document = {
|
|
"owner_id": player_id,
|
|
"geometry": polygon,
|
|
"claimed_at": datetime.utcnow()
|
|
# Add other relevant properties like score contribution, etc.
|
|
}
|
|
land_collection.insert_one(land_document)
|
|
|
|
|
|
streams = client.get_activity_streams(14171406402)
|
|
|
|
coords = streams["latlng"].data
|
|
print("made it 1")
|
|
coords = alphashape(coords, 1000)
|
|
print("made it 2")
|
|
# coords = mapping(coords)["coordinates"][0]
|
|
for i in coords.geoms:
|
|
print(type(i))
|
|
coords = [(lon, lat) for lat, lon in coords]
|
|
save_claimed_land(1, coords)
|
|
|
|
mongo.close() |