Spaces:
Running
Running
Fix video filters, text overlay, burn subtitles (en, hi, ur), add ZIP download and Beautify preset
457f453 | <html lang="en"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
| <title>Facebook Automation – Bypass Copyright</title> | |
| <meta name="description" content="Futuristic cyber command dashboard for Facebook Automation."> | |
| <link rel="preconnect" href="https://fonts.googleapis.com"> | |
| <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> | |
| <link href="https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700;800;900&display=swap" rel="stylesheet"> | |
| <link rel="stylesheet" href="css/style.css?v=13"> | |
| </head> | |
| <body> | |
| <!-- Ambient Background Glows --> | |
| <div class="decor-orb decor-orb-cyan"></div> | |
| <div class="decor-orb decor-orb-purple"></div> | |
| <div class="app-layout"> | |
| <!-- ═══════════════════════════════════════════ | |
| HEADER NAVBAR | |
| ════════════════════════════════════════════ --> | |
| <nav class="navbar"> | |
| <div class="navbar-brand"> | |
| <div class="brand-logo"> | |
| <svg class="brand-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"> | |
| <polygon points="12 2 22 8.5 22 15.5 12 22 2 15.5 2 8.5 12 2"/> | |
| <polyline points="2 8.5 12 15 22 8.5"/> | |
| <line x1="12" y1="15" x2="12" y2="22"/> | |
| </svg> | |
| <div class="brand-text"> | |
| <h1>Facebook Automation</h1> | |
| <span class="brand-subtitle">Bypass Copyright</span> | |
| </div> | |
| </div> | |
| </div> | |
| <div class="navbar-controls"> | |
| <!-- Eye-Catching Glowing Badge --> | |
| <span class="meta-badge-glow">100% Copyright Bypass</span> | |
| <!-- Theme Switcher Toggle --> | |
| <button class="theme-toggle-btn" id="theme-toggle" type="button" title="Switch Theme"> | |
| <svg class="sun-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2"> | |
| <circle cx="12" cy="12" r="5"/> | |
| <line x1="12" y1="1" x2="12" y2="3"/> | |
| <line x1="12" y1="21" x2="12" y2="23"/> | |
| <line x1="4.22" y1="4.22" x2="5.64" y2="5.64"/> | |
| <line x1="18.36" y1="18.36" x2="19.78" y2="19.78"/> | |
| <line x1="1" y1="12" x2="3" y2="12"/> | |
| <line x1="21" y1="12" x2="23" y2="12"/> | |
| <line x1="4.22" y1="19.78" x2="5.64" y2="18.36"/> | |
| <line x1="18.36" y1="5.64" x2="19.78" y2="4.22"/> | |
| </svg> | |
| <svg class="moon-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" style="display:none;"> | |
| <path d="M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z"/> | |
| </svg> | |
| </button> | |
| </div> | |
| </nav> | |
| <!-- ═══════════════════════════════════════════ | |
| METRICS GRID | |
| ════════════════════════════════════════════ --> | |
| <div class="metrics-grid"> | |
| <div class="metric-card"> | |
| <div class="metric-icon-box files-icon"> | |
| <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> | |
| <path d="M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10" stroke-linecap="round" stroke-linejoin="round"/> | |
| </svg> | |
| </div> | |
| <div class="metric-info"> | |
| <span class="metric-value" id="stat-files">0</span> | |
| <span class="metric-label">Exported Videos</span> | |
| </div> | |
| </div> | |
| <div class="metric-card"> | |
| <div class="metric-icon-box clips-icon"> | |
| <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> | |
| <path d="M6 10a4 4 0 108 0 4 4 0 00-8 0zm0 0V6a4 4 0 018 0v4m-8 0h8m-4 4v4m0 0l-3-3m3 3l3-3" stroke-linecap="round" stroke-linejoin="round"/> | |
| </svg> | |
| </div> | |
| <div class="metric-info"> | |
| <span class="metric-value" id="stat-clips">0</span> | |
| <span class="metric-label">Clips Created</span> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- ═══════════════════════════════════════════ | |
| 3-COLUMN MAIN GRID | |
| ════════════════════════════════════════════ --> | |
| <form id="clip-form" class="workspace-form"> | |
| <div class="dashboard-grid-3col"> | |
| <!-- COLUMN 1: Import & Crop (Steps 1, 2, 3) --> | |
| <div class="workspace-column"> | |
| <div class="panel-header"> | |
| <h2>1. Import & Slices</h2> | |
| <p class="panel-subtitle">Acquire video content and configure slicing thresholds.</p> | |
| </div> | |
| <!-- STEP 1: Import Source --> | |
| <div class="step-card"> | |
| <div class="step-header"> | |
| <span class="step-num">1</span> | |
| <div class="step-title-wrap"> | |
| <h3>Import Source</h3> | |
| <p class="step-desc">Select whether to import from YouTube or upload a local video.</p> | |
| </div> | |
| </div> | |
| <div class="segment-tabs source-tabs" style="margin-bottom: 12px;"> | |
| <button type="button" class="segment-tab-btn active" data-source="youtube" id="source-toggle-yt"> | |
| <svg class="tab-btn-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> | |
| <path d="M22.54 6.42a2.78 2.78 0 00-1.94-2C18.88 4 12 4 12 4s-6.88 0-8.6.46a2.78 2.78 0 00-1.94 2A29 29 0 001 11.75a29 29 0 00.46 5.33A2.78 2.78 0 003.4 19c1.72.46 8.6.46 8.6.46s6.88 0 8.6-.46a2.78 2.78 0 001.94-2 29 29 0 00.46-5.25 29 29 0 00-.46-5.33z"/> | |
| <polygon points="9.75 15.02 15.5 11.75 9.75 8.48 9.75 15.02"/> | |
| </svg> | |
| YouTube Link | |
| </button> | |
| <button type="button" class="segment-tab-btn" data-source="upload" id="source-toggle-upload"> | |
| <svg class="tab-btn-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> | |
| <path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M17 8l-5-5-5 5M12 3v12"/> | |
| </svg> | |
| Upload File | |
| </button> | |
| </div> | |
| <!-- YouTube Link Panel --> | |
| <div id="source-panel-youtube" class="slicing-panel active"> | |
| <div class="form-group"> | |
| <div class="input-with-icon"> | |
| <svg class="input-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> | |
| <path d="M13.828 10.172a4 4 0 00-5.656 0l-4 4a4 4 0 105.656 5.656l1.102-1.101m-.758-4.899a4 4 0 005.656 0l4-4a4 4 0 00-5.656-5.656l-1.1 1.1" stroke-linecap="round" stroke-linejoin="round"/> | |
| </svg> | |
| <input type="text" id="url" name="url" placeholder="https://www.youtube.com/watch?v=..."> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Local Upload Panel --> | |
| <div id="source-panel-upload" class="slicing-panel"> | |
| <div class="form-group"> | |
| <div class="file-upload-wrapper"> | |
| <input type="file" id="video_file" name="video_file" accept="video/*" style="display: none;"> | |
| <button type="button" class="file-upload-btn" onclick="document.getElementById('video_file').click()"> | |
| <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" style="width: 18px; height: 18px; margin-right: 8px;"> | |
| <path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M17 8l-5-5-5 5M12 3v12"/> | |
| </svg> | |
| Choose Video File | |
| </button> | |
| <span id="file-name-label" class="file-name-label">No file selected</span> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- STEP 2: Aspect Ratio --> | |
| <div class="step-card"> | |
| <div class="step-header"> | |
| <span class="step-num">2</span> | |
| <div class="step-title-wrap"> | |
| <h3>Output Format</h3> | |
| <p class="step-desc">Select the canvas layout configuration.</p> | |
| </div> | |
| </div> | |
| <div class="aspect-ratio-grid"> | |
| <label class="aspect-card"> | |
| <input type="radio" name="aspect_ratio" value="original" checked> | |
| <div class="aspect-preview original-preview"> | |
| <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"> | |
| <rect x="3" y="3" width="18" height="18" rx="2" stroke-dasharray="3 3"/> | |
| </svg> | |
| </div> | |
| <div class="aspect-info"> | |
| <span class="aspect-title">Original</span> | |
| </div> | |
| </label> | |
| <label class="aspect-card"> | |
| <input type="radio" name="aspect_ratio" value="vertical"> | |
| <div class="aspect-preview vertical-preview"> | |
| <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> | |
| <rect x="7" y="3" width="10" height="18" rx="1.5"/> | |
| </svg> | |
| </div> | |
| <div class="aspect-info"> | |
| <span class="aspect-title">Vertical (9:16)</span> | |
| </div> | |
| </label> | |
| <label class="aspect-card"> | |
| <input type="radio" name="aspect_ratio" value="horizontal"> | |
| <div class="aspect-preview horizontal-preview"> | |
| <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> | |
| <rect x="3" y="6" width="18" height="12" rx="1.5"/> | |
| </svg> | |
| </div> | |
| <div class="aspect-info"> | |
| <span class="aspect-title">Horizontal (16:9)</span> | |
| </div> | |
| </label> | |
| </div> | |
| </div> | |
| <!-- STEP 3: Slicing Method --> | |
| <div class="step-card"> | |
| <div class="step-header"> | |
| <span class="step-num">3</span> | |
| <div class="step-title-wrap"> | |
| <h3>Slicing Method</h3> | |
| <p class="step-desc">Select split configurations.</p> | |
| </div> | |
| </div> | |
| <div class="segment-tabs"> | |
| <button type="button" class="segment-tab-btn active" data-type="auto" id="clip-toggle-auto"> | |
| <svg class="tab-btn-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> | |
| <path d="M13 10V3L4 14h7v7l9-11h-7z" stroke-linecap="round" stroke-linejoin="round"/> | |
| </svg> | |
| Auto-Split | |
| </button> | |
| <button type="button" class="segment-tab-btn" data-type="timestamps" id="clip-toggle-ts"> | |
| <svg class="tab-btn-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> | |
| <circle cx="12" cy="12" r="10"/> | |
| <polyline points="12 6 12 12 16 14"/> | |
| </svg> | |
| Timestamps | |
| </button> | |
| </div> | |
| <!-- Auto Split Panel --> | |
| <div id="auto-clip-panel" class="slicing-panel active"> | |
| <div class="form-group inline-row"> | |
| <label for="interval">Duration per segment</label> | |
| <div class="input-suffix-group"> | |
| <input type="number" id="interval" name="interval" value="30" min="1" max="1800"> | |
| <span class="input-suffix">s</span> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Custom Timestamps Panel --> | |
| <div id="timestamps-clip-panel" class="slicing-panel"> | |
| <div class="form-group"> | |
| <label for="timestamps">Timestamp Ranges (Seconds)</label> | |
| <input type="text" id="timestamps" name="timestamps" placeholder="e.g. 10-40, 55-85"> | |
| <span class="input-helper">Comma-separated start-end frames</span> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- COLUMN 2: Customization & Rendering (Step 4 & Action button) --> | |
| <div class="workspace-column"> | |
| <div class="panel-header"> | |
| <h2>2. Filters & Output</h2> | |
| <p class="panel-subtitle">Evade automated matching algorithms and compile video files.</p> | |
| </div> | |
| <!-- STEP 4: Safety Filters --> | |
| <div class="step-card"> | |
| <div class="step-header"> | |
| <span class="step-num">4</span> | |
| <div class="step-title-wrap"> | |
| <h3>Safety Customizations</h3> | |
| <p class="step-desc">Configure visual adjustments to structure layout transformations.</p> | |
| </div> | |
| </div> | |
| <div class="toggles-grid"> | |
| <label class="toggle-control"> | |
| <span class="toggle-label">🔍 Zoom</span> | |
| <input type="checkbox" name="zoom" value="true" checked> | |
| <span class="toggle-switch"></span> | |
| </label> | |
| <label class="toggle-control"> | |
| <span class="toggle-label">🎭 Vignette</span> | |
| <input type="checkbox" name="vignette" value="true"> | |
| <span class="toggle-switch"></span> | |
| </label> | |
| <label class="toggle-control"> | |
| <span class="toggle-label">📺 Grain/Noise</span> | |
| <input type="checkbox" name="noise_grain" value="true"> | |
| <span class="toggle-switch"></span> | |
| </label> | |
| </div> | |
| <div class="form-grid-2col"> | |
| <div class="form-group"> | |
| <label for="mirror_mode">↔ Mirror Flip Mode</label> | |
| <select id="mirror_mode" name="mirror_mode"> | |
| <option value="none">No Flip</option> | |
| <option value="horizontal" selected>Horizontal Flip</option> | |
| <option value="vertical">Vertical Flip</option> | |
| <option value="both">Both Flip</option> | |
| </select> | |
| </div> | |
| <div class="form-group"> | |
| <label for="color_filter">🎨 Color Grading</label> | |
| <select id="color_filter" name="color_filter"> | |
| <option value="none">No Filter</option> | |
| <option value="beautify" selected>Beautiful Glow (Skin/Details)</option> | |
| <option value="cinematic">Cinematic Contrast</option> | |
| <option value="vibrant">Vibrant Saturation</option> | |
| <option value="warm">Warm Sepia</option> | |
| <option value="cool">Cool Blue</option> | |
| <option value="vintage">Vintage Retro</option> | |
| <option value="grayscale">Grayscale B&W</option> | |
| <option value="dramatic">Dramatic Film</option> | |
| <option value="faded">Faded Matte</option> | |
| </select> | |
| </div> | |
| </div> | |
| <div class="form-grid"> | |
| <div class="form-group"> | |
| <label for="caption_lang">💬 Burn Subtitles / Captions (YouTube Only)</label> | |
| <select id="caption_lang" name="caption_lang"> | |
| <option value="none" selected>No Captions</option> | |
| <option value="en">English Captions</option> | |
| <option value="hi">Hinglish / Hindi Captions</option> | |
| <option value="ur">Urdu Captions</option> | |
| </select> | |
| </div> | |
| </div> | |
| <div class="form-grid"> | |
| <div class="form-group"> | |
| <label for="text_overlay">Text Overlay Watermark</label> | |
| <input type="text" id="text_overlay" name="text_overlay" placeholder="e.g., Custom Brand Overlay"> | |
| </div> | |
| </div> | |
| <div class="form-grid-2col"> | |
| <div class="form-group"> | |
| <label for="border_color">Border Color</label> | |
| <select id="border_color" name="border_color"> | |
| <option value="none" selected>No Border</option> | |
| <option value="black">Black</option> | |
| <option value="green">Green (Green Screen)</option> | |
| <option value="blue">Blue</option> | |
| <option value="red">Red</option> | |
| </select> | |
| </div> | |
| <div class="form-group"> | |
| <label for="border_width">Width (px)</label> | |
| <input type="number" id="border_width" name="border_width" value="0" min="0" max="100"> | |
| </div> | |
| </div> | |
| <div class="form-grid-2col"> | |
| <div class="form-group"> | |
| <label for="speed">Video Speed</label> | |
| <select id="speed" name="speed"> | |
| <option value="1.0">Standard (1.0×)</option> | |
| <option value="1.04" selected>Safe Speed-up (1.04×)</option> | |
| <option value="1.08">Fast Speed-up (1.08×)</option> | |
| <option value="0.95">Slight Slow-down (0.95×)</option> | |
| </select> | |
| </div> | |
| <div class="form-group"> | |
| <label for="pitch_shift">Audio Pitch</label> | |
| <select id="pitch_shift" name="pitch_shift"> | |
| <option value="0.0">Normal (0.0)</option> | |
| <option value="0.8" selected>Slight High (+0.8)</option> | |
| <option value="1.5">High Pitch (+1.5)</option> | |
| <option value="-0.8">Slight Low (-0.8)</option> | |
| </select> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Progress Bar --> | |
| <div class="progress-container" id="clip-progress"> | |
| <div class="progress-details"> | |
| <span class="progress-status"> | |
| <span class="spinner-dot"></span> | |
| <span id="clip-step">Downloading video…</span> | |
| </span> | |
| <span class="progress-percent" id="clip-pct">0%</span> | |
| </div> | |
| <div class="progress-track"> | |
| <div class="progress-bar" id="clip-fill"></div> | |
| </div> | |
| </div> | |
| <!-- Submit Button --> | |
| <button type="submit" class="submit-button" id="clip-submit-btn"> | |
| <span class="btn-text"> | |
| <svg class="btn-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"> | |
| <path d="M12 4v16m8-8H4" stroke-linecap="round" stroke-linejoin="round"/> | |
| </svg> | |
| Create & Bypass Video Clips | |
| </span> | |
| <span class="btn-spinner"></span> | |
| </button> | |
| </div> | |
| <!-- COLUMN 3: Exported Library --> | |
| <div class="library-panel"> | |
| <div class="panel-header library-header"> | |
| <div> | |
| <h2>Exported Clips</h2> | |
| <p class="panel-subtitle">Automatically expires in 30 minutes.</p> | |
| </div> | |
| <div class="library-actions"> | |
| <button class="library-action-btn refresh-btn" id="refresh-gallery" type="button" title="Refresh list"> | |
| <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2"> | |
| <path d="M21.5 2v6h-6M21.34 15.57a10 10 0 11-.57-8.38l.56-.56" stroke-linecap="round" stroke-linejoin="round"/> | |
| </svg> | |
| </button> | |
| <button class="library-action-btn zip-btn" id="download-all-btn" type="button" title="Download all clips as ZIP"> | |
| <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2"> | |
| <path d="M21 15v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4m-7-5v9m-4-4l4 4 4-4m-4-10v5a2 2 0 002 2h2" stroke-linecap="round" stroke-linejoin="round"/> | |
| </svg> | |
| </button> | |
| <button class="library-action-btn clear-btn" id="clear-library-btn" type="button" title="Clear all files"> | |
| <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2"> | |
| <polyline points="3 6 5 6 21 6"/> | |
| <path d="M19 6v14a2 2 0 01-2 2H7a2 2 0 01-2-2V6m3 0V4a2 2 0 012-2h4a2 2 0 012 2v2" stroke-linecap="round" stroke-linejoin="round"/> | |
| </svg> | |
| </button> | |
| </div> | |
| </div> | |
| <!-- Search Input --> | |
| <div class="search-wrap"> | |
| <svg class="search-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> | |
| <circle cx="11" cy="11" r="8"/> | |
| <line x1="21" y1="21" x2="16.65" y2="16.65"/> | |
| </svg> | |
| <input type="text" id="library-search" placeholder="Search files…"> | |
| </div> | |
| <!-- Gallery List --> | |
| <div class="library-list" id="gallery-container"> | |
| <div class="empty-library"> | |
| <div class="empty-art"> | |
| <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"> | |
| <rect x="2" y="2" width="20" height="20" rx="2.18" ry="2.18"/> | |
| <line x1="7" y1="2" x2="7" y2="22"/> | |
| <line x1="17" y1="2" x2="17" y2="22"/> | |
| <line x1="2" y1="12" x2="22" y2="12"/> | |
| </svg> | |
| </div> | |
| <p class="empty-title">No exported clips</p> | |
| <p class="empty-desc">Run a clipping operation to begin.</p> | |
| </div> | |
| </div> | |
| </div> | |
| </div><!-- /dashboard-grid-3col --> | |
| </form> | |
| </div> | |
| <!-- VIDEO PLAYER MODAL --> | |
| <div class="modal" id="video-modal"> | |
| <div class="modal-overlay" id="modal-close"></div> | |
| <div class="modal-content"> | |
| <div class="modal-header"> | |
| <h3 id="modal-title">▶ Playback</h3> | |
| <button class="close-btn" id="modal-close-btn">×</button> | |
| </div> | |
| <div class="modal-body"> | |
| <video id="modal-player" controls></video> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Toast system --> | |
| <div id="toast" class="toast"></div> | |
| <script src="js/app.js?v=13"></script> | |
| </body> | |
| </html> | |