50 lines
1.6 KiB
YAML
50 lines
1.6 KiB
YAML
apiVersion: v1
|
|
kind: ConfigMap
|
|
metadata:
|
|
name: garmin-sync-script
|
|
namespace: garmin
|
|
data:
|
|
sync.py: |
|
|
import os
|
|
import json
|
|
import time
|
|
from datetime import date, timedelta
|
|
from garminconnect import Garmin
|
|
|
|
email = os.environ["GARMIN_EMAIL"]
|
|
password = os.environ["GARMIN_PASSWORD"]
|
|
|
|
client = Garmin(email, password)
|
|
for attempt in range(5):
|
|
try:
|
|
client.login()
|
|
print(f"Login erfolgreich (Versuch {attempt + 1})")
|
|
break
|
|
except Exception as e:
|
|
if "429" in str(e):
|
|
wait = 60 * (attempt + 1)
|
|
print(f"Rate limited (429), warte {wait}s...")
|
|
time.sleep(wait)
|
|
else:
|
|
raise
|
|
else:
|
|
raise Exception("Login nach 5 Versuchen fehlgeschlagen")
|
|
|
|
d = (date.today() - timedelta(days=1)).isoformat()
|
|
print(f"=== Debug fuer {d} ===")
|
|
|
|
for name, fn, args in [
|
|
("stats", client.get_stats, [d]),
|
|
("stress", client.get_stress_data, [d]),
|
|
("bb", client.get_body_battery, [d, d]),
|
|
("spo2", client.get_spo2_data, [d]),
|
|
("resp", client.get_respiration_data, [d]),
|
|
("hrv", client.get_hrv_data, [d]),
|
|
("sleep", client.get_sleep_data, [d]),
|
|
]:
|
|
try:
|
|
result = fn(*args)
|
|
print(f"\n=== {name} ===")
|
|
print(json.dumps(result, indent=2, default=str)[:3000])
|
|
except Exception as e:
|
|
print(f"\n=== {name} FEHLER: {e} ===") |