document.addEventListener("DOMContentLoaded", () => { const urlInput = document.getElementById("UrlInput"); const infoDiv = document.getElementById("videoInfo"); let lastFetchedUrl = ""; urlInput.addEventListener("input", async () => { const url = urlInput.value.trim(); console.log("Input détecté :", url); // Si URL vide ou trop courte : on vide et cache la div if (!url || url.length < 5) { infoDiv.innerHTML = ""; infoDiv.classList.remove("visible"); lastFetchedUrl = ""; return; } // Si même URL que précédemment, on ne fait rien if (url === lastFetchedUrl) return; lastFetchedUrl = url; try { const res = await fetch("/info", { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: new URLSearchParams({ url }), }); if (!res.ok) { infoDiv.innerHTML = "❌ Impossible de récupérer les infos."; infoDiv.classList.remove("visible"); return; } const data = await res.json(); const minutes = Math.floor(data.duration / 60); const seconds = data.duration % 60; const durationStr = `${minutes}m ${seconds.toString().padStart(2, "0")}s`; const date = data.upload_date || ""; const readableDate = date ? `${date.slice(6, 8)}/${date.slice(4, 6)}/${date.slice(0, 4)}` : "Inconnue"; const sizeMB = data.filesize_approx ? (data.filesize_approx / (1024 * 1024)).toFixed(2) + " Mo" : "Inconnue"; const categories = data.categories ? data.categories.join(", ") : "Non spécifiées"; infoDiv.innerHTML = `

${data.title}

Thumbnail `; // Affiche la div avec la classe pour transition douce infoDiv.classList.add("visible"); } catch (e) { console.error("Erreur lors de la récupération :", e); infoDiv.innerHTML = "❌ Erreur lors de la récupération."; infoDiv.classList.remove("visible"); } }); });