Files
2025-11-13 21:11:40 +01:00

6.2 KiB

TCX Parser - Instruktioner

Översikt

parse_tcx.py är ett script som extraherar all viktig träningsdata från stora TCX-filer och skapar kompakta JSON-sammanfattningar.

Storlek:

  • TCX-fil: ~1.3 MB
  • JSON-fil: ~8 KB
  • Besparing: 99.4% mindre!

Installation

Scripten kräver bara Python 3 och Bash (ingen extra paket).

# Gör scripten körbara (behöver bara göras en gång)
chmod +x scripts/parse_tcx.py
chmod +x scripts/parse_all_tcx.sh
chmod +x scripts/quick_parse.sh

Optional: Lägg till alias i din shell

För extra bekvämlighet, lägg till detta i din ~/.bashrc eller ~/.zshrc:

# Lägg till i ~/.bashrc eller ~/.zshrc
source ~/Documents/training/scripts/aliases.sh

Efter detta kan du använda korta kommandon som parse-all istället för bash scripts/parse_all_tcx.sh.

Användning

🚀 Rekommenderat: Automatisk parsning av alla filer

Enklast - kör detta efter varje träning:

./scripts/parse_all_tcx.sh

eller (om du laddat alias):

parse-all

Detta script:

  • Hittar alla TCX-filer i Data/training/
  • Parsar bara filer som inte redan har JSON-motsvarigheter
  • Uppdaterar JSON om TCX-filen är nyare
  • Ger en fin sammanfattning av vad som gjordes

Output:

🔍 Söker efter TCX-filer i Data/training

📝 Parsar ny fil: activity_20922168380.tcx
✓ Redan parsad: activity_12345678901.tcx

════════════════════════════════════════
📊 Sammanfattning
════════════════════════════════════════
Total TCX-filer funna:    2
Redan parsade:            1
Nyligen parsade:          1

✅ Klart! 1 fil(er) parsade.

Snabbparsning av senaste filen

Bara vill parsa den senaste TCX-filen?

./scripts/quick_parse.sh

eller:

parse-latest

🎯 Parsa en specifik fil

python3 scripts/parse_tcx.py Data/training/activity_20922168380.tcx

eller:

parse-tcx Data/training/activity_20922168380.tcx

Output:

Parsar Data/training/activity_20922168380.tcx...
✓ Klar! Sammanfattning sparad i: Data/training/activity_20922168380.tcx.json

Snabb sammanfattning:
  Sport: Biking
  Datum: 2025-11-07
  Tid: 29:42
  Distans: 11.51 km
  Genomsnittshastighet: 23.3 km/h
  Genomsnittspuls: 161.2 bpm
  Max puls: 184 bpm
  Genomsnittseffekt: 106.0 W

Data som extraheras

JSON-filen innehåller:

1. Grundläggande info

  • Sport (Biking, Running, Swimming, etc.)
  • Datum och tid
  • Total tid, distans, hastighet
  • Kalorier

2. Pulsdata

  • Genomsnitt, min, max puls
  • Pulszonfördelning (%) - mycket viktigt för analys!
    • Zon 1: <110 bpm (Återhämtning)
    • Zon 2: 110-129 bpm (Grundträning)
    • Zon 3: 129-147 bpm (Tempo)
    • Zon 4: 147-166 bpm (Högt tempo)
    • Zon 5: >166 bpm (Maximum)

3. Effektdata (om tillgänglig)

  • Genomsnitt, min, max watt

4. Kadansdata

  • Genomsnitt, min, max rpm

5. Höjddata

  • Min, max höjd
  • Total stigning

6. Varvdata

  • Detaljerad data för varje varv/intervall

Använda JSON-filen för analys

När du vill att jag ska analysera ett träningspass:

Istället för att be mig läsa den stora TCX-filen:

"Kan du analysera activity_20922168380.tcx?" ❌

Be mig läsa JSON-filen:

"Kan du analysera activity_20922168380.tcx.json?" ✅

Fördelar:

  • 99.4% mindre fil = mycket snabbare
  • Färre tokens = sparar kostnader
  • Alla viktiga data finns kvar
  • Lättare att läsa för både människa och AI

Exempel: Komplett workflow

Workflow 1: Automatiskt (Rekommenderat)

  1. Exportera träning från Garmin/Strava/Zwift som TCX
  2. Spara i Data/training/
    mv ~/Downloads/activity_12345.tcx Data/training/
    
  3. Parsa alla nya filer
    parse-all    # eller: ./scripts/parse_all_tcx.sh
    
  4. Be Claude om analys
    "Kan du analysera Data/training/activity_12345.tcx.json?"
    

Workflow 2: Snabb (för senaste filen)

  1. Exportera och spara TCX-fil
    mv ~/Downloads/activity_*.tcx Data/training/
    
  2. Parsa senaste filen
    parse-latest    # eller: ./scripts/quick_parse.sh
    
  3. Be Claude om analys - filnamnet visas i output

Workflow 3: Manuellt (specifik fil)

  1. Exportera träning från Garmin/Strava/Zwift som TCX
  2. Spara i Data/training/
    mv ~/Downloads/activity_12345.tcx Data/training/
    
  3. Parsa TCX-filen
    parse-tcx Data/training/activity_12345.tcx
    
  4. Be om analys
    "Kan du analysera Data/training/activity_12345.tcx.json?"
    

Uppdatera pulszoner

Om din maxpuls ändras (t.ex. ny maxpuls 190 bpm), uppdatera zonerna i scriptet:

Öppna scripts/parse_tcx.py och ändra raderna ~107-111:

# Gamla zoner (baserat på maxpuls 184 bpm)
zone1 = sum(1 for hr in hr_data if hr < 110)
zone2 = sum(1 for hr in hr_data if 110 <= hr < 129)
zone3 = sum(1 for hr in hr_data if 129 <= hr < 147)
zone4 = sum(1 for hr in hr_data if 147 <= hr < 166)
zone5 = sum(1 for hr in hr_data if hr >= 166)

# Nya zoner (exempel för maxpuls 190 bpm)
zone1 = sum(1 for hr in hr_data if hr < 114)  # <60%
zone2 = sum(1 for hr in hr_data if 114 <= hr < 133)  # 60-70%
zone3 = sum(1 for hr in hr_data if 133 <= hr < 152)  # 70-80%
zone4 = sum(1 for hr in hr_data if 152 <= hr < 171)  # 80-90%
zone5 = sum(1 for hr in hr_data if hr >= 171)  # >90%

Eller använd dynamiska zoner baserat på uppmätt maxpuls - kontakta mig om du vill ha den funktionen!

Felsökning

Problem: Fel: Filen X hittades inte

  • Kolla att sökvägen är korrekt
  • Använd relativ sökväg från repository-roten

Problem: Ingen aktivitet hittades i TCX-filen

  • TCX-filen kan vara korrupt
  • Kontrollera att den är exporterad korrekt från din enhet

Problem: Script kraschar

  • Rapportera felet så fixar jag det!

Framtida förbättringar

Möjliga tillägg:

  • Auto-detektera maxpuls och beräkna dynamiska zoner
  • Markdown-export istället för JSON
  • Automatisk uppdatering av träningsdagbok
  • Jämförelse mellan flera pass
  • Graf-generering (puls över tid, etc.)

Support

Vid problem eller frågor, kontakta Claude Code!