#!/bin/bash echo "🔧 Repariere Crumbforest Token-Logs mit eingebetteten JSON-Strings …" LOG_DIRS=( "/home/zero/.bugsy_logs" "/home/zero/.deepbit_logs" "/home/zero/.dumbo_logs" "/home/zero/.funkfox_logs" "/home/zero/.pepper_logs" "/home/zero/.schnecki_logs" "/home/zero/.schnippsi_logs" "/home/zero/.schraubaer_logs" "/home/zero/.snake_logs" "/home/zero/.taube_logs" "/home/zero/.templatus_logs" "/home/zero/.tobi_logs" ) for dir in "${LOG_DIRS[@]}"; do FILE="$dir/token_log.json" if [ -f "$FILE" ]; then echo "🔍 Prüfe $FILE …" TMP="$FILE.fixed" # Filter & reparieren Zeile für Zeile jq -c '.' "$FILE" 2>/dev/null | while read -r line; do usage_raw=$(echo "$line" | jq -r '.usage') if [[ "$usage_raw" =~ ^\{.*\}$ ]]; then # usage ist korrektes Objekt – direkt übernehmen echo "$line" >> "$TMP" else # usage ist String – versuche zu reparieren usage_fixed=$(echo "$usage_raw" | jq '.' 2>/dev/null) if [ $? -eq 0 ]; then zeit=$(echo "$line" | jq -r '.zeit') rolle=$(echo "$line" | jq -r '.rolle') jq -n \ --arg zeit "$zeit" \ --arg rolle "$rolle" \ --argjson usage "$usage_fixed" \ '{zeit: $zeit, rolle: $rolle, usage: $usage}' >> "$TMP" else echo "⚠️ Ungültige Zeile übersprungen in $FILE:" echo "$line" fi fi done # Nur ersetzen, wenn wir etwas geschrieben haben if [ -s "$TMP" ]; then mv "$TMP" "$FILE" echo "✅ Repariert: $FILE" else echo "ℹ️ Keine gültigen Einträge in $FILE" rm -f "$TMP" fi else echo "❌ Datei nicht gefunden: $FILE" fi done echo "🎉 Alle Token-Logs geprüft und repariert (sofern nötig)."