Alster-Mitte ist Wasser, Tiergarten-Punkt eine ORS-Lücke — beide auf Hundespaziergangs-Klassiker umgesetzt: Stadtpark Hamburg + Tempelhofer Feld Berlin.
82 lines
2.7 KiB
Bash
Executable file
82 lines
2.7 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
#
|
|
# Fügt die zwei in generate_demo_routes.sh fehlgeschlagenen Routen
|
|
# (Hamburg, Berlin) mit korrigierten Koordinaten nach.
|
|
#
|
|
# Hamburg: Stadtpark (statt Alster — die Mitte der Außenalster ist Wasser).
|
|
# Berlin: Tempelhofer Feld (statt Tiergarten-Lücke).
|
|
|
|
set -euo pipefail
|
|
BASE="https://banyaro.app"
|
|
|
|
command -v jq >/dev/null || { echo "❌ jq fehlt"; exit 1; }
|
|
command -v curl >/dev/null || { echo "❌ curl fehlt"; exit 1; }
|
|
|
|
echo "📍 Nachzügler-Routen: Hamburg Stadtpark + Berlin Tempelhofer Feld"
|
|
echo ""
|
|
read -r -p "E-Mail: " EMAIL
|
|
read -r -s -p "Passwort: " PASS; echo ""
|
|
echo ""
|
|
|
|
LOGIN_RESP=$(curl -s -X POST "$BASE/api/auth/login" \
|
|
-H "Content-Type: application/json" \
|
|
-d "$(jq -nc --arg e "$EMAIL" --arg p "$PASS" '{email:$e,password:$p}')")
|
|
TOKEN=$(echo "$LOGIN_RESP" | jq -r '.token // empty')
|
|
if [ -z "$TOKEN" ]; then
|
|
echo "❌ Login fehlgeschlagen:"; echo "$LOGIN_RESP" | jq .; exit 1
|
|
fi
|
|
echo "✓ Eingeloggt"
|
|
|
|
DOG_ID=$(curl -s "$BASE/api/dogs" -H "Authorization: Bearer $TOKEN" | jq -r '.[0].id // empty')
|
|
echo "✓ Hund-ID $DOG_ID"
|
|
echo ""
|
|
|
|
# name | lat | lon | km | seed | is_public
|
|
ROUTES=(
|
|
"Hamburg — Stadtpark-Runde|53.5905|10.0144|4|7|true"
|
|
"Berlin — Tempelhofer Feld|52.4734|13.4023|5|8|true"
|
|
)
|
|
|
|
saved=0
|
|
for entry in "${ROUTES[@]}"; do
|
|
IFS='|' read -r name lat lon km seed pub <<< "$entry"
|
|
printf "→ %-40s " "$name"
|
|
|
|
SUG=$(curl -s -X POST "$BASE/api/routes/suggest" \
|
|
-H "Authorization: Bearer $TOKEN" \
|
|
-H "Content-Type: application/json" \
|
|
-d "$(jq -nc --argjson la "$lat" --argjson lo "$lon" --argjson km "$km" --argjson sd "$seed" \
|
|
'{lat:$la, lon:$lo, distance_km:$km, seed:$sd}')")
|
|
|
|
TRACK=$(echo "$SUG" | jq -c '.gps_track // empty')
|
|
DIST=$( echo "$SUG" | jq -r '.distanz_km // empty')
|
|
DUR=$( echo "$SUG" | jq -r '.dauer_min // empty')
|
|
|
|
if [ -z "$TRACK" ] || [ "$TRACK" = "null" ]; then
|
|
echo "✗ ORS-Fehler:"; echo "$SUG" | jq . | sed 's/^/ /'; continue
|
|
fi
|
|
|
|
BODY=$(jq -nc \
|
|
--arg name "$name" \
|
|
--argjson track "$TRACK" \
|
|
--argjson dist "$DIST" \
|
|
--argjson dur "$DUR" \
|
|
--argjson dog "$DOG_ID" \
|
|
--argjson pub "$pub" \
|
|
'{name:$name, gps_track:$track, distanz_km:$dist, dauer_min:$dur, dog_ids:[$dog], is_public:$pub}')
|
|
|
|
SAVE=$(curl -s -X POST "$BASE/api/routes" \
|
|
-H "Authorization: Bearer $TOKEN" \
|
|
-H "Content-Type: application/json" \
|
|
-d "$BODY")
|
|
RID=$(echo "$SAVE" | jq -r '.id // empty')
|
|
if [ -n "$RID" ] && [ "$RID" != "null" ]; then
|
|
echo "✓ #$RID ($DIST km, $DUR min)"
|
|
saved=$((saved + 1))
|
|
else
|
|
echo "✗ Speichern fehlgeschlagen:"; echo "$SAVE" | jq . | sed 's/^/ /'
|
|
fi
|
|
done
|
|
|
|
echo ""
|
|
echo "Fertig: $saved von ${#ROUTES[@]} nachgezogen."
|