145 lines
5.6 KiB
Markdown
145 lines
5.6 KiB
Markdown
Ce repo *RoadTripsGenerator* est un ensemble de scripts (bash et python) permettant **de** générer automatiquement des sites web complets avec cartes interactives à partir de vos photos, vidéos, trace GPS et récits de voyages.
|
|
|
|
C'est sans prétention et il faudrait probablement faire des développements bien plus sérieux pour obtenir un logiciel "pousse boutons" agréable à utiliser, mais si cela peut donner des idées...
|
|
|
|
Je me suis en effet rendu compte que je passais des heures à faire des montages vidéo de mes road trips pour faire des films que finalement je ne regardais pas moi-**même** : trop longs **mais** pas assez d'infos, pas interactif, etc.
|
|
|
|
Alors je me suis demandé sous quelle forme il faudrait mettre en forme mes road trips, pour pouvoir me les remémorer en famille et les faire partager à d'autres.
|
|
|
|
C'est comme **cela** que ce petit projet a vu le jour.
|
|
|
|
## Le principe
|
|
|
|
Le principe est très simple : je possède des photos et vidéos avec informations GPS de position et de temps (dans mon cas : photos iPhone et films GOPRO), des traces ou parcours GPS quotidiens et un récit écrit en Markdown.
|
|
|
|
Les scripts vont alors générer automatiquement **une** page html avec une carte interactive **permettant** de visualiser les photos, les vidéos **et** les traces GPS du road trip. Voir par exemple mon [road trip de l'été 2025](https://roadtrip.ouaibe.fr/Ete-2025/).
|
|
|
|
Les scripts récupèrent les coordonnées GPS des photos, **vidéos** et les placent sur une carte avec la trace du parcours, assurant un découpage quotidien pour marquer les étapes**,** et construisent des pages web interactives **où** l'on peut, en parallèle, consulter le récit du voyage.
|
|
|
|
Les scripts s'occupent également éventuellement de compresser les films pour alourdir le moins possible le chargement des pages. Actuellement la compression produit **du** 1080p en 60 images par seconde de haute qualité (10Mbps) pour une exécution locale optimale mais peut être trop lourde pour **une** diffusion sur le web. Les vidéos ainsi compressées occupent environ 25% de leur place initiale.
|
|
|
|
Les sites produits étant statiques, une fois générés ils sont facilement **transportables** par simple copie.
|
|
|
|
## Les prérequis
|
|
|
|
Normalement les scripts doivent fonctionner très facilement sous OSX et Linux, probablement facilement dans un Windows PowerShell ou dans un environnement Cygwin, mais je n'ai pas testé.
|
|
|
|
Il faudra installer toutefois :
|
|
|
|
* obligatoirement :
|
|
* python3 et ses packages pandas, folium, **gpxpy**, markdown2 et **numpy**
|
|
* exiftool
|
|
|
|
|
|
* optionnellement
|
|
* ffmpeg (pour la compression des MP4)
|
|
|
|
|
|
|
|
## Préparation des données
|
|
|
|
Je crée un **répertoire** pour l'ensemble de mes roadtrips à l'**intérieur** duquel je place le sous-**répertoire** `Scripts` de ce dépôt.
|
|
|
|
Puis, pour chaque road-trip je crée un sous-**répertoire**, par exemple Ete-2025, Ete-2024, etc.
|
|
|
|
Dans le sous-**répertoire** de chaque road-trip, je crée :
|
|
|
|
* un sous-**répertoire** `photos` avec mes photos
|
|
* un sous-**répertoire** `rushs` avec mes vidéos
|
|
* un sous-**répertoire** `routes` avec mes traces GPS **quotidiennes** dans des fichiers au format gpx que je nomme AAAA-MM-JJ.gpx (par exemple 2025-08_02.gpx)
|
|
* un fichier `voyage.md` avec le récit du voyage au format markdown
|
|
|
|
Sur mon disque, je dois voir une structure qui ressemble à :
|
|
|
|
```
|
|
MesVoyages
|
|
|-Scripts
|
|
|-Ete-2025
|
|
|-photos
|
|
|-rushs
|
|
|-routes
|
|
voyage.md
|
|
|-Ete-2024
|
|
...
|
|
|
|
```
|
|
|
|
## Mode d'emploi
|
|
|
|
Une fois les données préparées, tout est simple, mais un site peut être long à générer à cause de l'étape de compression.
|
|
|
|
### 1 road trip (3 ou 4 commandes selon que l'on compresse ou non les vidéos)
|
|
|
|
Par exemple [https://roadtrip.ouaibe.fr/Ete-2025](https://roadtrip.ouaibe.fr/Ete-2025)
|
|
|
|
On se place dans le **répertoire** du road-trip que l'on veut générer (celui qui contient les **répertoires** photos, rushs, etc.) et on lance :
|
|
|
|
```
|
|
../Scripts/extraction_infos.sh
|
|
|
|
```
|
|
|
|
Cela produit deux fichiers : `export_photos.csv` et `export_videos.csv` qui contiennent les extractions d'infos GPS des photos et **vidéos**.
|
|
|
|
Vient ensuite la compression optionnelle des **vidéos** qui peut être assez longue mais que je conseille vivement, même pour une utilisation locale.
|
|
|
|
```
|
|
../Scripts/compress.sh
|
|
|
|
```
|
|
|
|
Les **vidéos** compressées se trouveront alors dans le répertoire `videos` au **même** niveau que le **répertoire** `rushs`.
|
|
|
|
Si votre choix est de ne pas compresser, alors il faut faire un lien symbolique `videos` sur le sous-**répertoire** `rushs` :
|
|
|
|
```
|
|
ln -s rushs videos
|
|
|
|
```
|
|
|
|
Vient alors la génération de la carte :
|
|
|
|
```
|
|
../Scripts/genere_carte.py
|
|
|
|
|
|
```
|
|
|
|
### **Générer** un index de road-trips
|
|
|
|
Par exemple [https://roadtrip.ouaibe.fr](https://roadtrip.ouaibe.fr)
|
|
|
|
On se place dans le **répertoire** dont les sous-**répertoires** sont les road-trips et on lance :
|
|
|
|
```
|
|
./Scripts/genere_index_general.py
|
|
|
|
```
|
|
|
|
### Tout automatique
|
|
|
|
En fait si on a bien respecté l'arborescence des **répertoires**, on peut automatiser la **génération** de tous les road-trips présents en lançant :
|
|
|
|
```
|
|
./Scripts/genere_site.sh
|
|
|
|
```
|
|
|
|
Il conviendra de désactiver dans le script le lancement du script "compress.sh" si on ne désire pas compresser (attention par contre à bien mettre un lien dynamique sur les répertoires `rushs`, comme expliqué plus haut).
|
|
|
|
## Contribuer :
|
|
|
|
### Pour pouvoir faire des push :
|
|
|
|
```
|
|
git remote set-url origin https://<nom d'utilisateur>n@git.ouaibe.fr/Korrigan/RoadTripsGenerator.git
|
|
|
|
```
|
|
|
|
Pour **éviter** de re-taper le mot de passe pendant une heure pour les
|
|
autres push :
|
|
|
|
```
|
|
git config --global credential.helper 'cache --timeout=3600'
|
|
|
|
``` |