- Paquet roadtripsgenerator (pyproject.toml), commande rtg : generer, etat, analyser, compresser, accueil, migrer - Réglages site.toml / voyage.toml (anciens mymaps.txt et moto.txt encore lus) ; qualité vidéo en trois crans - Sources laissées en place : traces découpées par journée d'après leurs horodatages (coupure à 4 h) ou la date du nom de fichier, photos copiées, HEIC converties en JPEG, position déduite de la trace pour les photos sans GPS - extraction_infos.sh et compress.sh portés en Python (plus de bash) ; sorties vidéo écrites sous un nom temporaire ; positions des rushs inchangés reprises du dernier export ; export vidéo conservé quand le disque des rushs est débranché - Pages, accueil et carte globale repris dans le paquet : sortie identique aux scripts (123 fichiers comparés sur 7 voyages) - Tests pytest sur un voyage d'exemple fabriqué à la volée Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Mf2kATMtqVABHSYdxJMnim
96 lines
4.0 KiB
HTML
96 lines
4.0 KiB
HTML
{#- =============================================================================
|
|
Morceaux de HTML insérés par genere_carte.py dans les pages folium.
|
|
Échappement automatique : seules les variables marquées |safe passent telles
|
|
quelles. Les chemins arrivent déjà encodés pour les URL (quote()).
|
|
Les styles sont dans carte.css, le comportement dans carte.js.
|
|
============================================================================= -#}
|
|
|
|
{# Feuille de style et script communs, avec un numéro de version pour que les
|
|
navigateurs ne gardent pas une ancienne copie en cache. #}
|
|
{% macro entete(prefixe, version) -%}
|
|
<link rel="stylesheet" href="{{ prefixe }}assets/carte.css?v={{ version }}">
|
|
<script src="{{ prefixe }}assets/carte.js?v={{ version }}"></script>
|
|
{%- endmacro %}
|
|
|
|
|
|
{% macro epingle(couleur, icone) -%}
|
|
<div class="pin" style="--c:{{ couleur }}"><div class="pin-tete"><i class="fa fa-{{ icone }}"></i></div><div class="pin-tige"></div></div>
|
|
{%- endmacro %}
|
|
|
|
|
|
{# Popup affichée au clic sur la trace d'une journée (carte générale). #}
|
|
{% macro popup_trace(jour, couleur, lien) -%}
|
|
<div class="popup-trace"><b>📅 {{ jour }}</b><br><a class="btn-jour" style="--c:{{ couleur }}" href="{{ lien }}" target="_top">Détails</a></div>
|
|
{%- endmacro %}
|
|
|
|
|
|
{# photos : liste de {nom, src (version web), href (original)} #}
|
|
{% macro popup_photos(photos) -%}
|
|
<div class="slider-container">
|
|
<div class="slides">
|
|
{%- for p in photos %}
|
|
<div class="slide"{% if not loop.first %} style="display:none"{% endif %}>
|
|
<div class="file-header">{{ p.nom }}</div>
|
|
<a href="{{ p.href }}" target="_blank"><img src="{{ p.src }}" alt="{{ p.nom }}" loading="lazy"></a>
|
|
</div>
|
|
{%- endfor %}
|
|
</div>
|
|
{%- if photos|length > 1 %}
|
|
<button class="nav-btn prev" onclick="moveSlide(this, -1)">❮</button>
|
|
<button class="nav-btn next" onclick="moveSlide(this, 1)">❯</button>
|
|
<div class="slide-counter">1/{{ photos|length }}</div>
|
|
{%- endif %}
|
|
</div>
|
|
{%- endmacro %}
|
|
|
|
|
|
{# 720p H.264 chargé par défaut (lisible partout), 1080p HEVC à la demande.
|
|
preload="none" : rien n'est téléchargé avant l'ouverture de la popup. #}
|
|
{% macro popup_video(nom, mobile, hd, apercu) -%}
|
|
<div class="popup-video">
|
|
<div class="header-row">
|
|
<span class="file-name" title="{{ nom }}">{{ nom }}</span>
|
|
<div class="quality-controls">
|
|
<span class="quality-btn active-720" data-src="{{ mobile }}" onclick="changeQuality(this)">720p</span>
|
|
<span class="quality-btn" data-hevc="1" data-src="{{ hd }}" onclick="changeQuality(this)">1080p</span>
|
|
</div>
|
|
</div>
|
|
<video controls playsinline webkit-playsinline preload="none" src="{{ mobile }}" data-fallback="{{ mobile }}"
|
|
{%- if apercu %} data-poster="{{ apercu }}"{% endif %}></video>
|
|
<div class="hevc-note">Le 1080p est encodé en H.265/HEVC, que ce navigateur ne sait pas décoder.
|
|
La lecture en 720p fonctionne normalement ; pour la haute définition, utilise Safari, Chrome ou Edge.</div>
|
|
</div>
|
|
{%- endmacro %}
|
|
|
|
|
|
{# contenu : HTML du récit (voyage.md converti), déjà prêt. #}
|
|
{% macro journal(contenu) -%}
|
|
<div id="journal-panel">
|
|
<button class="close-btn" onclick="toggleJournal(false)">×</button>
|
|
<div class="journal-content">{{ contenu|safe }}</div>
|
|
</div>
|
|
<button class="btn-flottant btn-journal" onclick="toggleJournal(true)">📖 Journal</button>
|
|
{%- endmacro %}
|
|
|
|
|
|
{% macro bouton_accueil(lien) -%}
|
|
<a class="btn-flottant btn-accueil" href="{{ lien }}" target="_top">🏠 Accueil</a>
|
|
{%- endmacro %}
|
|
|
|
|
|
{% macro bouton_gpx(lien, libelle) -%}
|
|
<a class="btn-flottant btn-gpx" href="{{ lien }}" download>{{ libelle }}</a>
|
|
{%- endmacro %}
|
|
|
|
|
|
{# jours : liste de {libelle, lien, couleur} #}
|
|
{% macro barre_jours(retour, jours) -%}
|
|
<nav class="sidebar">
|
|
<a class="btn-retour" href="{{ retour }}" target="_top">⬅ Retour</a>
|
|
<div class="sidebar-titre">PAR JOURS</div>
|
|
{%- for j in jours %}
|
|
<a class="jour" style="--c:{{ j.couleur }}" href="{{ j.lien }}" target="_top">{{ j.libelle }}</a>
|
|
{%- endfor %}
|
|
</nav>
|
|
{%- endmacro %}
|