first commit
This commit is contained in:
@@ -0,0 +1,261 @@
|
||||
# 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!
|
||||
Reference in New Issue
Block a user