262 lines
6.2 KiB
Markdown
262 lines
6.2 KiB
Markdown
# 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).
|
|
|
|
```bash
|
|
# 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`:
|
|
|
|
```bash
|
|
# 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:**
|
|
|
|
```bash
|
|
./scripts/parse_all_tcx.sh
|
|
```
|
|
|
|
eller (om du laddat alias):
|
|
|
|
```bash
|
|
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?
|
|
|
|
```bash
|
|
./scripts/quick_parse.sh
|
|
```
|
|
|
|
eller:
|
|
|
|
```bash
|
|
parse-latest
|
|
```
|
|
|
|
### 🎯 Parsa en specifik fil
|
|
|
|
```bash
|
|
python3 scripts/parse_tcx.py Data/training/activity_20922168380.tcx
|
|
```
|
|
|
|
eller:
|
|
|
|
```bash
|
|
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/**
|
|
```bash
|
|
mv ~/Downloads/activity_12345.tcx Data/training/
|
|
```
|
|
3. **Parsa alla nya filer**
|
|
```bash
|
|
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**
|
|
```bash
|
|
mv ~/Downloads/activity_*.tcx Data/training/
|
|
```
|
|
2. **Parsa senaste filen**
|
|
```bash
|
|
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/**
|
|
```bash
|
|
mv ~/Downloads/activity_12345.tcx Data/training/
|
|
```
|
|
3. **Parsa TCX-filen**
|
|
```bash
|
|
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:
|
|
|
|
```python
|
|
# 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!
|