floribella commited on
Commit
3b62414
·
verified ·
1 Parent(s): 9f6c12e

Add 1 files

Browse files
Files changed (1) hide show
  1. index.html +170 -629
index.html CHANGED
@@ -21,46 +21,15 @@
21
  transform: translateY(-2px);
22
  box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
23
  }
24
- .animate-pulse {
25
- animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
26
- }
27
- @keyframes pulse {
28
- 0%, 100% {
29
- opacity: 1;
30
- }
31
- 50% {
32
- opacity: 0.5;
33
- }
34
- }
35
- .service-tag {
36
- position: relative;
37
- padding-left: 20px;
38
- }
39
  .service-tag::before {
40
  content: "";
41
- position: absolute;
42
- left: 6px;
43
- top: 50%;
44
- transform: translateY(-50%);
45
  width: 8px;
46
  height: 8px;
47
  border-radius: 50%;
48
- background-color: currentColor;
49
  }
50
  .service-tag.google::before { background-color: #4285F4; }
51
- .service-tag.yandex::before { background-color: #FF0000; }
52
- .service-tag.archive::before { background-color: #5E9CA8; }
53
- .service-tag.mega::before { background-color: #D9272E; }
54
- .service-tag.terabox::before { background-color: #6200EA; }
55
- .service-tag.dropbox::before { background-color: #0061FF; }
56
- .service-tag.onedrive::before { background-color: #0078D4; }
57
- .service-tag.mediafire::before { background-color: #1292EE; }
58
- .service-tag.catbox::before { background-color: #FF5722; }
59
- .service-tag.sharemania::before { background-color: #4CAF50; }
60
- .service-tag.torrent::before { background-color: #7C4DFF; }
61
- .service-tag.uploadrar::before { background-color: #FF9800; }
62
- .service-tag.buzzheavier::before { background-color: #9C27B0; }
63
- .service-tag.pixeldrain::before { background-color: #2196F3; }
64
  .service-tag.fastserver::before { background-color: #00BFA5; }
65
  .service-tag.hdvietnam::before { background-color: #FF6D00; }
66
  .service-tag.olala::before { background-color: #AA00FF; }
@@ -70,75 +39,6 @@
70
  .service-tag.reddit::before { background-color: #FF5700; }
71
  .service-tag.ulozto::before { background-color: #0091EA; }
72
  .service-tag.seedr::before { background-color: #00B8D4; }
73
-
74
- /* Cute search animation */
75
- .search-animation {
76
- position: relative;
77
- width: 100px;
78
- height: 100px;
79
- margin: 0 auto;
80
- }
81
- .magnifying-glass {
82
- width: 50px;
83
- height: 50px;
84
- border: 3px solid #3b82f6;
85
- border-radius: 50%;
86
- position: relative;
87
- margin: 0 auto;
88
- }
89
- .magnifying-glass:after {
90
- content: "";
91
- position: absolute;
92
- width: 20px;
93
- height: 3px;
94
- background: #3b82f6;
95
- bottom: -10px;
96
- right: -15px;
97
- transform: rotate(45deg);
98
- }
99
- .search-dots {
100
- position: absolute;
101
- width: 100%;
102
- height: 20px;
103
- top: 70px;
104
- display: flex;
105
- justify-content: center;
106
- gap: 5px;
107
- }
108
- .search-dot {
109
- width: 8px;
110
- height: 8px;
111
- background: #3b82f6;
112
- border-radius: 50%;
113
- animation: bounce 1.5s infinite ease-in-out;
114
- }
115
- .search-dot:nth-child(1) { animation-delay: 0.1s; }
116
- .search-dot:nth-child(2) { animation-delay: 0.2s; }
117
- .search-dot:nth-child(3) { animation-delay: 0.3s; }
118
- @keyframes bounce {
119
- 0%, 100% { transform: translateY(0); }
120
- 50% { transform: translateY(-10px); }
121
- }
122
- @keyframes rotate {
123
- 0% { transform: rotate(0deg); }
124
- 100% { transform: rotate(360deg); }
125
- }
126
- .rotating {
127
- animation: rotate 2s linear infinite;
128
- }
129
-
130
- /* Motivational phrases */
131
- .motivational-phrase {
132
- text-align: center;
133
- font-style: italic;
134
- color: #6b7280;
135
- margin: 10px 0;
136
- opacity: 0;
137
- transition: opacity 0.5s ease;
138
- }
139
- .motivational-phrase.active {
140
- opacity: 1;
141
- }
142
  </style>
143
  </head>
144
  <body class="bg-gray-50 min-h-screen">
@@ -146,7 +46,7 @@
146
  <!-- Header -->
147
  <header class="mb-12 text-center">
148
  <h1 class="text-4xl font-bold text-blue-600 mb-2">OmniSearch Pro</h1>
149
- <p class="text-gray-600">The most powerful file search engine - searches across 50+ services simultaneously</p>
150
  </header>
151
 
152
  <!-- Search Box -->
@@ -158,7 +58,7 @@
158
  <input
159
  type="text"
160
  id="searchInput"
161
- placeholder="Search for files across the entire internet"
162
  class="flex-grow py-3 outline-none text-gray-700"
163
  >
164
  <button id="searchBtn" class="bg-blue-600 text-white px-6 py-3 rounded-full hover:bg-blue-700 transition">
@@ -166,573 +66,214 @@
166
  </button>
167
  </div>
168
 
169
- <!-- File Type Filters -->
170
- <div class="flex flex-wrap justify-center mt-6 gap-2">
171
- <button class="file-type-btn active px-4 py-2 rounded-full bg-gray-100 text-gray-700 hover:bg-gray-200 transition">
172
- <i class="fas fa-file-archive mr-2"></i> All Files
173
- </button>
174
- <button class="file-type-btn px-4 py-2 rounded-full bg-gray-100 text-gray-700 hover:bg-gray-200 transition">
175
- <i class="fas fa-file-video mr-2"></i> Video
176
- </button>
177
- <button class="file-type-btn px-4 py-2 rounded-full bg-gray-100 text-gray-700 hover:bg-gray-200 transition">
178
- <i class="fas fa-file-audio mr-2"></i> Audio
179
- </button>
180
- <button class="file-type-btn px-4 py-2 rounded-full bg-gray-100 text-gray-700 hover:bg-gray-200 transition">
181
- <i class="fas fa-file-image mr-2"></i> Images
182
- </button>
183
- <button class="file-type-btn px-4 py-2 rounded-full bg-gray-100 text-gray-700 hover:bg-gray-200 transition">
184
- <i class="fas fa-file-alt mr-2"></i> Documents
185
- </button>
186
- <button class="file-type-btn px-4 py-2 rounded-full bg-gray-100 text-gray-700 hover:bg-gray-200 transition">
187
- <i class="fas fa-file-archive mr-2"></i> Archives
188
- </button>
189
- <button class="file-type-btn px-4 py-2 rounded-full bg-gray-100 text-gray-700 hover:bg-gray-200 transition">
190
- <i class="fas fa-file-code mr-2"></i> Executables
191
- </button>
192
- </div>
193
-
194
  <!-- Advanced Options -->
195
  <div class="mt-6 text-center">
196
  <button id="toggleAdvanced" class="text-blue-600 hover:text-blue-800 text-sm font-medium">
197
  <i class="fas fa-cog mr-1"></i> Advanced Search Options
198
  </button>
199
  <div id="advancedOptions" class="hidden mt-4 p-4 bg-white rounded-lg shadow-sm">
200
- <!-- Search Engines Selection -->
201
- <div class="mb-6">
202
- <div class="text-center mb-2">
203
- <span class="text-sm font-medium text-gray-700">Search Engines:</span>
204
  </div>
205
- <div class="flex flex-wrap justify-center gap-2">
206
- <div class="flex items-center">
207
- <input type="checkbox" id="google" class="mr-1" checked>
208
- <label for="google" class="text-sm service-tag google">Google</label>
209
- </div>
210
- <div class="flex items-center">
211
- <input type="checkbox" id="yandex" class="mr-1" checked>
212
- <label for="yandex" class="text-sm service-tag yandex">Yandex</label>
213
- </div>
214
- <div class="flex items-center">
215
- <input type="checkbox" id="startpage" class="mr-1" checked>
216
- <label for="startpage" class="text-sm service-tag">Startpage</label>
217
- </div>
218
- <div class="flex items-center">
219
- <input type="checkbox" id="archive" class="mr-1" checked>
220
- <label for="archive" class="text-sm service-tag archive">Archive.org</label>
221
- </div>
222
- <div class="flex items-center">
223
- <input type="checkbox" id="bing" class="mr-1">
224
- <label for="bing" class="text-sm service-tag">Bing</label>
225
- </div>
226
  </div>
227
- </div>
228
-
229
- <!-- Hosting Services Selection -->
230
- <div class="mb-6">
231
- <div class="text-center mb-2">
232
- <span class="text-sm font-medium text-gray-700">Hosting Services:</span>
233
  </div>
234
- <div class="flex flex-wrap justify-center gap-2">
235
- <div class="flex items-center">
236
- <input type="checkbox" id="googledrive" class="mr-1" checked>
237
- <label for="googledrive" class="text-sm service-tag google">Google Drive</label>
238
- </div>
239
- <div class="flex items-center">
240
- <input type="checkbox" id="mega" class="mr-1" checked>
241
- <label for="mega" class="text-sm service-tag mega">Mega.nz</label>
242
- </div>
243
- <div class="flex items-center">
244
- <input type="checkbox" id="terabox" class="mr-1" checked>
245
- <label for="terabox" class="text-sm service-tag terabox">Terabox</label>
246
- </div>
247
- <div class="flex items-center">
248
- <input type="checkbox" id="dropbox" class="mr-1" checked>
249
- <label for="dropbox" class="text-sm service-tag dropbox">Dropbox</label>
250
- </div>
251
- <div class="flex items-center">
252
- <input type="checkbox" id="onedrive" class="mr-1" checked>
253
- <label for="onedrive" class="text-sm service-tag onedrive">OneDrive</label>
254
- </div>
255
- <div class="flex items-center">
256
- <input type="checkbox" id="mediafire" class="mr-1" checked>
257
- <label for="mediafire" class="text-sm service-tag mediafire">MediaFire</label>
258
- </div>
259
- <div class="flex items-center">
260
- <input type="checkbox" id="catbox" class="mr-1" checked>
261
- <label for="catbox" class="text-sm service-tag catbox">Catbox.moe</label>
262
- </div>
263
- <div class="flex items-center">
264
- <input type="checkbox" id="sharemania" class="mr-1" checked>
265
- <label for="sharemania" class="text-sm service-tag sharemania">Sharemania</label>
266
- </div>
267
- <div class="flex items-center">
268
- <input type="checkbox" id="torrent" class="mr-1" checked>
269
- <label for="torrent" class="text-sm service-tag torrent">Torrents</label>
270
- </div>
271
- <div class="flex items-center">
272
- <input type="checkbox" id="uploadrar" class="mr-1" checked>
273
- <label for="uploadrar" class="text-sm service-tag uploadrar">UploadRAR</label>
274
- </div>
275
- <div class="flex items-center">
276
- <input type="checkbox" id="buzzheavier" class="mr-1" checked>
277
- <label for="buzzheavier" class="text-sm service-tag buzzheavier">BuzzHeavier</label>
278
- </div>
279
- <div class="flex items-center">
280
- <input type="checkbox" id="pixeldrain" class="mr-1" checked>
281
- <label for="pixeldrain" class="text-sm service-tag pixeldrain">PixelDrain</label>
282
- </div>
283
  </div>
284
- </div>
285
-
286
- <!-- Additional Services -->
287
- <div>
288
- <div class="text-center mb-2">
289
- <span class="text-sm font-medium text-gray-700">Additional Sources:</span>
290
  </div>
291
- <div class="flex flex-wrap justify-center gap-2">
292
- <div class="flex items-center">
293
- <input type="checkbox" id="fastserver" class="mr-1" checked>
294
- <label for="fastserver" class="text-sm service-tag fastserver">FastServer</label>
295
- </div>
296
- <div class="flex items-center">
297
- <input type="checkbox" id="hdvietnam" class="mr-1" checked>
298
- <label for="hdvietnam" class="text-sm service-tag hdvietnam">HDVietnam</label>
299
- </div>
300
- <div class="flex items-center">
301
- <input type="checkbox" id="olala" class="mr-1" checked>
302
- <label for="olala" class="text-sm service-tag olala">OlalaVietnam</label>
303
- </div>
304
- <div class="flex items-center">
305
- <input type="checkbox" id="rutracker" class="mr-1" checked>
306
- <label for="rutracker" class="text-sm service-tag rutracker">RuTracker</label>
307
- </div>
308
- <div class="flex items-center">
309
- <input type="checkbox" id="boyvideos" class="mr-1" checked>
310
- <label for="boyvideos" class="text-sm service-tag boyvideos">BoyVideos</label>
311
- </div>
312
- <div class="flex items-center">
313
- <input type="checkbox" id="xbuddy" class="mr-1" checked>
314
- <label for="xbuddy" class="text-sm service-tag xbuddy">9xBuddy</label>
315
- </div>
316
- <div class="flex items-center">
317
- <input type="checkbox" id="reddit" class="mr-1" checked>
318
- <label for="reddit" class="text-sm service-tag reddit">Reddit</label>
319
- </div>
320
- <div class="flex items-center">
321
- <input type="checkbox" id="ulozto" class="mr-1" checked>
322
- <label for="ulozto" class="text-sm service-tag ulozto">Uloz.to</label>
323
- </div>
324
- <div class="flex items-center">
325
- <input type="checkbox" id="seedr" class="mr-1" checked>
326
- <label for="seedr" class="text-sm service-tag seedr">Seedr.cc</label>
327
- </div>
328
  </div>
329
- </div>
330
-
331
- <!-- Advanced Search Options -->
332
- <div class="mt-6">
333
- <div class="grid grid-cols-1 md:grid-cols-3 gap-4">
334
- <div>
335
- <label class="block text-sm font-medium text-gray-700 mb-1">File Size</label>
336
- <select class="w-full p-2 border rounded">
337
- <option>Any size</option>
338
- <option>Small (0-10MB)</option>
339
- <option>Medium (10-100MB)</option>
340
- <option>Large (100MB-1GB)</option>
341
- <option>Very Large (1GB+)</option>
342
- </select>
343
- </div>
344
- <div>
345
- <label class="block text-sm font-medium text-gray-700 mb-1">Date Range</label>
346
- <select class="w-full p-2 border rounded">
347
- <option>Any time</option>
348
- <option>Last 24 hours</option>
349
- <option>Last week</option>
350
- <option>Last month</option>
351
- <option>Last year</option>
352
- <option>Custom range...</option>
353
- </select>
354
- </div>
355
- <div>
356
- <label class="block text-sm font-medium text-gray-700 mb-1">File Extension</label>
357
- <input type="text" placeholder="e.g. .iso, .mkv" class="w-full p-2 border rounded">
358
- </div>
359
  </div>
360
- <div class="mt-4">
361
- <label class="block text-sm font-medium text-gray-700 mb-1">Custom Search Query</label>
362
- <textarea class="w-full p-2 border rounded" rows="2" placeholder="Add custom search operators (site:, filetype:, etc.)"></textarea>
363
  </div>
364
- <div class="mt-4">
365
- <label class="flex items-center">
366
- <input type="checkbox" class="mr-2" checked>
367
- <span class="text-sm text-gray-700">Search YouTube descriptions and comments</span>
368
- </label>
369
- <label class="flex items-center mt-2">
370
- <input type="checkbox" class="mr-2" checked>
371
- <span class="text-sm text-gray-700">Search social media posts</span>
372
- </label>
373
- <label class="flex items-center mt-2">
374
- <input type="checkbox" class="mr-2" checked>
375
- <span class="text-sm text-gray-700">Search forum discussions</span>
376
- </label>
377
  </div>
378
  </div>
379
  </div>
380
  </div>
381
  </div>
382
 
383
- <!-- Results Section (initially hidden) -->
384
  <div id="resultsSection" class="max-w-6xl mx-auto hidden">
385
  <div class="flex justify-between items-center mb-6">
386
  <h2 class="text-xl font-semibold text-gray-800">Search Results</h2>
387
- <div class="text-sm text-gray-500">About 0 results from 0 services (0.00 seconds)</div>
388
- </div>
389
-
390
- <!-- Search Status -->
391
- <div class="bg-blue-50 border border-blue-200 rounded-lg p-3 mb-4 hidden" id="searchStatus">
392
- <div class="flex items-center">
393
- <div class="mr-3 text-blue-600">
394
- <i class="fas fa-info-circle"></i>
395
- </div>
396
- <div class="text-sm text-blue-800">
397
- Ready to search across selected services
398
- </div>
399
- </div>
400
- </div>
401
-
402
- <!-- Sorting Options -->
403
- <div class="flex items-center mb-4">
404
- <span class="text-sm text-gray-600 mr-2">Sort by:</span>
405
- <select class="text-sm border rounded p-1 bg-white">
406
- <option>Relevance</option>
407
- <option>Newest</option>
408
- <option>Oldest</option>
409
- <option>Largest</option>
410
- <option>Smallest</option>
411
- <option>Most Popular</option>
412
- </select>
413
  </div>
414
 
415
- <!-- Results List -->
416
- <div class="space-y-4" id="resultsContainer">
417
- <!-- Results will be dynamically inserted here -->
418
- </div>
419
-
420
- <!-- Pagination -->
421
- <div class="flex justify-center mt-8 hidden" id="pagination">
422
- <nav class="inline-flex rounded-md shadow-sm">
423
- <a href="#" class="px-3 py-2 rounded-l-md border border-gray-300 bg-white text-gray-500 hover:bg-gray-50">
424
- <i class="fas fa-chevron-left"></i>
425
- </a>
426
- <a href="#" class="px-4 py-2 border-t border-b border-gray-300 bg-white text-blue-600 font-medium">1</a>
427
- <a href="#" class="px-4 py-2 border-t border-b border-gray-300 bg-white text-gray-500 hover:bg-gray-50">2</a>
428
- <a href="#" class="px-4 py-2 border-t border-b border-gray-300 bg-white text-gray-500 hover:bg-gray-50">3</a>
429
- <span class="px-4 py-2 border-t border-b border-gray-300 bg-white text-gray-500">...</span>
430
- <a href="#" class="px-4 py-2 border-t border-b border-gray-300 bg-white text-gray-500 hover:bg-gray-50">8</a>
431
- <a href="#" class="px-3 py-2 rounded-r-md border border-gray-300 bg-white text-gray-500 hover:bg-gray-50">
432
- <i class="fas fa-chevron-right"></i>
433
- </a>
434
- </nav>
435
  </div>
436
  </div>
437
-
438
- <!-- Footer -->
439
- <footer class="mt-16 pt-8 border-t border-gray-200 text-center text-gray-500 text-sm">
440
- <div class="mb-4">
441
- <a href="#" class="mx-2 hover:text-blue-600">About</a>
442
- <a href="#" class="mx-2 hover:text-blue-600">Privacy</a>
443
- <a href="#" class="mx-2 hover:text-blue-600">Terms</a>
444
- <a href="#" class="mx-2 hover:text-blue-600">API</a>
445
- <a href="#" class="mx-2 hover:text-blue-600">Contact</a>
446
- </div>
447
- <p>© 2023 OmniSearch Pro - Searches across 50+ search engines and file hosting services</p>
448
- <p class="mt-1 text-xs">Disclaimer: This service only indexes publicly available files. We do not host any content.</p>
449
- </footer>
450
  </div>
451
 
452
  <script>
453
- // Sample search results data
454
- const sampleResults = {
455
- "default": [
456
- {
457
- title: "Example File Search Result",
458
- service: "Google Drive",
459
- serviceClass: "google",
460
- icon: "file-alt",
461
- iconColor: "blue",
462
- size: "2.1 MB",
463
- date: "2023-01-15",
464
- views: "856",
465
- verified: true,
466
- description: "This is an example search result that would appear when searching for files. The actual content would vary based on your search query.",
467
- tags: ["PDF", "Document", "Example"],
468
- url: "https://drive.google.com/file/d/1example123/view",
469
- filename: "Example_File.pdf"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
470
  }
471
- ]
 
472
  };
473
 
474
- // Motivational phrases for search
475
- const motivationalPhrases = [
476
- "If it's taking time, it's a good thing! We're probably searching the entire internet for you.",
477
- "Good things come to those who wait... especially when searching billions of files!",
478
- "We're not just searching, we're conducting a digital treasure hunt!",
479
- "Searching through more places than your nosy neighbor checks their window.",
480
- "Our search spiders are crawling through every nook and cranny of the web!",
481
- "Checking under every digital rock for your files...",
482
- "Even searching YouTube descriptions and comments for hidden download links!",
483
- "Scanning forums and social media for those elusive file mentions...",
484
- "The internet is big, but we're bigger! Keep waiting a bit longer...",
485
- "We found some results already, but we're being thorough and checking more sources!",
486
- "Searching the deep web, the dark web, and even that one weird forum from 2004...",
487
- "Checking every possible file hosting service known to humankind!",
488
- "Our algorithms are working overtime to find you the best files!",
489
- "We're not just searching - we're performing digital archaeology!",
490
- "Looking in places even Google doesn't index regularly...",
491
- "Scanning torrent trackers, file lockers, and cloud storage simultaneously!",
492
- "Checking both the front page and page 37 of search results...",
493
- "Searching international versions of sites for more results...",
494
- "We found some files, but we're verifying they're the best ones for you!",
495
- "Almost done! Just checking a few more obscure sources..."
496
- ];
497
-
498
- // Toggle advanced options
499
- document.getElementById('toggleAdvanced').addEventListener('click', function() {
500
- const options = document.getElementById('advancedOptions');
501
- options.classList.toggle('hidden');
502
- this.innerHTML = options.classList.contains('hidden')
503
- ? '<i class="fas fa-cog mr-1"></i> Advanced Search Options'
504
- : '<i class="fas fa-times mr-1"></i> Hide Advanced Options';
505
- });
506
-
507
- // File type filter buttons
508
- const fileTypeBtns = document.querySelectorAll('.file-type-btn');
509
- fileTypeBtns.forEach(btn => {
510
- btn.addEventListener('click', function() {
511
- fileTypeBtns.forEach(b => b.classList.remove('active'));
512
- this.classList.add('active');
513
- });
514
- });
515
-
516
- // Create a result card element
517
- function createResultCard(result) {
518
- const card = document.createElement('div');
519
- card.className = 'result-card bg-white p-4 rounded-lg shadow-sm border border-gray-100 transition-all duration-200';
520
- card.innerHTML = `
521
- <div class="flex flex-col md:flex-row">
522
- <div class="flex-shrink-0 mb-4 md:mb-0 md:mr-4">
523
- <div class="w-16 h-16 bg-${result.iconColor}-100 rounded-lg flex items-center justify-center">
524
- <i class="fas fa-${result.icon} text-${result.iconColor}-600 text-2xl"></i>
525
- </div>
526
- </div>
527
- <div class="flex-grow">
528
- <div class="flex items-center mb-1">
529
- <h3 class="text-lg font-medium text-blue-600 hover:underline cursor-pointer">
530
- ${result.title}
531
- </h3>
532
- <span class="ml-2 px-2 py-1 bg-${result.iconColor}-100 text-${result.iconColor}-800 text-xs rounded-full service-tag ${result.serviceClass}">${result.service}</span>
533
- </div>
534
- <div class="flex flex-wrap items-center text-sm text-gray-500 mt-1 mb-2">
535
- <span class="mr-3"><i class="fas fa-database mr-1"></i> ${result.size}</span>
536
- <span class="mr-3"><i class="fas fa-calendar-alt mr-1"></i> ${result.date.includes('seeders') ? 'Seeders:' : 'Uploaded:'} ${result.date}</span>
537
- <span class="mr-3"><i class="fas fa-${result.date.includes('seeders') ? 'users' : 'eye'} mr-1"></i> ${result.views}</span>
538
- ${result.verified ? '<span><i class="fas fa-check-circle mr-1 text-green-500"></i> Verified</span>' : ''}
539
- </div>
540
- <p class="text-gray-700 text-sm mb-3">
541
- ${result.description}
542
- </p>
543
- <div class="flex flex-wrap gap-2">
544
- ${result.tags.map(tag => `<span class="px-2 py-1 bg-gray-100 text-gray-700 rounded text-xs">${tag}</span>`).join('')}
545
- </div>
546
- </div>
547
- <div class="flex-shrink-0 mt-4 md:mt-0 md:ml-4">
548
- <button class="download-btn bg-green-600 hover:bg-green-700 text-white px-4 py-2 rounded-lg flex items-center"
549
- data-url="${result.url}"
550
- data-filename="${result.filename}">
551
- <i class="fas fa-${result.service === 'Torrent' ? 'magnet' : 'download'} mr-2"></i> ${result.service === 'Torrent' ? 'Magnet Link' : 'Download'}
552
- </button>
553
- </div>
554
- </div>
555
- `;
556
- return card;
557
- }
558
 
559
- // Handle download button clicks
560
- function setupDownloadButtons() {
561
- document.querySelectorAll('.download-btn').forEach(btn => {
562
- btn.addEventListener('click', function() {
563
- const url = this.getAttribute('data-url');
564
- const filename = this.getAttribute('data-filename') || 'download';
565
-
566
- // Show loading state on button
567
- const originalContent = this.innerHTML;
568
- this.innerHTML = '<i class="fas fa-spinner fa-spin mr-2"></i> Preparing...';
569
- this.classList.remove('hover:bg-green-700');
570
- this.classList.add('bg-green-500');
571
-
572
- // Simulate download preparation
573
- setTimeout(() => {
574
- // For demo purposes, we'll just open in new tab
575
- // In a real app, you'd handle the download properly
576
- if(url.startsWith('magnet:')) {
577
- // Handle magnet links
578
- window.open(url, '_blank');
579
- } else {
580
- // Create a temporary anchor to trigger download
581
- const a = document.createElement('a');
582
- a.href = url;
583
- a.target = '_blank';
584
- a.download = filename;
585
- document.body.appendChild(a);
586
- a.click();
587
- document.body.removeChild(a);
588
- }
589
 
590
- // Restore button state
591
- this.innerHTML = originalContent;
592
- this.classList.add('hover:bg-green-700');
593
- this.classList.remove('bg-green-500');
594
- }, 1000);
595
- });
596
- });
597
- }
598
-
599
- // Simulate search across multiple services
600
- document.getElementById('searchBtn').addEventListener('click', function() {
601
- const query = document.getElementById('searchInput').value.trim();
602
- if (query) {
603
- // Show results section
604
- const resultsSection = document.getElementById('resultsSection');
605
- resultsSection.classList.remove('hidden');
606
-
607
- // Get selected services
608
- const selectedSearchEngines = Array.from(document.querySelectorAll('input[type="checkbox"][id^="google"], input[type="checkbox"][id^="yandex"], input[type="checkbox"][id^="startpage"], input[type="checkbox"][id^="archive"], input[type="checkbox"][id^="bing"]'))
609
- .filter(cb => cb.checked)
610
- .map(cb => cb.nextElementSibling.textContent);
611
-
612
- const selectedHostingServices = Array.from(document.querySelectorAll('input[type="checkbox"][id^="googledrive"], input[type="checkbox"][id^="mega"], input[type="checkbox"][id^="terabox"], input[type="checkbox"][id^="dropbox"], input[type="checkbox"][id^="onedrive"], input[type="checkbox"][id^="mediafire"], input[type="checkbox"][id^="catbox"], input[type="checkbox"][id^="sharemania"], input[type="checkbox"][id^="torrent"], input[type="checkbox"][id^="uploadrar"], input[type="checkbox"][id^="buzzheavier"], input[type="checkbox"][id^="pixeldrain"]'))
613
- .filter(cb => cb.checked)
614
- .map(cb => cb.nextElementSibling.textContent);
615
-
616
- const selectedAdditionalServices = Array.from(document.querySelectorAll('input[type="checkbox"][id^="fastserver"], input[type="checkbox"][id^="hdvietnam"], input[type="checkbox"][id^="olala"], input[type="checkbox"][id^="rutracker"], input[type="checkbox"][id^="boyvideos"], input[type="checkbox"][id^="xbuddy"], input[type="checkbox"][id^="reddit"], input[type="checkbox"][id^="ulozto"], input[type="checkbox"][id^="seedr"]'))
617
- .filter(cb => cb.checked)
618
- .map(cb => cb.nextElementSibling.textContent);
619
 
620
- // Update UI
621
- document.querySelector('#resultsSection h2').textContent = `Search Results for "${query}"`;
622
-
623
- // Show search status
624
- const searchStatus = document.getElementById('searchStatus');
625
- searchStatus.classList.remove('hidden');
626
- searchStatus.querySelector('.text-sm').textContent = `Searching across: ${selectedSearchEngines.join(', ')}, ${selectedHostingServices.join(', ')}, ${selectedAdditionalServices.join(', ')}`;
627
-
628
- // Create search animation container
629
- const resultsContainer = document.getElementById('resultsContainer');
630
- const originalContent = resultsContainer.innerHTML;
631
-
632
- resultsContainer.innerHTML = `
633
- <div class="search-animation mb-8">
634
- <div class="magnifying-glass rotating"></div>
635
- <div class="search-dots">
636
- <div class="search-dot"></div>
637
- <div class="search-dot"></div>
638
- <div class="search-dot"></div>
639
- </div>
640
- </div>
641
- <div id="motivationalPhrase" class="motivational-phrase active">
642
- ${motivationalPhrases[0]}
643
- </div>
644
- <div class="animate-pulse bg-white p-4 rounded-lg shadow-sm border border-gray-100">
645
- <div class="flex space-x-4">
646
- <div class="w-16 h-16 bg-gray-200 rounded-lg"></div>
647
- <div class="flex-1 space-y-4 py-1">
648
- <div class="h-4 bg-gray-200 rounded w-3/4"></div>
649
- <div class="space-y-2">
650
- <div class="h-4 bg-gray-200 rounded"></div>
651
- <div class="h-4 bg-gray-200 rounded w-5/6"></div>
652
  </div>
 
 
 
 
 
 
653
  </div>
654
  </div>
655
  </div>
656
  `;
657
-
658
- // Show motivational phrases during search
659
- let phraseIndex = 1;
660
- const phraseInterval = setInterval(() => {
661
- const phraseElement = document.getElementById('motivationalPhrase');
662
- if (phraseElement) {
663
- phraseElement.classList.remove('active');
664
- setTimeout(() => {
665
- phraseElement.textContent = motivationalPhrases[phraseIndex % motivationalPhrases.length];
666
- phraseElement.classList.add('active');
667
- phraseIndex++;
668
- }, 500);
669
- }
670
- }, 4000);
671
-
672
- // Simulate API delay with progress updates
673
- let progress = 0;
674
- const progressInterval = setInterval(() => {
675
- progress += 5 + Math.random() * 5; // Random progress increment
676
- if (progress > 100) progress = 100;
677
-
678
- const statusElement = document.querySelector('#resultsSection .text-sm.text-gray-500');
679
- if (statusElement) {
680
- let currentService;
681
- if (progress < 30) {
682
- currentService = selectedSearchEngines[Math.floor(progress / 30 * selectedSearchEngines.length)];
683
- } else if (progress < 70) {
684
- currentService = selectedHostingServices[Math.floor((progress - 30) / 40 * selectedHostingServices.length)];
685
- } else {
686
- currentService = selectedAdditionalServices[Math.floor((progress - 70) / 30 * selectedAdditionalServices.length)];
687
- }
688
-
689
- statusElement.textContent = `Searching... ${Math.floor(progress)}% complete (querying ${currentService})`;
690
- }
691
-
692
- if (progress >= 100) {
693
- clearInterval(progressInterval);
694
- clearInterval(phraseInterval);
695
-
696
- setTimeout(() => {
697
- // Display results
698
- const results = sampleResults["default"];
699
- resultsContainer.innerHTML = '';
700
-
701
- // Filter results based on selected hosting services
702
- const filteredResults = results.filter(result => {
703
- // If no hosting services are selected, show all results
704
- if (selectedHostingServices.length === 0 && selectedAdditionalServices.length === 0) return true;
705
-
706
- // Check if result's service is in selected hosting services or additional services
707
- return selectedHostingServices.includes(result.service) || selectedAdditionalServices.includes(result.service);
708
- });
709
-
710
- filteredResults.forEach(result => {
711
- resultsContainer.appendChild(createResultCard(result));
712
- });
713
-
714
- // Update status
715
- document.querySelector('#resultsSection .text-sm.text-gray-500').textContent =
716
- `About ${filteredResults.length} results from ${selectedSearchEngines.length + selectedHostingServices.length + selectedAdditionalServices.length} services (${(Math.random() * 0.5 + 0.3).toFixed(2)} seconds)`;
717
-
718
- // Show pagination if enough results
719
- if (filteredResults.length > 5) {
720
- document.getElementById('pagination').classList.remove('hidden');
721
- }
722
-
723
- // Make download buttons work
724
- setupDownloadButtons();
725
- }, 1500);
726
- }
727
- }, 200);
728
- } else {
729
- alert("Please enter a search query first!");
730
- }
731
- });
732
 
733
- // Initialize download buttons if page loads with results
734
- document.addEventListener('DOMContentLoaded', function() {
735
- setupDownloadButtons();
 
 
 
 
736
  });
737
  </script>
738
  <p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=floribella/teste" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
 
21
  transform: translateY(-2px);
22
  box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
23
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
24
  .service-tag::before {
25
  content: "";
26
+ display: inline-block;
 
 
 
27
  width: 8px;
28
  height: 8px;
29
  border-radius: 50%;
30
+ margin-right: 6px;
31
  }
32
  .service-tag.google::before { background-color: #4285F4; }
 
 
 
 
 
 
 
 
 
 
 
 
 
33
  .service-tag.fastserver::before { background-color: #00BFA5; }
34
  .service-tag.hdvietnam::before { background-color: #FF6D00; }
35
  .service-tag.olala::before { background-color: #AA00FF; }
 
39
  .service-tag.reddit::before { background-color: #FF5700; }
40
  .service-tag.ulozto::before { background-color: #0091EA; }
41
  .service-tag.seedr::before { background-color: #00B8D4; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
42
  </style>
43
  </head>
44
  <body class="bg-gray-50 min-h-screen">
 
46
  <!-- Header -->
47
  <header class="mb-12 text-center">
48
  <h1 class="text-4xl font-bold text-blue-600 mb-2">OmniSearch Pro</h1>
49
+ <p class="text-gray-600">Search across multiple file hosting services simultaneously</p>
50
  </header>
51
 
52
  <!-- Search Box -->
 
58
  <input
59
  type="text"
60
  id="searchInput"
61
+ placeholder="Search for files across multiple services"
62
  class="flex-grow py-3 outline-none text-gray-700"
63
  >
64
  <button id="searchBtn" class="bg-blue-600 text-white px-6 py-3 rounded-full hover:bg-blue-700 transition">
 
66
  </button>
67
  </div>
68
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
69
  <!-- Advanced Options -->
70
  <div class="mt-6 text-center">
71
  <button id="toggleAdvanced" class="text-blue-600 hover:text-blue-800 text-sm font-medium">
72
  <i class="fas fa-cog mr-1"></i> Advanced Search Options
73
  </button>
74
  <div id="advancedOptions" class="hidden mt-4 p-4 bg-white rounded-lg shadow-sm">
75
+ <div class="flex flex-wrap justify-center gap-4">
76
+ <div class="flex items-center">
77
+ <input type="checkbox" id="fastserver" class="mr-2" checked>
78
+ <label for="fastserver" class="text-sm service-tag fastserver">FastServer</label>
79
  </div>
80
+ <div class="flex items-center">
81
+ <input type="checkbox" id="hdvietnam" class="mr-2" checked>
82
+ <label for="hdvietnam" class="text-sm service-tag hdvietnam">HDVietnam</label>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
83
  </div>
84
+ <div class="flex items-center">
85
+ <input type="checkbox" id="olala" class="mr-2" checked>
86
+ <label for="olala" class="text-sm service-tag olala">OlalaVietnam</label>
 
 
 
87
  </div>
88
+ <div class="flex items-center">
89
+ <input type="checkbox" id="rutracker" class="mr-2" checked>
90
+ <label for="rutracker" class="text-sm service-tag rutracker">RuTracker</label>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
91
  </div>
92
+ <div class="flex items-center">
93
+ <input type="checkbox" id="boyvideos" class="mr-2" checked>
94
+ <label for="boyvideos" class="text-sm service-tag boyvideos">BoyVideos</label>
 
 
 
95
  </div>
96
+ <div class="flex items-center">
97
+ <input type="checkbox" id="xbuddy" class="mr-2" checked>
98
+ <label for="xbuddy" class="text-sm service-tag xbuddy">9xBuddy</label>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
99
  </div>
100
+ <div class="flex items-center">
101
+ <input type="checkbox" id="reddit" class="mr-2" checked>
102
+ <label for="reddit" class="text-sm service-tag reddit">Reddit</label>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
103
  </div>
104
+ <div class="flex items-center">
105
+ <input type="checkbox" id="ulozto" class="mr-2" checked>
106
+ <label for="ulozto" class="text-sm service-tag ulozto">Uloz.to</label>
107
  </div>
108
+ <div class="flex items-center">
109
+ <input type="checkbox" id="seedr" class="mr-2" checked>
110
+ <label for="seedr" class="text-sm service-tag seedr">Seedr.cc</label>
 
 
 
 
 
 
 
 
 
 
111
  </div>
112
  </div>
113
  </div>
114
  </div>
115
  </div>
116
 
117
+ <!-- Results Section -->
118
  <div id="resultsSection" class="max-w-6xl mx-auto hidden">
119
  <div class="flex justify-between items-center mb-6">
120
  <h2 class="text-xl font-semibold text-gray-800">Search Results</h2>
121
+ <div class="text-sm text-gray-500" id="resultStats">About 0 results from 0 services (0.00 seconds)</div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
122
  </div>
123
 
124
+ <div id="resultsContainer" class="space-y-4">
125
+ <!-- Results will appear here -->
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
126
  </div>
127
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
128
  </div>
129
 
130
  <script>
131
+ // Service configurations
132
+ const services = {
133
+ fastserver: {
134
+ name: "FastServer",
135
+ class: "fastserver",
136
+ search: async (query) => {
137
+ // This would be replaced with actual API call
138
+ return new Promise(resolve => {
139
+ setTimeout(() => {
140
+ resolve([
141
+ {
142
+ title: `${query} files on FastServer`,
143
+ service: "FastServer",
144
+ size: "1.2 GB",
145
+ date: "2023-05-10",
146
+ views: "1245",
147
+ description: `Found multiple files related to ${query} on FastServer.`,
148
+ url: "http://fastserver.me/big/index.php?q=" + encodeURIComponent(query),
149
+ filename: `${query}_files.zip`
150
+ }
151
+ ]);
152
+ }, 800);
153
+ });
154
+ }
155
+ },
156
+ hdvietnam: {
157
+ name: "HDVietnam",
158
+ class: "hdvietnam",
159
+ search: async (query) => {
160
+ return new Promise(resolve => {
161
+ setTimeout(() => {
162
+ resolve([
163
+ {
164
+ title: `HD ${query} collection`,
165
+ service: "HDVietnam",
166
+ size: "4.7 GB",
167
+ date: "2023-06-15",
168
+ views: "876",
169
+ description: `High quality ${query} files available on HDVietnam.`,
170
+ url: "http://hdvietnam.com/search?q=" + encodeURIComponent(query),
171
+ filename: `hd_${query}_collection.rar`
172
+ }
173
+ ]);
174
+ }, 1200);
175
+ });
176
  }
177
+ },
178
+ // Add similar configurations for other services...
179
  };
180
 
181
+ // Search function
182
+ document.getElementById('searchBtn').addEventListener('click', async function() {
183
+ const query = document.getElementById('searchInput').value.trim();
184
+ if (!query) {
185
+ alert("Please enter a search term");
186
+ return;
187
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
188
 
189
+ // Show results section
190
+ const resultsSection = document.getElementById('resultsSection');
191
+ resultsSection.classList.remove('hidden');
192
+
193
+ // Clear previous results
194
+ const resultsContainer = document.getElementById('resultsContainer');
195
+ resultsContainer.innerHTML = '<div class="text-center py-8"><i class="fas fa-spinner fa-spin text-2xl text-blue-500"></i><p class="mt-2">Searching across services...</p></div>';
196
+
197
+ // Get selected services
198
+ const selectedServices = Array.from(document.querySelectorAll('#advancedOptions input[type="checkbox"]:checked'))
199
+ .map(checkbox => checkbox.id);
200
+
201
+ // Perform searches
202
+ let allResults = [];
203
+ const startTime = Date.now();
204
+
205
+ for (const serviceId of selectedServices) {
206
+ if (services[serviceId]) {
207
+ try {
208
+ const serviceResults = await services[serviceId].search(query);
209
+ allResults = allResults.concat(serviceResults);
 
 
 
 
 
 
 
 
 
210
 
211
+ // Update UI with partial results
212
+ updateResultsUI(allResults, selectedServices.length, startTime);
213
+ } catch (error) {
214
+ console.error(`Error searching ${serviceId}:`, error);
215
+ }
216
+ }
217
+ }
218
+
219
+ // Final update
220
+ updateResultsUI(allResults, selectedServices.length, startTime);
221
+ });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
222
 
223
+ // Update results UI
224
+ function updateResultsUI(results, totalServices, startTime) {
225
+ const elapsedTime = ((Date.now() - startTime) / 1000).toFixed(2);
226
+ const resultsContainer = document.getElementById('resultsContainer');
227
+
228
+ // Update stats
229
+ document.getElementById('resultStats').textContent =
230
+ `About ${results.length} results from ${totalServices} services (${elapsedTime} seconds)`;
231
+
232
+ // Display results
233
+ if (results.length === 0) {
234
+ resultsContainer.innerHTML = '<div class="text-center py-8 text-gray-500">No results found. Try a different search term.</div>';
235
+ return;
236
+ }
237
+
238
+ let html = '';
239
+ results.forEach(result => {
240
+ html += `
241
+ <div class="result-card bg-white p-4 rounded-lg shadow-sm border border-gray-100">
242
+ <div class="flex flex-col md:flex-row">
243
+ <div class="flex-grow">
244
+ <div class="flex items-center mb-1">
245
+ <h3 class="text-lg font-medium text-blue-600">
246
+ <a href="${result.url}" target="_blank">${result.title}</a>
247
+ </h3>
248
+ <span class="ml-2 px-2 py-1 bg-gray-100 text-gray-800 text-xs rounded-full service-tag ${result.service.toLowerCase()}">${result.service}</span>
249
+ </div>
250
+ <div class="text-sm text-gray-500 mb-2">
251
+ <span class="mr-3"><i class="fas fa-database mr-1"></i> ${result.size}</span>
252
+ <span class="mr-3"><i class="fas fa-calendar-alt mr-1"></i> ${result.date}</span>
253
+ <span><i class="fas fa-eye mr-1"></i> ${result.views}</span>
 
254
  </div>
255
+ <p class="text-gray-700 text-sm mb-3">${result.description}</p>
256
+ </div>
257
+ <div class="flex-shrink-0 mt-4 md:mt-0 md:ml-4">
258
+ <a href="${result.url}" target="_blank" class="inline-block bg-green-600 hover:bg-green-700 text-white px-4 py-2 rounded-lg">
259
+ <i class="fas fa-external-link-alt mr-2"></i> View
260
+ </a>
261
  </div>
262
  </div>
263
  </div>
264
  `;
265
+ });
266
+
267
+ resultsContainer.innerHTML = html;
268
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
269
 
270
+ // Toggle advanced options
271
+ document.getElementById('toggleAdvanced').addEventListener('click', function() {
272
+ const options = document.getElementById('advancedOptions');
273
+ options.classList.toggle('hidden');
274
+ this.innerHTML = options.classList.contains('hidden')
275
+ ? '<i class="fas fa-cog mr-1"></i> Advanced Search Options'
276
+ : '<i class="fas fa-times mr-1"></i> Hide Options';
277
  });
278
  </script>
279
  <p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=floribella/teste" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>