From 454e4c150d90e3060a39a7cb62efc10761733b6d Mon Sep 17 00:00:00 2001 From: Fabrice Date: Thu, 12 Feb 2026 22:23:08 +0100 Subject: [PATCH] remove autostart and replace by start on click to avoid a important initial load --- Scripts/genere_carte.py | 42 +++++++++++++++++++++++++++++++++++------ 1 file changed, 36 insertions(+), 6 deletions(-) diff --git a/Scripts/genere_carte.py b/Scripts/genere_carte.py index 8d8f422..0cb9077 100644 --- a/Scripts/genere_carte.py +++ b/Scripts/genere_carte.py @@ -59,11 +59,10 @@ def inject_common_assets(m): if (video.src.includes(newSrc)) return; var savedTime = video.currentTime; - var wasPlaying = !video.paused; // On regarde si c'était en lecture + var wasPlaying = !video.paused; video.src = newSrc; - // On attend que les métadonnées soient prêtes pour remettre le temps video.onloadedmetadata = function() { this.currentTime = savedTime; if (wasPlaying) { @@ -77,7 +76,6 @@ def inject_common_assets(m): video.load(); - // Mise à jour visuelle des boutons var container = btnElement.parentElement; var buttons = container.getElementsByClassName('quality-btn'); for (var i = 0; i < buttons.length; i++) { @@ -92,6 +90,34 @@ def inject_common_assets(m): btnElement.classList.add('active-1080'); } } + + // --- AUTOPLAY INTELLIGENT (DÉTECTION D'OUVERTURE POPUP) --- + // Cet observateur surveille l'apparition des popups. + // Dès qu'une popup s'ouvre, il trouve la vidéo et lance la lecture. + var observer = new MutationObserver(function(mutations) { + mutations.forEach(function(mutation) { + mutation.addedNodes.forEach(function(node) { + // Si l'élément ajouté est une popup Leaflet + if (node.nodeType === 1 && node.classList && node.classList.contains('leaflet-popup')) { + var video = node.querySelector('video'); + if (video) { + console.log("🎬 Popup ouverte : Lancement de la vidéo..."); + var playPromise = video.play(); + if (playPromise !== undefined) { + playPromise.catch(error => { + console.log("Autoplay bloqué par le navigateur (interaction requise ?)", error); + }); + } + } + } + }); + }); + }); + + // On lance l'espion dès que la page est chargée + document.addEventListener("DOMContentLoaded", function() { + observer.observe(document.body, { childList: true, subtree: true }); + }); // ---------------------------------------- function toggleJournal(open) { @@ -270,23 +296,27 @@ for i, jour in enumerate(tous_les_jours): # Ajout 'autoplay muted' pour le lancement au clic # Ajout 'preload=none' pour ne pas charger les autres + # --- BLOC VIDÉO FIABLE (Défaut = Léger, Upgrade manuel) --- v_pop = ( f'
' f'
' f'{v_name.strip()}' f'
' + # Le bouton 720p est actif par défaut (cohérent avec le fichier chargé) f'720p' f'1080p' f'
' f'
' + # 1. On charge par défaut le fichier MOBILE (léger) pour garantir la lecture partout. + # 2. preload="none" : Indispensable pour que la page charge vite. + # 3. Pas d'autoplay. f'
' ) - folium.Marker(location=pts_v[0], popup=folium.Popup(v_pop, max_width="100%"), icon=create_pin("#007AFF", "play")).add_to(marker_cluster) if day_coords: m_day.fit_bounds(day_coords, padding=(50, 50))