Spaces:
Running
Running
File size: 6,260 Bytes
6d5721b 9274027 d10c35a 9274027 d10c35a 9274027 6d5721b 2f160a3 9274027 f848982 9274027 f848982 22fa71e 9274027 f848982 9274027 d10c35a 9274027 22fa71e 9274027 22fa71e f848982 9274027 f848982 9274027 d10c35a 22fa71e f848982 9274027 2f160a3 22fa71e | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 | <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>HF Video Library</title>
<!-- Font Awesome -->
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" rel="stylesheet">
<!-- Material Icons font file reference is less common, usually class-based -->
<!-- <link href="https://cdnjs.cloudflare.com/ajax/libs/material-design-icons/4.0.0/font/MaterialIcons-Regular.ttf" rel="stylesheet"> -->
<!-- Using Material Icons via Google Fonts is more standard -->
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<!-- Material Components Web -->
<link href="https://cdnjs.cloudflare.com/ajax/libs/material-components-web/14.0.0/material-components-web.min.css" rel="stylesheet">
<!-- Plyr.js for enhanced video player -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/plyr/3.7.8/plyr.css">
<!-- Custom styles -->
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="app-container">
<!-- App Header -->
<header class="app-header">
<div class="header-content">
<div class="logo-container">
<i class="fas fa-film logo-icon"></i>
<h1 class="app-title">HF Video Library</h1>
</div>
<div class="search-wrapper">
<div class="search-container">
<i class="fas fa-search search-icon"></i>
<input type="text" id="searchInput" placeholder="Search videos..." class="search-input">
<button id="clearSearch" class="clear-search-btn">
<i class="fas fa-times"></i>
</button>
</div>
</div>
</div>
</header>
<!-- Main Content -->
<main class="app-main">
<!-- Video Grid Section -->
<div class="video-grid-container">
<div class="controls-bar">
<div class="result-counter" id="resultCounter">
Showing <span id="visibleCount">0</span> of <span id="totalCount">0</span> videos
</div>
<div class="view-toggle">
<button id="gridViewBtn" class="view-btn active" title="Grid View">
<i class="fas fa-th"></i>
</button>
<button id="listViewBtn" class="view-btn" title="List View">
<i class="fas fa-list"></i>
</button>
</div>
</div>
<!-- Loading Indicator -->
<div id="loadingIndicator" class="loading-container">
<div class="loading-spinner"></div>
<p>Loading videos...</p>
</div>
<!-- Error Message -->
<div id="errorMessage" class="error-container" style="display: none;">
<i class="fas fa-exclamation-circle"></i>
<p>Failed to load videos. Please try again later.</p>
<button id="retryBtn" class="retry-btn">Retry</button>
</div>
<!-- Video Grid -->
<div id="videoGrid" class="video-grid"></div>
<!-- Pagination -->
<div class="pagination-container">
<div id="pagination" class="pagination"></div>
</div>
</div>
</main>
<!-- Video Player Modal -->
<div id="videoModal" class="modal">
<div class="modal-content">
<div class="modal-header">
<h2 id="modalVideoTitle">Video Title</h2>
<button id="closeModal" class="close-button">
<i class="fas fa-times"></i>
</button>
</div>
<div class="modal-body">
<div class="player-container">
<video id="videoPlayer" playsinline controls>
<p>Your browser doesn't support HTML5 video.</p>
</video>
<!-- *** NEW: Buffering Indicator *** -->
<div id="playerLoadingIndicator" class="player-loading-indicator" style="display: none;">
<div class="loading-spinner"></div>
<span id="playerLoadPercent">Loading 0%</span>
</div>
<!-- *** End of Buffering Indicator *** -->
</div>
<div class="player-help">
<div class="help-item">
<i class="fas fa-keyboard"></i>
<span>Space: Play/Pause</span>
</div>
<div class="help-item">
<i class="fas fa-arrows-alt-h"></i>
<span>←/→: Seek</span>
</div>
<div class="help-item">
<i class="fas fa-expand"></i>
<span>F: Fullscreen</span>
</div>
<div class="help-item">
<i class="fas fa-volume-mute"></i>
<span>M: Mute</span>
</div>
</div>
</div>
</div>
</div>
<!-- Toast Messages -->
<div id="toastContainer" class="toast-container"></div>
<!-- Footer -->
<footer class="app-footer">
<p>HF Video Library © 2025</p>
</footer>
</div>
<!-- Scripts -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/material-components-web/14.0.0/material-components-web.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/plyr/3.7.8/plyr.min.js"></script>
<script src="script.js"></script>
</body>
</html> |