remove autostart and replace by start on click to avoid a important initial load
This commit is contained in:
@@ -59,11 +59,10 @@ def inject_common_assets(m):
|
|||||||
if (video.src.includes(newSrc)) return;
|
if (video.src.includes(newSrc)) return;
|
||||||
|
|
||||||
var savedTime = video.currentTime;
|
var savedTime = video.currentTime;
|
||||||
var wasPlaying = !video.paused; // On regarde si c'était en lecture
|
var wasPlaying = !video.paused;
|
||||||
|
|
||||||
video.src = newSrc;
|
video.src = newSrc;
|
||||||
|
|
||||||
// On attend que les métadonnées soient prêtes pour remettre le temps
|
|
||||||
video.onloadedmetadata = function() {
|
video.onloadedmetadata = function() {
|
||||||
this.currentTime = savedTime;
|
this.currentTime = savedTime;
|
||||||
if (wasPlaying) {
|
if (wasPlaying) {
|
||||||
@@ -77,7 +76,6 @@ def inject_common_assets(m):
|
|||||||
|
|
||||||
video.load();
|
video.load();
|
||||||
|
|
||||||
// Mise à jour visuelle des boutons
|
|
||||||
var container = btnElement.parentElement;
|
var container = btnElement.parentElement;
|
||||||
var buttons = container.getElementsByClassName('quality-btn');
|
var buttons = container.getElementsByClassName('quality-btn');
|
||||||
for (var i = 0; i < buttons.length; i++) {
|
for (var i = 0; i < buttons.length; i++) {
|
||||||
@@ -92,6 +90,34 @@ def inject_common_assets(m):
|
|||||||
btnElement.classList.add('active-1080');
|
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) {
|
function toggleJournal(open) {
|
||||||
@@ -270,23 +296,27 @@ for i, jour in enumerate(tous_les_jours):
|
|||||||
|
|
||||||
# Ajout 'autoplay muted' pour le lancement au clic
|
# Ajout 'autoplay muted' pour le lancement au clic
|
||||||
# Ajout 'preload=none' pour ne pas charger les autres
|
# Ajout 'preload=none' pour ne pas charger les autres
|
||||||
|
# --- BLOC VIDÉO FIABLE (Défaut = Léger, Upgrade manuel) ---
|
||||||
v_pop = (
|
v_pop = (
|
||||||
f'<div style="width:calc(85vw - 40px); max-width:1000px; text-align:center;">'
|
f'<div style="width:calc(85vw - 40px); max-width:1000px; text-align:center;">'
|
||||||
|
|
||||||
f'<div class="header-row">'
|
f'<div class="header-row">'
|
||||||
f'<span class="file-name" title="{v_name.strip()}">{v_name.strip()}</span>'
|
f'<span class="file-name" title="{v_name.strip()}">{v_name.strip()}</span>'
|
||||||
f'<div class="quality-controls">'
|
f'<div class="quality-controls">'
|
||||||
|
# Le bouton 720p est actif par défaut (cohérent avec le fichier chargé)
|
||||||
f'<span class="quality-btn active-720" onclick="changeQuality(\'{video_id}\', \'{mobile_file}\', this)">720p</span>'
|
f'<span class="quality-btn active-720" onclick="changeQuality(\'{video_id}\', \'{mobile_file}\', this)">720p</span>'
|
||||||
f'<span class="quality-btn" onclick="changeQuality(\'{video_id}\', \'{desktop_file}\', this)">1080p</span>'
|
f'<span class="quality-btn" onclick="changeQuality(\'{video_id}\', \'{desktop_file}\', this)">1080p</span>'
|
||||||
f'</div>'
|
f'</div>'
|
||||||
f'</div>'
|
f'</div>'
|
||||||
|
|
||||||
|
# 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'<video id="{video_id}" style="width:100%; max-height:70vh; border-radius:8px; background:black;" '
|
f'<video id="{video_id}" style="width:100%; max-height:70vh; border-radius:8px; background:black;" '
|
||||||
f'controls playsinline webkit-playsinline autoplay muted preload="none" '
|
f'controls playsinline webkit-playsinline preload="none" '
|
||||||
f'src="{mobile_file}">'
|
f'src="{mobile_file}">' # <-- On pointe directement sur le fichier léger
|
||||||
f'</video></div>'
|
f'</video></div>'
|
||||||
)
|
)
|
||||||
|
|
||||||
folium.Marker(location=pts_v[0], popup=folium.Popup(v_pop, max_width="100%"), icon=create_pin("#007AFF", "play")).add_to(marker_cluster)
|
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))
|
if day_coords: m_day.fit_bounds(day_coords, padding=(50, 50))
|
||||||
|
|||||||
Reference in New Issue
Block a user