mirror of
https://github.com/PR0M3TH3AN/bitvid.git
synced 2025-09-08 23:18:43 +00:00
394 lines
13 KiB
HTML
394 lines
13 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
<title>bitvid | Decentralized Video Sharing</title>
|
|
|
|
<!-- Open Graph Meta Tags -->
|
|
<meta
|
|
property="og:title"
|
|
content="BitVid - Decentralized Video Sharing"
|
|
/>
|
|
<meta
|
|
property="og:description"
|
|
content="Share and stream decentralized videos effortlessly with privacy-first features."
|
|
/>
|
|
<meta
|
|
property="og:image"
|
|
content="https://yourwebsite.com/assets/images/preview-image.png"
|
|
/>
|
|
<meta property="og:url" content="https://yourwebsite.com" />
|
|
<meta property="og:type" content="website" />
|
|
<meta property="og:locale" content="en_US" />
|
|
|
|
<!-- App Icons -->
|
|
<link rel="icon" href="/favicon.ico" sizes="any" />
|
|
<link
|
|
rel="apple-touch-icon"
|
|
sizes="180x180"
|
|
href="/apple-touch-icon.png"
|
|
/>
|
|
<link
|
|
rel="icon"
|
|
type="image/png"
|
|
sizes="32x32"
|
|
href="/favicon-32x32.png"
|
|
/>
|
|
<link
|
|
rel="icon"
|
|
type="image/png"
|
|
sizes="16x16"
|
|
href="/favicon-16x16.png"
|
|
/>
|
|
<link rel="manifest" href="/site.webmanifest" />
|
|
<meta name="theme-color" content="#0f172a" />
|
|
|
|
<!-- Styles -->
|
|
<link
|
|
href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css"
|
|
rel="stylesheet"
|
|
/>
|
|
<link href="css/style.css" rel="stylesheet" />
|
|
</head>
|
|
<body>
|
|
<!-- Rest of your page content -->
|
|
</body>
|
|
</html>
|
|
|
|
<body class="bg-gray-100">
|
|
<div
|
|
id="app"
|
|
class="container mx-auto px-4 py-8 min-h-screen flex flex-col"
|
|
>
|
|
<!-- Header -->
|
|
<header class="mb-8">
|
|
<div class="flex items-start">
|
|
<img
|
|
src="assets/svg/bitvid-logo-light-mode.svg"
|
|
alt="BitVid Logo"
|
|
class="h-16"
|
|
/>
|
|
</div>
|
|
</header>
|
|
|
|
<!-- Login Section -->
|
|
<div id="loginSection" class="mb-8 flex items-center justify-between">
|
|
<div>
|
|
<button
|
|
id="loginButton"
|
|
class="bg-blue-500 text-white px-4 py-2 rounded-md hover:bg-blue-600 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2"
|
|
>
|
|
Login with Nostr
|
|
</button>
|
|
<p id="userStatus" class="mt-4 text-gray-500 hidden">
|
|
Logged in as: <span id="userPubKey"></span>
|
|
</p>
|
|
</div>
|
|
<div>
|
|
<button
|
|
id="logoutButton"
|
|
class="bg-red-500 text-white px-4 py-2 rounded-md hover:bg-red-600 focus:outline-none focus:ring-2 focus:ring-red-500 focus:ring-offset-2 hidden"
|
|
>
|
|
Logout
|
|
</button>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Error Container -->
|
|
<div
|
|
id="errorContainer"
|
|
class="hidden bg-red-100 text-red-800 p-4 rounded-md mb-4"
|
|
>
|
|
<!-- Error messages will appear here -->
|
|
</div>
|
|
|
|
<!-- Success Container -->
|
|
<div
|
|
id="successContainer"
|
|
class="hidden bg-green-100 text-green-800 p-4 rounded-md mb-4"
|
|
>
|
|
<!-- Success messages will appear here -->
|
|
</div>
|
|
|
|
<!-- Video Submission Form -->
|
|
<div
|
|
class="bg-white p-6 rounded-lg shadow-md mb-8 hidden"
|
|
id="videoFormContainer"
|
|
>
|
|
<h2 class="text-xl font-semibold mb-4">Share a Video</h2>
|
|
<form id="submitForm" class="space-y-4">
|
|
<div>
|
|
<label for="title" class="block text-sm font-medium text-gray-700"
|
|
>Title</label
|
|
>
|
|
<input
|
|
type="text"
|
|
id="title"
|
|
required
|
|
class="mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:border-blue-500 focus:ring-blue-500"
|
|
/>
|
|
</div>
|
|
|
|
<div>
|
|
<label for="magnet" class="block text-sm font-medium text-gray-700"
|
|
>Magnet Link</label
|
|
>
|
|
<input
|
|
type="text"
|
|
id="magnet"
|
|
required
|
|
class="mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:border-blue-500 focus:ring-blue-500"
|
|
/>
|
|
</div>
|
|
|
|
<div>
|
|
<label
|
|
for="thumbnail"
|
|
class="block text-sm font-medium text-gray-700"
|
|
>Thumbnail URL (optional)</label
|
|
>
|
|
<input
|
|
type="url"
|
|
id="thumbnail"
|
|
class="mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:border-blue-500 focus:ring-blue-500"
|
|
/>
|
|
</div>
|
|
|
|
<!-- Description Field -->
|
|
<div>
|
|
<label
|
|
for="description"
|
|
class="block text-sm font-medium text-gray-700"
|
|
>Description (optional)</label
|
|
>
|
|
<textarea
|
|
id="description"
|
|
rows="3"
|
|
class="mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:border-blue-500 focus:ring-blue-500"
|
|
></textarea>
|
|
</div>
|
|
|
|
<!-- ADDED FOR PRIVATE LISTINGS -->
|
|
<div class="flex items-center space-x-2">
|
|
<input
|
|
type="checkbox"
|
|
id="isPrivate"
|
|
class="form-checkbox h-5 w-5"
|
|
/>
|
|
<span class="text-sm font-medium text-gray-700"
|
|
>Private Listing (Encrypt Magnet)</span
|
|
>
|
|
</div>
|
|
<!-- END ADDED FOR PRIVATE LISTINGS -->
|
|
|
|
<button
|
|
type="submit"
|
|
class="bg-blue-500 text-white px-4 py-2 rounded-md hover:bg-blue-600 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2"
|
|
>
|
|
Share Video
|
|
</button>
|
|
</form>
|
|
</div>
|
|
|
|
<!-- Video Player Section -->
|
|
<div id="playerSection" class="mb-8 hidden">
|
|
<video id="video" controls class="w-full rounded-lg shadow-md"></video>
|
|
<!-- Status and Stats -->
|
|
<div class="mt-4">
|
|
<div id="status" class="text-gray-700 mb-2">Initializing...</div>
|
|
<div class="w-full bg-gray-300 rounded-full h-2 mb-2">
|
|
<div
|
|
class="bg-blue-500 h-2 rounded-full"
|
|
id="progress"
|
|
style="width: 0%"
|
|
></div>
|
|
</div>
|
|
<div class="flex justify-between text-sm text-gray-600">
|
|
<span id="peers">Peers: 0</span>
|
|
<span id="speed">0 KB/s</span>
|
|
<span id="downloaded">0 MB / 0 MB</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Video List -->
|
|
<div class="mb-8">
|
|
<div
|
|
id="videoList"
|
|
class="grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-8"
|
|
>
|
|
<!-- Videos will be dynamically inserted here -->
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Improved Video Player Modal -->
|
|
<div
|
|
id="playerModal"
|
|
class="hidden fixed inset-0 bg-black bg-opacity-75 flex items-center justify-center z-50 p-4"
|
|
>
|
|
<div
|
|
class="bg-gray-900 rounded-lg max-w-4xl w-full relative overflow-hidden"
|
|
>
|
|
<!-- Close button -->
|
|
<button
|
|
id="closePlayer"
|
|
class="absolute top-4 right-4 z-50 text-white bg-gray-800 hover:bg-gray-700 rounded-full p-2"
|
|
>
|
|
<svg
|
|
xmlns="http://www.w3.org/2000/svg"
|
|
class="h-6 w-6"
|
|
fill="none"
|
|
viewBox="0 0 24 24"
|
|
stroke="currentColor"
|
|
>
|
|
<path
|
|
stroke-linecap="round"
|
|
stroke-linejoin="round"
|
|
stroke-width="2"
|
|
d="M6 18L18 6M6 6l12 12"
|
|
/>
|
|
</svg>
|
|
</button>
|
|
|
|
<!-- Video container -->
|
|
<div class="aspect-w-16 aspect-h-9">
|
|
<video id="modalVideo" controls class="w-full rounded-t-lg"></video>
|
|
</div>
|
|
|
|
<!-- Video info section -->
|
|
<div class="p-6 text-white">
|
|
<!-- Video Title -->
|
|
<h2 id="videoTitle" class="text-2xl font-bold mb-2"></h2>
|
|
|
|
<!-- Video Timestamp -->
|
|
<div
|
|
class="flex items-center justify-between text-sm text-gray-400 mb-4"
|
|
>
|
|
<span id="videoTimestamp">just now</span>
|
|
<div id="modalStatus" class="text-gray-300">Initializing...</div>
|
|
</div>
|
|
|
|
<!-- Creator info -->
|
|
<div class="flex items-center mb-4 p-4 bg-gray-800 rounded-lg">
|
|
<div
|
|
id="creatorAvatar"
|
|
class="w-12 h-12 rounded-full bg-gray-700 overflow-hidden"
|
|
>
|
|
<img src="" alt="Creator" class="w-full h-full object-cover" />
|
|
</div>
|
|
<div class="ml-4">
|
|
<h3 id="creatorName" class="font-medium text-lg">
|
|
Creator Name
|
|
</h3>
|
|
<p id="creatorNpub" class="text-sm text-gray-400">npub...</p>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Video Description -->
|
|
<div class="bg-gray-800 rounded-lg p-4 mb-4">
|
|
<p
|
|
id="videoDescription"
|
|
class="text-gray-300 whitespace-pre-wrap"
|
|
>
|
|
No description available.
|
|
</p>
|
|
</div>
|
|
|
|
<!-- Torrent stats -->
|
|
<div class="bg-gray-800 rounded-lg p-4">
|
|
<div class="w-full bg-gray-700 rounded-full h-2 mb-2">
|
|
<div
|
|
class="bg-blue-500 h-2 rounded-full"
|
|
id="modalProgress"
|
|
style="width: 0%"
|
|
></div>
|
|
</div>
|
|
<div class="flex justify-between text-sm text-gray-400">
|
|
<span id="modalPeers">Peers: 0</span>
|
|
<span id="modalSpeed">Speed: 0 KB/s</span>
|
|
<span id="modalDownloaded">Downloaded: 0 MB / 0 MB</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="text-center mb-8">
|
|
<h2 class="text-2xl font-bold text-gray-500 tracking-wide">
|
|
seed. zap. subscribe.
|
|
</h2>
|
|
</div>
|
|
<footer class="mt-auto pb-8 text-center px-4">
|
|
<a
|
|
href="https://bitvid.btc.us"
|
|
class="text-gray-500 hover:text-gray-400 transition-colors duration-200"
|
|
target="_blank"
|
|
rel="noopener noreferrer"
|
|
>
|
|
bitvid.btc.us
|
|
</a>
|
|
<div class="mt-2 space-x-4">
|
|
<a
|
|
href="https://github.com/PR0M3TH3AN/bitvid"
|
|
class="text-gray-500 hover:text-gray-400 transition-colors duration-200"
|
|
target="_blank"
|
|
rel="noopener noreferrer"
|
|
>
|
|
GitHub
|
|
</a>
|
|
<a
|
|
href="https://primal.net/p/npub13yarr7j6vjqjjkahd63dmr27curypehx45ucue286ac7sft27y0srnpmpe"
|
|
class="text-gray-500 hover:text-gray-400 transition-colors duration-200"
|
|
target="_blank"
|
|
rel="noopener noreferrer"
|
|
>
|
|
Nostr
|
|
</a>
|
|
<a
|
|
href="https://habla.news/p/nprofile1qyv8wumn8ghj7un9d3shjtnndehhyapwwdhkx6tpdsq3gamnwvaz7tmjv4kxz7fwv3sk6atn9e5k7qgdwaehxw309ahx7uewd3hkcqgswaehxw309ahx7um5wgh8w6twv5q3yamnwvaz7tm0venxx6rpd9hzuur4vgqzpzf6x8a95eyp99dmwm4zmkx4a3cxgrnwdtfe3ej504m3aqjk4ugldyww3a"
|
|
class="text-gray-500 hover:text-gray-400 transition-colors duration-200"
|
|
target="_blank"
|
|
rel="noopener noreferrer"
|
|
>
|
|
Blog
|
|
</a>
|
|
<a
|
|
href="https://primal.net//e/note1s8xwqqmtaakpjfcmtunnf9dt05l8ttk3a2nr3pemk8fvqj4ealnqd5j39h"
|
|
class="text-gray-500 hover:text-gray-400 transition-colors duration-200"
|
|
target="_blank"
|
|
rel="noopener noreferrer"
|
|
>
|
|
Getting Started
|
|
</a>
|
|
<a
|
|
href="https://primal.net//e/note1s8xwqqmtaakpjfcmtunnf9dt05l8ttk3a2nr3pemk8fvqj4ealnqd5j39h"
|
|
class="text-gray-500 hover:text-gray-400 transition-colors duration-200"
|
|
target="_blank"
|
|
rel="noopener noreferrer"
|
|
>
|
|
About
|
|
</a>
|
|
</div>
|
|
<p
|
|
class="mt-2 text-xs text-gray-600 font-mono break-all max-w-full overflow-hidden"
|
|
>
|
|
IPNS: k51qzi5uqu5dgwr4oejq9rk41aoe9zcupenby6iqecsk5byc7rx48uecd133a1
|
|
</p>
|
|
</footer>
|
|
|
|
<!-- Scripts -->
|
|
<!-- Load WebTorrent via CDN -->
|
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/webtorrent/1.9.7/webtorrent.min.js"></script>
|
|
<!-- Load Nostr library -->
|
|
<script src="js/libs/nostr.bundle.js"></script>
|
|
<!-- Load JavaScript Modules -->
|
|
<script type="module" src="js/config.js"></script>
|
|
<script type="module" src="js/webtorrent.js"></script>
|
|
<script type="module" src="js/nostr.js"></script>
|
|
<script type="module" src="js/app.js"></script>
|
|
</div>
|
|
</body>
|
|
</html>
|