Spaces:
Running
Running
| // Ganti domain kamu di sini: | |
| const baseURL = "https://gilbertclaus.pythonanywhere.com"; | |
| function playVideo(button) { | |
| const charName = button.textContent.trim(); | |
| const videoPath = `${baseURL}/video/${encodeURIComponent("Ark ReCode")}/${encodeURIComponent(charName)}.mp4`; | |
| const wrapper = document.getElementById("videoWrapper"); | |
| wrapper.innerHTML = ""; | |
| const video = document.createElement("video"); | |
| video.src = videoPath; | |
| video.width = 360; | |
| video.controls = true; | |
| video.autoplay = true | |
| video.loop = true; | |
| video.volume = 0.01; | |
| video.style.marginTop = "20px"; | |
| wrapper.appendChild(video); | |
| // Minta fullscreen setelah video ditambahkan ke halaman | |
| // video.addEventListener("loadedmetadata", () => { | |
| if (video.requestFullscreen) { | |
| video.requestFullscreen(); | |
| } else if (video.webkitRequestFullscreen) { // Safari | |
| video.webkitRequestFullscreen(); | |
| } else if (video.msRequestFullscreen) { // IE11 | |
| video.msRequestFullscreen(); | |
| } | |
| // }); | |
| } | |
| function showNotif(message, duration = 3000) { | |
| const notif = document.createElement("div"); | |
| notif.className = "notif"; | |
| notif.textContent = message; | |
| document.body.appendChild(notif); | |
| // Trigger fade-in | |
| requestAnimationFrame(() => { | |
| notif.style.opacity = 1; | |
| }); | |
| // Auto-hide | |
| setTimeout(() => { | |
| notif.style.opacity = 0; | |
| setTimeout(() => { | |
| notif.remove(); | |
| }, 500); // Tunggu animasi selesai | |
| }, duration); | |
| } | |
| function fetchData() { | |
| // Ambil elemen tombol karakter | |
| const input = document.getElementById("charName").value.trim(); | |
| const charaBtns = document.querySelectorAll(".chara"); | |
| // Ambil elemen video | |
| const video = document.getElementById("bgVideo"); | |
| const source = video.querySelector("source"); | |
| if (input === "") { | |
| // Ambil status tombol pertama sebagai acuan | |
| const isHidden = charaBtns[0].style.display === "none" || charaBtns[0].style.display === ""; | |
| // Toggle semua tombol | |
| charaBtns.forEach(btn => { | |
| btn.style.display = isHidden ? "inline-block" : "none"; | |
| }); | |
| // Cek apakah sedang bukan video Edalia | |
| const isSafe = !source.src.includes("Edalia"); | |
| // Pilih URL video berdasarkan status tombol | |
| const newVideoURL = isSafe | |
| ? `${baseURL}/video/${encodeURIComponent("Ark ReCode - Edalia Skill")}.mp4` | |
| : `https://video.twimg.com/ext_tw_video/1892164405464629249/pu/vid/avc1/1280x720/cgW9XdNOX1DPI6Rq.mp4`; | |
| // Set dan muat ulang video | |
| source.src = newVideoURL; | |
| video.load(); | |
| video.play(); | |
| } else { | |
| showNotif(`Fungsi fetchData untuk karakter "${input}" belum diimplementasikan`); | |
| } | |
| } | |
| // Ambil daftar karakter dari server | |
| window.onload = () => { | |
| fetch(`${baseURL}/list-videos`) | |
| .then(res => res.json()) | |
| .then(data => { | |
| const container = document.getElementById("charButtons"); | |
| // Urutkan nama-nama video secara alfabet | |
| const sortedNames = data.videos.sort((a, b) => a.localeCompare(b)); | |
| sortedNames.forEach(name => { | |
| const btn = document.createElement("button"); | |
| btn.textContent = name; | |
| btn.className = "chara"; | |
| btn.onclick = function () { | |
| playVideo(this); | |
| }; | |
| container.appendChild(btn); | |
| }); | |
| }) | |
| .catch(err => { | |
| showNotif("Gagal ambil daftar karakter dari server"); | |
| }); | |
| }; | |