<!-- Full filename --> <div class="filename-main"> Kabir.Singh.2019.720p </div> <div class="filename-sub" id="fullFilename"> Kabir.Singh.2019.720p.HEVC.Web-DL.H... </div>
// demo mode flag let isDemoMode = !DOWNLOAD_URL;
/* file header */ .file-badge display: inline-flex; align-items: center; gap: 0.5rem; background: #1e2a3e; padding: 0.3rem 1rem; border-radius: 40px; font-size: 0.75rem; font-weight: 500; color: #94a3b8; letter-spacing: 0.3px; margin-bottom: 1.5rem;
.btn-download flex: 2; background: linear-gradient(105deg, #2563eb, #4f46e5); border: none; padding: 0.9rem 1rem; border-radius: 2rem; font-weight: 700; font-size: 1rem; color: white; display: flex; align-items: center; justify-content: center; gap: 10px; cursor: pointer; transition: 0.2s; box-shadow: 0 8px 18px -6px #1e40af; Download - Kabir.Singh.2019.720p.HEVC.WeB-DL.H...
.btn-download:hover:not(:disabled) transform: scale(1.01); background: linear-gradient(105deg, #3b82f6, #6366f1); box-shadow: 0 12px 22px -8px #1e3a8a;
.btn-reset:hover background: #2d3a50; color: white; border-color: #5b6e8c;
// main download orchestrator async function startDownload() if (isDownloading) statusMsgDiv.innerHTML = '⚠️ Download already in progress. Please reset first.'; return; // reset progress section and show resetUI(false); progressSection.style.display = 'block'; progressFill.style.width = '0%'; progressPercentSpan.innerText = '0%'; currentProgress = 0; isDownloading = true; downloadBtn.disabled = true; downloadBtn.innerHTML = '⏳ Downloading...'; statusMsgDiv.innerHTML = '⏳ Starting download...'; statusMsgDiv.style.borderLeftColor = '#f59e0b'; try if (!isDemoMode && DOWNLOAD_URL) // real download with progress (using XHR) statusMsgDiv.innerHTML = '🌐 Fetching file from server...'; await startRealDownload(DOWNLOAD_URL, FULL_FILENAME); statusMsgDiv.innerHTML = '✅ Download completed successfully! File saved.'; statusMsgDiv.style.borderLeftColor = '#10b981'; progressFill.style.width = '100%'; progressPercentSpan.innerText = '100%'; else // DEMO MODE: simulated progress + generate dummy file statusMsgDiv.innerHTML = '🎬 Demo mode: generating sample file...'; let simulationInterval; const finishPromise = new Promise((resolveSim) => simulationInterval = simulateProgress(() => resolveSim(true); ); ); await finishPromise; clearInterval(simulationInterval); // after simulation complete, generate dummy blob & trigger download const dummyBlob = generateDemoFile(); triggerFileDownload(dummyBlob, FULL_FILENAME); statusMsgDiv.innerHTML = `✅ Demo download finished! "$FULL_FILENAME" saved (sample data). Replace DOWNLOAD_URL for real file.`; statusMsgDiv.style.borderLeftColor = '#10b981'; catch (err) console.error(err); statusMsgDiv.innerHTML = `❌ Download failed: $err.message. Reset and try again.`; statusMsgDiv.style.borderLeftColor = '#ef4444'; progressSection.style.display = 'none'; downloadBtn.disabled = false; downloadBtn.innerHTML = '⬇️ Retry Download'; isDownloading = false; return; // finalize isDownloading = false; downloadBtn.disabled = false; downloadBtn.innerHTML = '⬇️ Download Again'; File saved
.btn-reset background: #1e2a3e; border: 1px solid #334155; padding: 0.9rem 1.2rem; border-radius: 2rem; font-weight: 500; color: #cbd5e6; cursor: pointer; transition: 0.2s; display: flex; align-items: center; gap: 6px;
<!-- metadata grid --> <div class="details-grid"> <div class="detail-item"> <div class="detail-label">🎞️ Format</div> <div class="detail-value">MKV (HEVC Main)</div> </div> <div class="detail-item"> <div class="detail-label">📦 Size</div> <div class="detail-value" id="fileSize">1.24 GB</div> </div> <div class="detail-item"> <div class="detail-label">🔊 Audio</div> <div class="detail-value">AAC 5.1 · Hindi</div> </div> <div class="detail-item"> <div class="detail-label">🌐 Source</div> <div class="detail-value">Web-DL (Prime)</div> </div> </div>
// reset handler function handleReset() if (isDownloading) if (xhrRequest) xhrRequest.abort(); xhrRequest = null; isDownloading = false; if (animationFrame) cancelAnimationFrame(animationFrame); resetUI(true); downloadBtn.innerHTML = '⬇️ Download Now'; Reset and try again
<script> (function() // ----- configuration ----- const FULL_FILENAME = "Kabir.Singh.2019.720p.HEVC.Web-DL.H.mkv"; // actual filename for download const DISPLAY_SIZE = "1.24 GB"; const MIME_TYPE = "video/x-matroska"; // for simulated progress (if we use fake download stream) // but we will also support real download + simulated progress (optional) // Real approach: create object URL with a dummy blob? But we want real file download. // Better: provide real download trigger by fetching actual file from server or using generated blob. // Since no backend specified, I'll implement a demo that simulates progress + generates a dummy .mkv file // OR you can replace with actual file URL.
/* Main card */ .download-card max-width: 680px; width: 100%; background: rgba(18, 25, 45, 0.85); backdrop-filter: blur(10px); border-radius: 2.5rem; box-shadow: 0 25px 45px -12px rgba(0, 0, 0, 0.5), 0 0 0 1px rgba(255, 255, 255, 0.05); padding: 2rem 2rem 2rem 2rem; transition: all 0.2s ease;
.filename-main font-size: 1.7rem; font-weight: 700; letter-spacing: -0.3px; background: linear-gradient(135deg, #F1F5F9 0%, #CBD5E1 100%); background-clip: text; -webkit-background-clip: text; color: transparent; word-break: break-all; margin-bottom: 0.5rem;