Spaces:
Running
Running
| <html lang="en"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
| <title>OmniSearch Pro - Ultimate File Search Engine</title> | |
| <script src="https://cdn.tailwindcss.com"></script> | |
| <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"> | |
| <style> | |
| .search-box { | |
| box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); | |
| } | |
| .search-box:focus-within { | |
| box-shadow: 0 10px 25px -5px rgba(59, 130, 246, 0.3), 0 10px 10px -5px rgba(59, 130, 246, 0.1); | |
| } | |
| .file-type-btn.active { | |
| background-color: #3b82f6; | |
| color: white; | |
| } | |
| .result-card:hover { | |
| transform: translateY(-2px); | |
| box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1); | |
| } | |
| .service-tag::before { | |
| content: ""; | |
| display: inline-block; | |
| width: 8px; | |
| height: 8px; | |
| border-radius: 50%; | |
| margin-right: 6px; | |
| } | |
| .service-tag.google::before { background-color: #4285F4; } | |
| .service-tag.fastserver::before { background-color: #00BFA5; } | |
| .service-tag.hdvietnam::before { background-color: #FF6D00; } | |
| .service-tag.olala::before { background-color: #AA00FF; } | |
| .service-tag.rutracker::before { background-color: #00C853; } | |
| .service-tag.boyvideos::before { background-color: #2962FF; } | |
| .service-tag.xbuddy::before { background-color: #D50000; } | |
| .service-tag.reddit::before { background-color: #FF5700; } | |
| .service-tag.ulozto::before { background-color: #0091EA; } | |
| .service-tag.seedr::before { background-color: #00B8D4; } | |
| </style> | |
| </head> | |
| <body class="bg-gray-50 min-h-screen"> | |
| <div class="container mx-auto px-4 py-8"> | |
| <!-- Header --> | |
| <header class="mb-12 text-center"> | |
| <h1 class="text-4xl font-bold text-blue-600 mb-2">OmniSearch Pro</h1> | |
| <p class="text-gray-600">Search across multiple file hosting services simultaneously</p> | |
| </header> | |
| <!-- Search Box --> | |
| <div class="max-w-4xl mx-auto mb-8"> | |
| <div class="search-box bg-white rounded-full p-2 flex items-center transition-all duration-300"> | |
| <div class="px-4 text-gray-400"> | |
| <i class="fas fa-search"></i> | |
| </div> | |
| <input | |
| type="text" | |
| id="searchInput" | |
| placeholder="Search for files across multiple services" | |
| class="flex-grow py-3 outline-none text-gray-700" | |
| > | |
| <button id="searchBtn" class="bg-blue-600 text-white px-6 py-3 rounded-full hover:bg-blue-700 transition"> | |
| <i class="fas fa-bolt mr-2"></i> Search | |
| </button> | |
| </div> | |
| <!-- Advanced Options --> | |
| <div class="mt-6 text-center"> | |
| <button id="toggleAdvanced" class="text-blue-600 hover:text-blue-800 text-sm font-medium"> | |
| <i class="fas fa-cog mr-1"></i> Advanced Search Options | |
| </button> | |
| <div id="advancedOptions" class="hidden mt-4 p-4 bg-white rounded-lg shadow-sm"> | |
| <div class="flex flex-wrap justify-center gap-4"> | |
| <div class="flex items-center"> | |
| <input type="checkbox" id="fastserver" class="mr-2" checked> | |
| <label for="fastserver" class="text-sm service-tag fastserver">FastServer</label> | |
| </div> | |
| <div class="flex items-center"> | |
| <input type="checkbox" id="hdvietnam" class="mr-2" checked> | |
| <label for="hdvietnam" class="text-sm service-tag hdvietnam">HDVietnam</label> | |
| </div> | |
| <div class="flex items-center"> | |
| <input type="checkbox" id="olala" class="mr-2" checked> | |
| <label for="olala" class="text-sm service-tag olala">OlalaVietnam</label> | |
| </div> | |
| <div class="flex items-center"> | |
| <input type="checkbox" id="rutracker" class="mr-2" checked> | |
| <label for="rutracker" class="text-sm service-tag rutracker">RuTracker</label> | |
| </div> | |
| <div class="flex items-center"> | |
| <input type="checkbox" id="boyvideos" class="mr-2" checked> | |
| <label for="boyvideos" class="text-sm service-tag boyvideos">BoyVideos</label> | |
| </div> | |
| <div class="flex items-center"> | |
| <input type="checkbox" id="xbuddy" class="mr-2" checked> | |
| <label for="xbuddy" class="text-sm service-tag xbuddy">9xBuddy</label> | |
| </div> | |
| <div class="flex items-center"> | |
| <input type="checkbox" id="reddit" class="mr-2" checked> | |
| <label for="reddit" class="text-sm service-tag reddit">Reddit</label> | |
| </div> | |
| <div class="flex items-center"> | |
| <input type="checkbox" id="ulozto" class="mr-2" checked> | |
| <label for="ulozto" class="text-sm service-tag ulozto">Uloz.to</label> | |
| </div> | |
| <div class="flex items-center"> | |
| <input type="checkbox" id="seedr" class="mr-2" checked> | |
| <label for="seedr" class="text-sm service-tag seedr">Seedr.cc</label> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| </div> | |
| <!-- Results Section --> | |
| <div id="resultsSection" class="max-w-6xl mx-auto hidden"> | |
| <div class="flex justify-between items-center mb-6"> | |
| <h2 class="text-xl font-semibold text-gray-800">Search Results</h2> | |
| <div class="text-sm text-gray-500" id="resultStats">About 0 results from 0 services (0.00 seconds)</div> | |
| </div> | |
| <div id="resultsContainer" class="space-y-4"> | |
| <!-- Results will appear here --> | |
| </div> | |
| </div> | |
| </div> | |
| <script> | |
| // Service configurations | |
| const services = { | |
| fastserver: { | |
| name: "FastServer", | |
| class: "fastserver", | |
| search: async (query) => { | |
| // This would be replaced with actual API call | |
| return new Promise(resolve => { | |
| setTimeout(() => { | |
| resolve([ | |
| { | |
| title: `${query} files on FastServer`, | |
| service: "FastServer", | |
| size: "1.2 GB", | |
| date: "2023-05-10", | |
| views: "1245", | |
| description: `Found multiple files related to ${query} on FastServer.`, | |
| url: "http://fastserver.me/big/index.php?q=" + encodeURIComponent(query), | |
| filename: `${query}_files.zip` | |
| } | |
| ]); | |
| }, 800); | |
| }); | |
| } | |
| }, | |
| hdvietnam: { | |
| name: "HDVietnam", | |
| class: "hdvietnam", | |
| search: async (query) => { | |
| return new Promise(resolve => { | |
| setTimeout(() => { | |
| resolve([ | |
| { | |
| title: `HD ${query} collection`, | |
| service: "HDVietnam", | |
| size: "4.7 GB", | |
| date: "2023-06-15", | |
| views: "876", | |
| description: `High quality ${query} files available on HDVietnam.`, | |
| url: "http://hdvietnam.com/search?q=" + encodeURIComponent(query), | |
| filename: `hd_${query}_collection.rar` | |
| } | |
| ]); | |
| }, 1200); | |
| }); | |
| } | |
| }, | |
| // Add similar configurations for other services... | |
| }; | |
| // Search function | |
| document.getElementById('searchBtn').addEventListener('click', async function() { | |
| const query = document.getElementById('searchInput').value.trim(); | |
| if (!query) { | |
| alert("Please enter a search term"); | |
| return; | |
| } | |
| // Show results section | |
| const resultsSection = document.getElementById('resultsSection'); | |
| resultsSection.classList.remove('hidden'); | |
| // Clear previous results | |
| const resultsContainer = document.getElementById('resultsContainer'); | |
| 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>'; | |
| // Get selected services | |
| const selectedServices = Array.from(document.querySelectorAll('#advancedOptions input[type="checkbox"]:checked')) | |
| .map(checkbox => checkbox.id); | |
| // Perform searches | |
| let allResults = []; | |
| const startTime = Date.now(); | |
| for (const serviceId of selectedServices) { | |
| if (services[serviceId]) { | |
| try { | |
| const serviceResults = await services[serviceId].search(query); | |
| allResults = allResults.concat(serviceResults); | |
| // Update UI with partial results | |
| updateResultsUI(allResults, selectedServices.length, startTime); | |
| } catch (error) { | |
| console.error(`Error searching ${serviceId}:`, error); | |
| } | |
| } | |
| } | |
| // Final update | |
| updateResultsUI(allResults, selectedServices.length, startTime); | |
| }); | |
| // Update results UI | |
| function updateResultsUI(results, totalServices, startTime) { | |
| const elapsedTime = ((Date.now() - startTime) / 1000).toFixed(2); | |
| const resultsContainer = document.getElementById('resultsContainer'); | |
| // Update stats | |
| document.getElementById('resultStats').textContent = | |
| `About ${results.length} results from ${totalServices} services (${elapsedTime} seconds)`; | |
| // Display results | |
| if (results.length === 0) { | |
| resultsContainer.innerHTML = '<div class="text-center py-8 text-gray-500">No results found. Try a different search term.</div>'; | |
| return; | |
| } | |
| let html = ''; | |
| results.forEach(result => { | |
| html += ` | |
| <div class="result-card bg-white p-4 rounded-lg shadow-sm border border-gray-100"> | |
| <div class="flex flex-col md:flex-row"> | |
| <div class="flex-grow"> | |
| <div class="flex items-center mb-1"> | |
| <h3 class="text-lg font-medium text-blue-600"> | |
| <a href="${result.url}" target="_blank">${result.title}</a> | |
| </h3> | |
| <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> | |
| </div> | |
| <div class="text-sm text-gray-500 mb-2"> | |
| <span class="mr-3"><i class="fas fa-database mr-1"></i> ${result.size}</span> | |
| <span class="mr-3"><i class="fas fa-calendar-alt mr-1"></i> ${result.date}</span> | |
| <span><i class="fas fa-eye mr-1"></i> ${result.views}</span> | |
| </div> | |
| <p class="text-gray-700 text-sm mb-3">${result.description}</p> | |
| </div> | |
| <div class="flex-shrink-0 mt-4 md:mt-0 md:ml-4"> | |
| <a href="${result.url}" target="_blank" class="inline-block bg-green-600 hover:bg-green-700 text-white px-4 py-2 rounded-lg"> | |
| <i class="fas fa-external-link-alt mr-2"></i> View | |
| </a> | |
| </div> | |
| </div> | |
| </div> | |
| `; | |
| }); | |
| resultsContainer.innerHTML = html; | |
| } | |
| // Toggle advanced options | |
| document.getElementById('toggleAdvanced').addEventListener('click', function() { | |
| const options = document.getElementById('advancedOptions'); | |
| options.classList.toggle('hidden'); | |
| this.innerHTML = options.classList.contains('hidden') | |
| ? '<i class="fas fa-cog mr-1"></i> Advanced Search Options' | |
| : '<i class="fas fa-times mr-1"></i> Hide Options'; | |
| }); | |
| </script> | |
| <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> | |
| </html> |