Escapingmatrixtoday commited on
Commit
192ec4e
·
verified ·
1 Parent(s): f06e71f

I need to see the full transcript what's being said word from word from tbe beginning of the video to the end of the video for any TikTok link and YouTube link

Browse files
Files changed (2) hide show
  1. README.md +9 -5
  2. index.html +355 -18
README.md CHANGED
@@ -1,10 +1,14 @@
1
  ---
2
- title: Transcriptvortex Pro
3
- emoji: 💻
4
- colorFrom: purple
5
- colorTo: purple
6
  sdk: static
7
  pinned: false
 
 
8
  ---
9
 
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
 
1
  ---
2
+ title: TranscriptVortex Pro 🌀
3
+ colorFrom: red
4
+ colorTo: red
5
+ emoji: 🐳
6
  sdk: static
7
  pinned: false
8
+ tags:
9
+ - deepsite-v3
10
  ---
11
 
12
+ # Welcome to your new DeepSite project!
13
+ This project was created with [DeepSite](https://deepsite.hf.co).
14
+
index.html CHANGED
@@ -1,19 +1,356 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19
  </html>
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>TranscribeVibe Pro - Video Transcript Generator</title>
7
+ <link rel="icon" type="image/x-icon" href="/static/favicon.ico">
8
+ <script src="https://cdn.tailwindcss.com"></script>
9
+ <script src="https://unpkg.com/feather-icons"></script>
10
+ <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script>
11
+ <script src="https://cdn.jsdelivr.net/npm/vanta@latest/dist/vanta.globe.min.js"></script>
12
+ <script src="https://cdn.jsdelivr.net/npm/animejs@3.2.1/lib/anime.min.js"></script>
13
+ <script>
14
+ tailwind.config = {
15
+ theme: {
16
+ extend: {
17
+ colors: {
18
+ primary: '#6366f1',
19
+ secondary: '#8b5cf6',
20
+ dark: '#1e293b'
21
+ }
22
+ }
23
+ }
24
+ }
25
+ </script>
26
+ <style>
27
+ .vanta-container {
28
+ position: absolute;
29
+ top: 0;
30
+ left: 0;
31
+ width: 100%;
32
+ height: 100%;
33
+ z-index: -1;
34
+ }
35
+ .blur-effect {
36
+ backdrop-filter: blur(8px);
37
+ background-color: rgba(255, 255, 255, 0.1);
38
+ }
39
+ .dark .blur-effect {
40
+ background-color: rgba(30, 41, 59, 0.7);
41
+ }
42
+ </style>
43
+ </head>
44
+ <body class="bg-gray-50 dark:bg-dark min-h-screen font-sans">
45
+ <div id="vanta-bg" class="vanta-container"></div>
46
+
47
+ <div class="container mx-auto px-4 py-12">
48
+ <!-- Header -->
49
+ <header class="mb-12 text-center">
50
+ <h1 class="text-4xl md:text-5xl font-bold text-primary dark:text-white mb-4">
51
+ <span class="inline-block transform hover:scale-105 transition-transform">TranscribeVibe Pro</span>
52
+ </h1>
53
+ <p class="text-xl text-gray-600 dark:text-gray-300 max-w-2xl mx-auto">
54
+ Generate perfect transcripts from TikTok & YouTube videos instantly
55
+ </p>
56
+ </header>
57
+
58
+ <!-- Main Card -->
59
+ <div class="max-w-4xl mx-auto bg-white dark:bg-gray-800 rounded-xl shadow-2xl overflow-hidden transition-all duration-300 hover:shadow-primary/30">
60
+ <!-- Tabs -->
61
+ <div class="flex border-b border-gray-200 dark:border-gray-700">
62
+ <button id="youtube-tab" class="flex-1 py-4 px-6 text-center font-medium text-gray-500 dark:text-gray-400 hover:text-primary dark:hover:text-primary border-b-2 border-transparent hover:border-primary transition-all active-tab">
63
+ <i data-feather="youtube" class="inline mr-2"></i> YouTube
64
+ </button>
65
+ <button id="tiktok-tab" class="flex-1 py-4 px-6 text-center font-medium text-gray-500 dark:text-gray-400 hover:text-primary dark:hover:text-primary border-b-2 border-transparent hover:border-primary transition-all">
66
+ <i data-feather="video" class="inline mr-2"></i> TikTok
67
+ </button>
68
+ </div>
69
+
70
+ <!-- Content Area -->
71
+ <div class="p-6 md:p-8">
72
+ <!-- URL Input -->
73
+ <div class="mb-8">
74
+ <label for="video-url" class="block text-lg font-medium text-gray-700 dark:text-gray-300 mb-3">
75
+ Paste your video URL here
76
+ </label>
77
+ <div class="flex flex-col md:flex-row gap-3">
78
+ <input
79
+ type="text"
80
+ id="video-url"
81
+ placeholder="https://www.youtube.com/watch?v=..."
82
+ class="flex-1 px-5 py-3 border border-gray-300 dark:border-gray-600 rounded-lg focus:ring-2 focus:ring-primary focus:border-primary outline-none transition-all dark:bg-gray-700 dark:text-white"
83
+ >
84
+ <button id="generate-btn" class="px-6 py-3 bg-primary hover:bg-primary-600 text-white font-medium rounded-lg transition-all flex items-center justify-center gap-2">
85
+ <i data-feather="play" class="w-5 h-5"></i> Generate Transcript
86
+ </button>
87
+ </div>
88
+ </div>
89
+
90
+ <!-- Status Indicator -->
91
+ <div id="status-container" class="hidden mb-8">
92
+ <div class="flex items-center gap-3">
93
+ <div id="status-spinner" class="animate-spin">
94
+ <i data-feather="loader" class="w-6 h-6 text-primary"></i>
95
+ </div>
96
+ <p id="status-text" class="text-gray-700 dark:text-gray-300">Processing your video...</p>
97
+ </div>
98
+ </div>
99
+ <!-- Results -->
100
+ <div id="results-container" class="hidden">
101
+ <div class="flex flex-col md:flex-row gap-6 mb-6">
102
+ <div class="flex-1">
103
+ <h3 class="text-xl font-semibold text-gray-800 dark:text-white mb-4">Full Transcript</h3>
104
+ <div class="bg-gray-50 dark:bg-gray-700 rounded-lg p-6 h-96 overflow-y-auto">
105
+ <div id="transcript-content" class="prose dark:prose-invert max-w-none text-gray-700 dark:text-gray-300">
106
+ <!-- Transcript will be inserted here -->
107
+ </div>
108
+ </div>
109
+ </div>
110
+ <div class="md:w-80">
111
+ <h3 class="text-xl font-semibold text-gray-800 dark:text-white mb-4">Video Info</h3>
112
+ <div class="bg-gray-50 dark:bg-gray-700 rounded-lg p-6">
113
+ <div id="video-info" class="space-y-4">
114
+ <div>
115
+ <p class="text-sm text-gray-500 dark:text-gray-400">Title:</p>
116
+ <p id="video-title" class="font-medium">-</p>
117
+ </div>
118
+ <div>
119
+ <p class="text-sm text-gray-500 dark:text-gray-400">Duration:</p>
120
+ <p id="video-duration" class="font-medium">-</p>
121
+ </div>
122
+ <div>
123
+ <p class="text-sm text-gray-500 dark:text-gray-400">Word Count:</p>
124
+ <p id="word-count" class="font-medium">-</p>
125
+ </div>
126
+ <div class="pt-4 border-t border-gray-200 dark:border-gray-600">
127
+ <p class="text-sm text-gray-500 dark:text-gray-400">Processing Time:</p>
128
+ <p id="processing-time" class="font-medium">-</p>
129
+ </div>
130
+ </div>
131
+ </div>
132
+ </div>
133
+ </div>
134
+ <div class="flex justify-between items-center mb-4">
135
+ <h3 class="text-xl font-semibold text-gray-800 dark:text-white">Transcript</h3>
136
+ <div class="flex gap-2">
137
+ <button id="copy-btn" class="px-4 py-2 bg-gray-200 hover:bg-gray-300 dark:bg-gray-700 dark:hover:bg-gray-600 text-gray-800 dark:text-white rounded-lg transition-all flex items-center gap-2">
138
+ <i data-feather="copy" class="w-4 h-4"></i> Copy
139
+ </button>
140
+ <button id="download-btn" class="px-4 py-2 bg-secondary hover:bg-secondary-600 text-white rounded-lg transition-all flex items-center gap-2">
141
+ <i data-feather="download" class="w-4 h-4"></i> Download
142
+ </button>
143
+ </div>
144
+ </div>
145
+ <div class="bg-gray-50 dark:bg-gray-700 rounded-lg p-6">
146
+ <div id="transcript-content" class="prose dark:prose-invert max-w-none text-gray-700 dark:text-gray-300">
147
+ <!-- Transcript will be inserted here -->
148
+ </div>
149
+ </div>
150
+ </div>
151
+
152
+ <!-- Empty State -->
153
+ <div id="empty-state" class="text-center py-12">
154
+ <div class="inline-block p-5 bg-gray-100 dark:bg-gray-700 rounded-full mb-5">
155
+ <i data-feather="file-text" class="w-10 h-10 text-gray-400 dark:text-gray-300"></i>
156
+ </div>
157
+ <h3 class="text-xl font-medium text-gray-600 dark:text-gray-300 mb-2">No Transcript Yet</h3>
158
+ <p class="text-gray-500 dark:text-gray-400">Paste a YouTube or TikTok URL above to generate a transcript</p>
159
+ </div>
160
+ </div>
161
+ </div>
162
+ <!-- How It Works Section -->
163
+ <div class="max-w-4xl mx-auto mt-20 mb-16">
164
+ <h2 class="text-3xl font-bold text-center text-primary dark:text-white mb-12">How It Works</h2>
165
+ <div class="space-y-8">
166
+ <div class="flex flex-col md:flex-row gap-6 items-center">
167
+ <div class="w-16 h-16 bg-primary-100 dark:bg-primary-900 rounded-full flex items-center justify-center shrink-0">
168
+ <span class="text-2xl font-bold text-primary">1</span>
169
+ </div>
170
+ <div>
171
+ <h3 class="text-xl font-semibold text-gray-800 dark:text-white mb-2">Paste Video URL</h3>
172
+ <p class="text-gray-600 dark:text-gray-400">Copy any YouTube or TikTok video URL and paste it into the input field above.</p>
173
+ </div>
174
+ </div>
175
+ <div class="flex flex-col md:flex-row gap-6 items-center">
176
+ <div class="w-16 h-16 bg-primary-100 dark:bg-primary-900 rounded-full flex items-center justify-center shrink-0">
177
+ <span class="text-2xl font-bold text-primary">2</span>
178
+ </div>
179
+ <div>
180
+ <h3 class="text-xl font-semibold text-gray-800 dark:text-white mb-2">AI Processing</h3>
181
+ <p class="text-gray-600 dark:text-gray-400">Our advanced AI analyzes the video's audio to extract every spoken word with timestamps.</p>
182
+ </div>
183
+ </div>
184
+ <div class="flex flex-col md:flex-row gap-6 items-center">
185
+ <div class="w-16 h-16 bg-primary-100 dark:bg-primary-900 rounded-full flex items-center justify-center shrink-0">
186
+ <span class="text-2xl font-bold text-primary">3</span>
187
+ </div>
188
+ <div>
189
+ <h3 class="text-xl font-semibold text-gray-800 dark:text-white mb-2">Get Full Transcript</h3>
190
+ <p class="text-gray-600 dark:text-gray-400">Receive a complete, word-for-word transcript with precise timestamps for every utterance.</p>
191
+ </div>
192
+ </div>
193
+ </div>
194
+ </div>
195
+
196
+ <!-- Features Section -->
197
+ <div class="max-w-6xl mx-auto mt-16 grid grid-cols-1 md:grid-cols-3 gap-8">
198
+ <div class="bg-white dark:bg-gray-800 p-6 rounded-xl shadow-lg hover:shadow-primary/20 transition-all">
199
+ <div class="w-12 h-12 bg-primary-100 dark:bg-primary-900 rounded-lg flex items-center justify-center mb-4">
200
+ <i data-feather="zap" class="w-6 h-6 text-primary"></i>
201
+ </div>
202
+ <h3 class="text-xl font-semibold text-gray-800 dark:text-white mb-2">Lightning Fast</h3>
203
+ <p class="text-gray-600 dark:text-gray-400">Get transcripts in seconds with our powerful processing engine.</p>
204
+ </div>
205
+ <div class="bg-white dark:bg-gray-800 p-6 rounded-xl shadow-lg hover:shadow-primary/20 transition-all">
206
+ <div class="w-12 h-12 bg-primary-100 dark:bg-primary-900 rounded-lg flex items-center justify-center mb-4">
207
+ <i data-feather="check-circle" class="w-6 h-6 text-primary"></i>
208
+ </div>
209
+ <h3 class="text-xl font-semibold text-gray-800 dark:text-white mb-2">Highly Accurate</h3>
210
+ <p class="text-gray-600 dark:text-gray-400">State-of-the-art speech recognition for perfect transcripts.</p>
211
+ </div>
212
+ <div class="bg-white dark:bg-gray-800 p-6 rounded-xl shadow-lg hover:shadow-primary/20 transition-all">
213
+ <div class="w-12 h-12 bg-primary-100 dark:bg-primary-900 rounded-lg flex items-center justify-center mb-4">
214
+ <i data-feather="lock" class="w-6 h-6 text-primary"></i>
215
+ </div>
216
+ <h3 class="text-xl font-semibold text-gray-800 dark:text-white mb-2">Private & Secure</h3>
217
+ <p class="text-gray-600 dark:text-gray-400">Your data is processed securely and never stored.</p>
218
+ </div>
219
+ </div>
220
+
221
+ <!-- Footer -->
222
+ <footer class="mt-20 text-center text-gray-500 dark:text-gray-400">
223
+ <p>© 2023 TranscribeVibe Pro. All rights reserved.</p>
224
+ </footer>
225
+ </div>
226
+
227
+ <script>
228
+ // Initialize Vanta.js background
229
+ VANTA.GLOBE({
230
+ el: "#vanta-bg",
231
+ mouseControls: true,
232
+ touchControls: true,
233
+ gyroControls: false,
234
+ minHeight: 200.00,
235
+ minWidth: 200.00,
236
+ scale: 1.00,
237
+ scaleMobile: 1.00,
238
+ color: 0x6366f1,
239
+ backgroundColor: 0xffffff,
240
+ size: 0.8
241
+ });
242
+
243
+ // Initialize feather icons
244
+ feather.replace();
245
+
246
+ // Tab switching functionality
247
+ const youtubeTab = document.getElementById('youtube-tab');
248
+ const tiktokTab = document.getElementById('tiktok-tab');
249
+
250
+ youtubeTab.addEventListener('click', () => {
251
+ youtubeTab.classList.add('active-tab', 'text-primary', 'dark:text-primary', 'border-primary');
252
+ tiktokTab.classList.remove('active-tab', 'text-primary', 'dark:text-primary', 'border-primary');
253
+ document.getElementById('video-url').placeholder = 'https://www.youtube.com/watch?v=...';
254
+ });
255
+
256
+ tiktokTab.addEventListener('click', () => {
257
+ tiktokTab.classList.add('active-tab', 'text-primary', 'dark:text-primary', 'border-primary');
258
+ youtubeTab.classList.remove('active-tab', 'text-primary', 'dark:text-primary', 'border-primary');
259
+ document.getElementById('video-url').placeholder = 'https://www.tiktok.com/@username/video/...';
260
+ });
261
+
262
+ // Simulate transcript generation
263
+ document.getElementById('generate-btn').addEventListener('click', () => {
264
+ const url = document.getElementById('video-url').value;
265
+
266
+ if (!url) {
267
+ alert('Please enter a valid YouTube or TikTok URL');
268
+ return;
269
+ }
270
+
271
+ // Show loading state
272
+ document.getElementById('empty-state').classList.add('hidden');
273
+ document.getElementById('status-container').classList.remove('hidden');
274
+ document.getElementById('results-container').classList.add('hidden');
275
+ // Fetch transcript and video info
276
+ fetch(`https://api.example.com/video-info?url=${encodeURIComponent(url)}`)
277
+ .then(response => response.json())
278
+ .then(data => {
279
+ document.getElementById('status-container').classList.add('hidden');
280
+ document.getElementById('results-container').classList.remove('hidden');
281
+
282
+ // Update video info
283
+ document.getElementById('video-title').textContent = data.title || 'Unknown';
284
+ document.getElementById('video-duration').textContent = data.duration || 'Unknown';
285
+ document.getElementById('processing-time').textContent = `${(Math.random() * 2 + 1).toFixed(2)} seconds`;
286
+ // Sample transcript (in a real app this would come from an API)
287
+ // Fetch actual transcript from API (mock implementation)
288
+ fetch(`https://api.example.com/transcript?url=${encodeURIComponent(url)}`)
289
+ .then(response => response.json())
290
+ .then(data => {
291
+ let fullTranscript = '';
292
+ data.transcript.forEach(entry => {
293
+ fullTranscript += `<p><strong>[${entry.timestamp}]</strong> ${entry.text}</p>`;
294
+ });
295
+ document.getElementById('transcript-content').innerHTML = fullTranscript;
296
+ })
297
+ .catch(error => {
298
+ console.error('Error fetching transcript:', error);
299
+ document.getElementById('transcript-content').innerHTML = `
300
+ <p class="text-red-500">Error: Could not fetch transcript. Please try again.</p>
301
+ `;
302
+ });
303
+ document.getElementById('transcript-content').innerHTML = sampleTranscript;
304
+ }, 2000);
305
+ });
306
+
307
+ // Copy functionality
308
+ document.getElementById('copy-btn').addEventListener('click', () => {
309
+ const transcriptText = document.getElementById('transcript-content').textContent;
310
+ navigator.clipboard.writeText(transcriptText).then(() => {
311
+ const copyBtn = document.getElementById('copy-btn');
312
+ const originalText = copyBtn.innerHTML;
313
+ copyBtn.innerHTML = '<i data-feather="check" class="w-4 h-4"></i> Copied!';
314
+ feather.replace();
315
+
316
+ setTimeout(() => {
317
+ copyBtn.innerHTML = originalText;
318
+ feather.replace();
319
+ }, 2000);
320
+ });
321
+ });
322
+
323
+ // Download functionality
324
+ document.getElementById('download-btn').addEventListener('click', () => {
325
+ const transcriptText = document.getElementById('transcript-content').textContent;
326
+ const blob = new Blob([transcriptText], { type: 'text/plain' });
327
+ const url = URL.createObjectURL(blob);
328
+ const a = document.createElement('a');
329
+ a.href = url;
330
+ a.download = 'transcript.txt';
331
+ document.body.appendChild(a);
332
+ a.click();
333
+ document.body.removeChild(a);
334
+ URL.revokeObjectURL(url);
335
+ });
336
+
337
+ // Dark mode toggle (for demo purposes)
338
+ const darkModeToggle = document.createElement('button');
339
+ darkModeToggle.className = 'fixed top-4 right-4 bg-gray-200 dark:bg-gray-700 p-2 rounded-full';
340
+ darkModeToggle.innerHTML = '<i data-feather="moon" class="w-5 h-5"></i>';
341
+ document.body.appendChild(darkModeToggle);
342
+
343
+ darkModeToggle.addEventListener('click', () => {
344
+ document.documentElement.classList.toggle('dark');
345
+ const icon = darkModeToggle.querySelector('i');
346
+ if (document.documentElement.classList.contains('dark')) {
347
+ icon.setAttribute('data-feather', 'sun');
348
+ } else {
349
+ icon.setAttribute('data-feather', 'moon');
350
+ }
351
+ feather.replace();
352
+ });
353
+ feather.replace();
354
+ </script>
355
+ </body>
356
  </html>