Histoires d'un sportif perfectionniste sous pression

3 avril 2022 - Frédéric Zind - JDLL

logo JDLL 2022

Comment garder le contrôle sur les données que je partage avec des services en ligne?

python logo git logo GPX logo click logo froggit logo gitlab logo

👨 Qui suis-je ?

  • 🔧 2000: technicien en mécanique
  • 🐍 2018: apprenti charmeur de serpent
  • 🧰 2019: dev django
  • 🚑️ 2020: Soigneur de pool ZFS (sys admin)

⚠️ Avertissement ⚠️

Projet expérimental en cours de développement

  • …mais je le présente quand même 😜

💡 L'idée

  • 🔌 Services en ligne
  • 🛂 Données personnelles
  • 📈 Carnet d'entraînement
  • 😷 Covid

🌐 GNSS

  • Global Navigation Satellite System
  • Géolocalisation et Navigation par un Système de Satellites

GPS / GLONASS / Beidou / Compass / Galileo / IRNS / SQZSS

  • 🇺🇸 GPS
  • 🇷🇺 GLONASS
  • 🇨🇳 Beidou
  • 🇨🇳 Compass
  • 🇪🇺 Galileo
  • 🇮🇳 IRNS
  • 🇯🇵 SQZSS

🌍 GPS

🛰️ / 🕑 / 📐

constellation satellites GPS

📁 GPX

  • GPS eXchange Format
  • basé sur XML
  • format ouvert
  • waypoints, routes et tracks
  • source: www.topografix.com/gpx.asp

📁 GPX

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<gpx xmlns="http://www.topografix.com/GPX/1/1" creator="byHand" version="1.1"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd">

  <wpt lat="39.921055008" lon="3.054223107">
    <ele>12.863281</ele>
    <time>2005-05-16T11:49:06Z</time>
    <name>Cala Sant Vicenç - Mallorca</name>
    <sym>City</sym>
  </wpt>
</gpx>

🛂 Données personnelles directes

  • géolocalisés: Où, quand, combien de temps, vitesse, etc.
  • santé: fréquence cardiaque, cadence de pédalage
  • sociale: avec qui?

🛂 Données personnelles indirectes

  • heure de connexion (ponctuelle / en direct)
  • habitude d'entraînement/déplacement
  • lieu(x) d'habitation(s)

✨ Fonctionnalités

  • Créer un activité
  • Calculer les caractéristiques d'un fichier GPX
    • s'en servir pour créer une activité
  • Nettoyer une trace GPX, avant de l'envoyer
    • supprimer début / fin /arrêt(s)
    • changer l'heure de départ
  • Traiter des lots de fichier

Talk is cheap. Show me the code.

lab.frogg.it/fcode/geostrapy

froggit logo

🐍 Les dépendances

  • gpxpy : traitement données GPX
    • lxml / minidom
    • unittest
  • strava-cli : CLI pour l'API Strava
    • requests
    • click
    • pas de tests 😱

🌳 Organisation du code

user@laptop ~/git/geostrapy % tree
.
├── cli
│   ├── api.py
│   ├── commands.py
│   ├── gpx.py
│   └── main.py
├── docs
│   └── PITCHME.md
├── Makefile
├── README.md
├── requirements-dev.txt
├── requirements.txt
└── setup.cfg

🤝 Collaborer

🪝 Les hook git

user@laptop ~/git/geostrapy % cat .git/hooks/pre-commit
make --no-print-directory lint

🪝 Les hook git

user@laptop ~/git/geostrapy % git ci
~/.venvs/geostrapy/bin/black --check --quiet cli/*.py
~/.venvs/geostrapy/bin/flake8 --config=setup.cfg
~/.venvs/geostrapy/bin/pydocstyle
~/.venvs/geostrapy/bin/pylint --rcfile=setup.cfg cli/*.py
[pitchme a8eecca] 🚧 WIP: Fix page skip missing
 1 file changed, 3 insertions(+)

🔧 Makefile

user@laptop ~/git/geostrapy % make help
help       Print help on Makefile
open_all   Open all projects files
pre_commit Run the pre-commit hook
clean      Remove files not tracked in source control
lint       Lint code

⁉️ Questions, remarques, réclamations, …

QRcode

http://pro.zind.fr

©️ Crédits