| | <!DOCTYPE html> |
| | <html lang="fr"> |
| | <head> |
| | <meta charset="UTF-8"> |
| | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| | <title>StreamMaster - Gestion de Liens Automatisée</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> |
| | .stream-gradient { |
| | background: linear-gradient(135deg, #1e40af 0%, #7e22ce 50%, #c026d3 100%); |
| | } |
| | .link-card:hover { |
| | transform: translateY(-2px); |
| | box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.2); |
| | } |
| | .status-badge { |
| | font-size: 0.65rem; |
| | } |
| | .scrollbar-hide::-webkit-scrollbar { |
| | display: none; |
| | } |
| | </style> |
| | </head> |
| | <body class="bg-gray-900 text-gray-100"> |
| | |
| | <header class="sticky top-0 z-50 bg-gray-900/90 backdrop-blur-sm border-b border-gray-800"> |
| | <div class="container mx-auto px-4 py-3 flex items-center justify-between"> |
| | <div class="flex items-center space-x-8"> |
| | <a href="#" class="flex items-center"> |
| | <span class="text-2xl font-bold bg-gradient-to-r from-blue-600 via-purple-600 to-pink-600 bg-clip-text text-transparent">StreamMaster</span> |
| | </a> |
| | <nav class="hidden md:flex space-x-6"> |
| | <a href="#dashboard" class="hover:text-purple-400 transition">Dashboard</a> |
| | <a href="#sites" class="hover:text-purple-400 transition">Sites de Streaming</a> |
| | <a href="#automation" class="hover:text-purple-400 transition">Automatisation</a> |
| | <a href="#stats" class="hover:text-purple-400 transition">Statistiques</a> |
| | </nav> |
| | </div> |
| | |
| | <div class="flex items-center space-x-4"> |
| | <div class="relative"> |
| | <button id="search-btn" class="p-2 rounded-full hover:bg-gray-800"> |
| | <i class="fas fa-search"></i> |
| | </button> |
| | </div> |
| | <div class="relative"> |
| | <button class="flex items-center space-x-2 hover:bg-gray-800 px-3 py-2 rounded-lg"> |
| | <img src="https://randomuser.me/api/portraits/men/32.jpg" alt="Profile" class="w-8 h-8 rounded-full"> |
| | <span class="hidden md:inline">Admin</span> |
| | </button> |
| | </div> |
| | </div> |
| | </div> |
| | </header> |
| |
|
| | |
| | <section id="dashboard" class="stream-gradient py-16"> |
| | <div class="container mx-auto px-4"> |
| | <h1 class="text-4xl md:text-5xl font-bold mb-6">Gestion Automatisée de Sites de Streaming</h1> |
| | <div class="grid md:grid-cols-3 gap-6"> |
| | <div class="bg-gray-800/50 rounded-xl p-6 border border-gray-700"> |
| | <div class="flex items-center justify-between mb-4"> |
| | <h3 class="text-xl font-bold">Sites Actifs</h3> |
| | <div class="bg-blue-500 text-white rounded-full p-2"> |
| | <i class="fas fa-globe"></i> |
| | </div> |
| | </div> |
| | <div class="text-3xl font-bold mb-2" id="active-sites">28</div> |
| | <div class="text-sm text-gray-300">Dernière mise à jour: <span id="last-update">aujourd'hui 03:42</span></div> |
| | </div> |
| | <div class="bg-gray-800/50 rounded-xl p-6 border border-gray-700"> |
| | <div class="flex items-center justify-between mb-4"> |
| | <h3 class="text-xl font-bold">Liens Vérifiés</h3> |
| | <div class="bg-purple-500 text-white rounded-full p-2"> |
| | <i class="fas fa-link"></i> |
| | </div> |
| | </div> |
| | <div class="text-3xl font-bold mb-2" id="verified-links">124,556</div> |
| | <div class="text-sm text-gray-300">Dont <span class="text-green-400">92%</span> fonctionnels</div> |
| | </div> |
| | <div class="bg-gray-800/50 rounded-xl p-6 border border-gray-700"> |
| | <div class="flex items-center justify-between mb-4"> |
| | <h3 class="text-xl font-bold">Nouveaux Liens</h3> |
| | <div class="bg-pink-500 text-white rounded-full p-2"> |
| | <i class="fas fa-bolt"></i> |
| | </div> |
| | </div> |
| | <div class="text-3xl font-bold mb-2" id="new-links">328</div> |
| | <div class="text-sm text-gray-300">Ajoutés ces dernières 24h</div> |
| | </div> |
| | </div> |
| | </div> |
| | </section> |
| |
|
| | |
| | <section id="sites" class="container mx-auto px-4 py-10"> |
| | <div class="flex justify-between items-center mb-6"> |
| | <h2 class="text-2xl font-bold">Sites de Streaming Automatiquement Mis à Jour</h2> |
| | <div class="flex items-center space-x-4"> |
| | <button id="add-site-btn" class="bg-purple-600 hover:bg-purple-700 px-4 py-2 rounded-lg font-medium flex items-center"> |
| | <i class="fas fa-plus mr-2"></i> Ajouter Site |
| | </button> |
| | <button id="scan-sites-btn" class="bg-blue-600 hover:bg-blue-700 px-4 py-2 rounded-lg font-medium flex items-center"> |
| | <i class="fas fa-sync-alt mr-2"></i> Scanner Maintenant |
| | </button> |
| | </div> |
| | </div> |
| |
|
| | |
| | <div class="bg-gray-800 rounded-lg p-4 mb-6"> |
| | <div class="grid grid-cols-1 md:grid-cols-4 gap-4"> |
| | <div> |
| | <label class="block text-sm font-medium mb-1">Statut</label> |
| | <select id="status-filter" class="w-full bg-gray-700 border border-gray-600 rounded-md px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-purple-500"> |
| | <option value="all">Tous statuts</option> |
| | <option value="active">Actif</option> |
| | <option value="unstable">Instable</option> |
| | <option value="inactive">Inactif</option> |
| | </select> |
| | </div> |
| | <div> |
| | <label class="block text-sm font-medium mb-1">Pays</label> |
| | <select id="country-filter" class="w-full bg-gray-700 border border-gray-600 rounded-md px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-purple-500"> |
| | <option value="all">Tous pays</option> |
| | <option value="france">France</option> |
| | <option value="usa">USA</option> |
| | <option value="canada">Canada</option> |
| | <option value="uk">Royaume-Uni</option> |
| | </select> |
| | </div> |
| | <div> |
| | <label class="block text-sm font-medium mb-1">Langue</label> |
| | <select id="language-filter" class="w-full bg-gray-700 border border-gray-600 rounded-md px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-purple-500"> |
| | <option value="all">Toutes langues</option> |
| | <option value="fr">Français</option> |
| | <option value="multi">Multi-langues</option> |
| | </select> |
| | </div> |
| | <div> |
| | <label class="block text-sm font-medium mb-1">Type</label> |
| | <select id="type-filter" class="w-full bg-gray-700 border border-gray-600 rounded-md px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-purple-500"> |
| | <option value="all">Tous types</option> |
| | <option value="movie">Films</option> |
| | <option value="series">Séries</option> |
| | <option value="both">Les deux</option> |
| | </select> |
| | </div> |
| | </div> |
| | </div> |
| |
|
| | |
| | <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6"> |
| | |
| | <div class="link-card bg-gray-800 rounded-lg overflow-hidden border border-gray-700 transition duration-300"> |
| | <div class="p-5"> |
| | <div class="flex items-start justify-between mb-3"> |
| | <div> |
| | <h3 class="text-lg font-bold flex items-center"> |
| | <img src="https://via.placeholder.com/40" alt="StreamHub" class="w-6 h-6 rounded mr-2"> |
| | StreamHub |
| | </h3> |
| | <span class="text-sm text-gray-400">streamhub.to</span> |
| | </div> |
| | <span class="status-badge px-2 py-1 rounded-full bg-green-500 text-green-900 font-semibold">Actif</span> |
| | </div> |
| | |
| | <div class="flex items-center text-sm text-gray-300 mb-4"> |
| | <span class="mr-3"><i class="fas fa-film mr-1"></i> 24,556 films</span> |
| | <span><i class="fas fa-tv mr-1"></i> 8,432 séries</span> |
| | </div> |
| | |
| | <div class="mb-4"> |
| | <div class="flex justify-between text-xs mb-1"> |
| | <span>Liens fonctionnels</span> |
| | <span>94%</span> |
| | </div> |
| | <div class="w-full bg-gray-700 rounded-full h-1.5"> |
| | <div class="bg-green-500 h-1.5 rounded-full" style="width: 94%"></div> |
| | </div> |
| | </div> |
| | |
| | <div class="flex flex-wrap gap-2 mb-4"> |
| | <span class="px-2 py-1 bg-gray-700 rounded text-xs">VF</span> |
| | <span class="px-2 py-1 bg-gray-700 rounded text-xs">VOSTFR</span> |
| | <span class="px-2 py-1 bg-gray-700 rounded text-xs">HD</span> |
| | <span class="px-2 py-1 bg-gray-700 rounded text-xs">4K</span> |
| | </div> |
| | |
| | <div class="flex justify-between items-center text-sm"> |
| | <span class="text-gray-400"><i class="fas fa-clock mr-1"></i> Mis à jour il y a 2h</span> |
| | <div class="flex space-x-2"> |
| | <button class="text-blue-400 hover:text-blue-600"> |
| | <i class="fas fa-external-link-alt"></i> |
| | </button> |
| | <button class="text-purple-400 hover:text-purple-600"> |
| | <i class="fas fa-cog"></i> |
| | </button> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| | |
| | |
| | <div class="link-card bg-gray-800 rounded-lg overflow-hidden border border-gray-700 transition duration-300"> |
| | <div class="p-5"> |
| | <div class="flex items-start justify-between mb-3"> |
| | <div> |
| | <h3 class="text-lg font-bold flex items-center"> |
| | <img src="https://via.placeholder.com/40" alt="MovieCloud" class="w-6 h-6 rounded mr-2"> |
| | MovieCloud |
| | </h3> |
| | <span class="text-sm text-gray-400">moviecloud.cc</span> |
| | </div> |
| | <span class="status-badge px-2 py-1 rounded-full bg-green-500 text-green-900 font-semibold">Actif</span> |
| | </div> |
| | |
| | <div class="flex items-center text-sm text-gray-300 mb-4"> |
| | <span class="mr-3"><i class="fas fa-film mr-1"></i> 18,432 films</span> |
| | <span><i class="fas fa-tv mr-1"></i> 6,754 séries</span> |
| | </div> |
| | |
| | <div class="mb-4"> |
| | <div class="flex justify-between text-xs mb-1"> |
| | <span>Liens fonctionnels</span> |
| | <span>89%</span> |
| | </div> |
| | <div class="w-full bg-gray-700 rounded-full h-1.5"> |
| | <div class="bg-green-500 h-1.5 rounded-full" style="width: 89%"></div> |
| | </div> |
| | </div> |
| | |
| | <div class="flex flex-wrap gap-2 mb-4"> |
| | <span class="px-2 py-1 bg-gray-700 rounded text-xs">VF</span> |
| | <span class="px-2 py-1 bg-gray-700 rounded text-xs">VOSTFR</span> |
| | <span class="px-2 py-1 bg-gray-700 rounded text-xs">HD</span> |
| | <span class="px-2 py-1 bg-gray-700 rounded text-xs">Full HD</span> |
| | </div> |
| | |
| | <div class="flex justify-between items-center text-sm"> |
| | <span class="text-gray-400"><i class="fas fa-clock mr-1"></i> Mis à jour il y a 5h</span> |
| | <div class="flex space-x-2"> |
| | <button class="text-blue-400 hover:text-blue-600"> |
| | <i class="fas fa-external-link-alt"></i> |
| | </button> |
| | <button class="text-purple-400 hover:text-purple-600"> |
| | <i class="fas fa-cog"></i> |
| | </button> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| | |
| | |
| | <div class="link-card bg-gray-800 rounded-lg overflow-hidden border border-gray-700 transition duration-300"> |
| | <div class="p-5"> |
| | <div class="flex items-start justify-between mb-3"> |
| | <div> |
| | <h3 class="text-lg font-bold flex items-center"> |
| | <img src="https://via.placeholder.com/40" alt="FilmBox" class="w-6 h-6 rounded mr-2"> |
| | FilmBox |
| | </h3> |
| | <span class="text-sm text-gray-400">filmbox.pro</span> |
| | </div> |
| | <span class="status-badge px-2 py-1 rounded-full bg-yellow-500 text-yellow-900 font-semibold">Instable</span> |
| | </div> |
| | |
| | <div class="flex items-center text-sm text-gray-300 mb-4"> |
| | <span class="mr-3"><i class="fas fa-film mr-1"></i> 15,678 films</span> |
| | <span><i class="fas fa-tv mr-1"></i> 5,321 séries</span> |
| | </div> |
| | |
| | <div class="mb-4"> |
| | <div class="flex justify-between text-xs mb-1"> |
| | <span>Liens fonctionnels</span> |
| | <span>76%</span> |
| | </div> |
| | <div class="w-full bg-gray-700 rounded-full h-1.5"> |
| | <div class="bg-yellow-500 h-1.5 rounded-full" style="width: 76%"></div> |
| | </div> |
| | </div> |
| | |
| | <div class="flex flex-wrap gap-2 mb-4"> |
| | <span class="px-2 py-1 bg-gray-700 rounded text-xs">VOSTFR</span> |
| | <span class="px-2 py-1 bg-gray-700 rounded text-xs">HD</span> |
| | <span class="px-2 py-1 bg-gray-700 rounded text-xs">Full HD</span> |
| | </div> |
| | |
| | <div class="flex justify-between items-center text-sm"> |
| | <span class="text-gray-400"><i class="fas fa-clock mr-1"></i> Mis à jour il y a 1j</span> |
| | <div class="flex space-x-2"> |
| | <button class="text-blue-400 hover:text-blue-600"> |
| | <i class="fas fa-external-link-alt"></i> |
| | </button> |
| | <button class="text-purple-400 hover:text-purple-600"> |
| | <i class="fas fa-cog"></i> |
| | </button> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| | |
| | |
| | <div class="link-card bg-gray-800 rounded-lg overflow-hidden border border-gray-700 transition duration-300"> |
| | <div class="p-5"> |
| | <div class="flex items-start justify-between mb-3"> |
| | <div> |
| | <h3 class="text-lg font-bold flex items-center"> |
| | <img src="https://via.placeholder.com/40" alt="CinéStream" class="w-6 h-6 rounded mr-2"> |
| | CinéStream |
| | </h3> |
| | <span class="text-sm text-gray-400">cinestream.xyz</span> |
| | </div> |
| | <span class="status-badge px-2 py-1 rounded-full bg-green-500 text-green-900 font-semibold">Actif</span> |
| | </div> |
| | |
| | <div class="flex items-center text-sm text-gray-300 mb-4"> |
| | <span class="mr-3"><i class="fas fa-film mr-1"></i> 12,345 films</span> |
| | <span><i class="fas fa-tv mr-1"></i> 4,567 séries</span> |
| | </div> |
| | |
| | <div class="mb-4"> |
| | <div class="flex justify-between text-xs mb-1"> |
| | <span>Liens fonctionnels</span> |
| | <span>91%</span> |
| | </div> |
| | <div class="w-full bg-gray-700 rounded-full h-1.5"> |
| | <div class="bg-green-500 h-1.5 rounded-full" style="width: 91%"></div> |
| | </div> |
| | </div> |
| | |
| | <div class="flex flex-wrap gap-2 mb-4"> |
| | <span class="px-2 py-1 bg-gray-700 rounded text-xs">VF</span> |
| | <span class="px-2 py-1 bg-gray-700 rounded text-xs">VOSTFR</span> |
| | <span class="px-2 py-1 bg-gray-700 rounded text-xs">HD</span> |
| | <span class="px-2 py-1 bg-gray-700 rounded text-xs">4K</span> |
| | </div> |
| | |
| | <div class="flex justify-between items-center text-sm"> |
| | <span class="text-gray-400"><i class="fas fa-clock mr-1"></i> Mis à jour aujourd'hui</span> |
| | <div class="flex space-x-2"> |
| | <button class="text-blue-400 hover:text-blue-600"> |
| | <i class="fas fa-external-link-alt"></i> |
| | </button> |
| | <button class="text-purple-400 hover:text-purple-600"> |
| | <i class="fas fa-cog"></i> |
| | </button> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| | |
| | |
| | <div class="link-card bg-gray-800 rounded-lg overflow-hidden border border-gray-700 transition duration-300"> |
| | <div class="p-5"> |
| | <div class="flex items-start justify-between mb-3"> |
| | <div> |
| | <h3 class="text-lg font-bold flex items-center"> |
| | <img src="https://via.placeholder.com/40" alt="StreamZone" class="w-6 h-6 rounded mr-2"> |
| | StreamZone |
| | </h3> |
| | <span class="text-sm text-gray-400">streamzone.io</span> |
| | </div> |
| | <span class="status-badge px-2 py-1 rounded-full bg-green-500 text-green-900 font-semibold">Actif</span> |
| | </div> |
| | |
| | <div class="flex items-center text-sm text-gray-300 mb-4"> |
| | <span class="mr-3"><i class="fas fa-film mr-1"></i> 9,876 films</span> |
| | <span><i class="fas fa-tv mr-1"></i> 3,456 séries</span> |
| | </div> |
| | |
| | <div class="mb-4"> |
| | <div class="flex justify-between text-xs mb-1"> |
| | <span>Liens fonctionnels</span> |
| | <span>87%</span> |
| | </div> |
| | <div class="w-full bg-gray-700 rounded-full h-1.5"> |
| | <div class="bg-green-500 h-1.5 rounded-full" style="width: 87%"></div> |
| | </div> |
| | </div> |
| | |
| | <div class="flex flex-wrap gap-2 mb-4"> |
| | <span class="px-2 py-1 bg-gray-700 rounded text-xs">VF</span> |
| | <span class="px-2 py-1 bg-gray-700 rounded text-xs">HD</span> |
| | <span class="px-2 py-1 bg-gray-700 rounded text-xs">Full HD</span> |
| | </div> |
| | |
| | <div class="flex justify-between items-center text-sm"> |
| | <span class="text-gray-400"><i class="fas fa-clock mr-1"></i> Mis à jour il y a 3h</span> |
| | <div class="flex space-x-2"> |
| | <button class="text-blue-400 hover:text-blue-600"> |
| | <i class="fas fa-external-link-alt"></i> |
| | </button> |
| | <button class="text-purple-400 hover:text-purple-600"> |
| | <i class="fas fa-cog"></i> |
| | </button> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| | |
| | |
| | <div class="link-card bg-gray-800 rounded-lg overflow-hidden border border-gray-700 transition duration-300"> |
| | <div class="p-5"> |
| | <div class="flex items-start justify-between mb-3"> |
| | <div> |
| | <h3 class="text-lg font-bold flex items-center"> |
| | <img src="https://via.placeholder.com/40" alt="FlixHQ" class="w-6 h-6 rounded mr-2"> |
| | FlixHQ |
| | </h3> |
| | <span class="text-sm text-gray-400">flixhq.net</span> |
| | </div> |
| | <span class="status-badge px-2 py-1 rounded-full bg-red-500 text-red-900 font-semibold">Inactif</span> |
| | </div> |
| | |
| | <div class="flex items-center text-sm text-gray-300 mb-4"> |
| | <span class="mr-3"><i class="fas fa-film mr-1"></i> 8,765 films</span> |
| | <span><i class="fas fa-tv mr-1"></i> 2,987 séries</span> |
| | </div> |
| | |
| | <div class="mb-4"> |
| | <div class="flex justify-between text-xs mb-1"> |
| | <span>Liens fonctionnels</span> |
| | <span>12%</span> |
| | </div> |
| | <div class="w-full bg-gray-700 rounded-full h-1.5"> |
| | <div class="bg-red-500 h-1.5 rounded-full" style="width: 12%"></div> |
| | </div> |
| | </div> |
| | |
| | <div class="flex flex-wrap gap-2 mb-4"> |
| | <span class="px-2 py-1 bg-gray-700 rounded text-xs">VOSTFR</span> |
| | <span class="px-2 py-1 bg-gray-700 rounded text-xs">HD</span> |
| | </div> |
| | |
| | <div class="flex justify-between items-center text-sm"> |
| | <span class="text-gray-400"><i class="fas fa-clock mr-1"></i> Mis à jour il y a 7j</span> |
| | <div class="flex space-x-2"> |
| | <button class="text-blue-400 hover:text-blue-600"> |
| | <i class="fas fa-external-link-alt"></i> |
| | </button> |
| | <button class="text-purple-400 hover:text-purple-600"> |
| | <i class="fas fa-cog"></i> |
| | </button> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| | |
| | |
| | <div class="mt-8 flex justify-center"> |
| | <nav class="relative z-0 inline-flex rounded-md shadow-sm -space-x-px" aria-label="Pagination"> |
| | <a href="#" class="relative inline-flex items-center px-2 py-2 rounded-l-md border border-gray-600 bg-gray-800 text-sm font-medium text-gray-400 hover:bg-gray-700"> |
| | <span class="sr-only">Précédent</span> |
| | <i class="fas fa-chevron-left"></i> |
| | </a> |
| | <a href="#" aria-current="page" class="z-10 bg-purple-600 border-purple-500 text-white relative inline-flex items-center px-4 py-2 border text-sm font-medium"> 1 </a> |
| | <a href="#" class="bg-gray-800 border-gray-600 text-gray-300 hover:bg-gray-700 relative inline-flex items-center px-4 py-2 border text-sm font-medium"> 2 </a> |
| | <a href="#" class="bg-gray-800 border-gray-600 text-gray-300 hover:bg-gray-700 relative inline-flex items-center px-4 py-2 border text-sm font-medium"> 3 </a> |
| | <span class="relative inline-flex items-center px-4 py-2 border border-gray-600 bg-gray-800 text-sm font-medium text-gray-700"> ... </span> |
| | <a href="#" class="bg-gray-800 border-gray-600 text-gray-300 hover:bg-gray-700 relative inline-flex items-center px-4 py-2 border text-sm font-medium"> 8 </a> |
| | <a href="#" class="relative inline-flex items-center px-2 py-2 rounded-r-md border border-gray-600 bg-gray-800 text-sm font-medium text-gray-400 hover:bg-gray-700"> |
| | <span class="sr-only">Suivant</span> |
| | <i class="fas fa-chevron-right"></i> |
| | </a> |
| | </nav> |
| | </div> |
| | </section> |
| |
|
| | |
| | <section id="automation" class="container mx-auto px-4 py-10 bg-gray-900"> |
| | <h2 class="text-2xl font-bold mb-6">Configuration de l'Automatisation</h2> |
| | |
| | <div class="grid md:grid-cols-2 gap-6"> |
| | <div class="bg-gray-800 rounded-lg p-6 border border-gray-700"> |
| | <div class="flex items-center justify-between mb-4"> |
| | <h3 class="text-xl font-bold">Mise à Jour Automatique</h3> |
| | <label class="relative inline-flex items-center cursor-pointer"> |
| | <input type="checkbox" id="auto-update-toggle" class="sr-only peer" checked> |
| | <div class="w-11 h-6 bg-gray-700 peer-focus:outline-none rounded-full peer peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all peer-checked:bg-purple-600"></div> |
| | </label> |
| | </div> |
| | |
| | <p class="text-gray-300 mb-4">Activez cette option pour permettre au système de scanner automatiquement les sites et de mettre à jour les liens de streaming.</p> |
| | |
| | <div class="grid grid-cols-2 gap-4"> |
| | <div> |
| | <label class="block text-sm font-medium mb-1">Fréquence</label> |
| | <select id="update-frequency" class="w-full bg-gray-700 border border-gray-600 rounded-md px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-purple-500"> |
| | <option value="hourly">Toutes les heures</option> |
| | <option value="daily" selected>Quotidiennement</option> |
| | <option value="weekly">Hebdomadairement</option> |
| | </select> |
| | </div> |
| | <div> |
| | <label class="block text-sm font-medium mb-1">Heure</label> |
| | <input type="time" id="update-time" class="w-full bg-gray-700 border border-gray-600 rounded-md px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-purple-500" value="03:00"> |
| | </div> |
| | </div> |
| | |
| | <div class="mt-4"> |
| | <label class="block text-sm font-medium mb-1">Sites prioritaires</label> |
| | <select id="priority-sites" class="w-full bg-gray-700 border border-gray-600 rounded-md px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-purple-500" multiple> |
| | <option value="streamhub" selected>StreamHub</option> |
| | <option value="moviecloud" selected>MovieCloud</option> |
| | <option value="cinestream">CinéStream</option> |
| | <option value="streamzone">StreamZone</option> |
| | <option value="filmbox">FilmBox</option> |
| | </select> |
| | <p class="text-xs text-gray-400 mt-1">Maintenez Ctrl (Windows) ou Cmd (Mac) pour sélectionner plusieurs sites</p> |
| | </div> |
| | </div> |
| | |
| | <div class="bg-gray-800 rounded-lg p-6 border border-gray-700"> |
| | <div class="flex items-center justify-between mb-4"> |
| | <h3 class="text-xl font-bold">Vérification des Liens</h3> |
| | <label class="relative inline-flex items-center cursor-pointer"> |
| | <input type="checkbox" id="link-check-toggle" class="sr-only peer" checked> |
| | <div class="w-11 h-6 bg-gray-700 peer-focus:outline-none rounded-full peer peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all peer-checked:bg-purple-600"></div> |
| | </label> |
| | </div> |
| | |
| | <p class="text-gray-300 mb-4">Activez cette option pour vérifier automatiquement que tous les liens de streaming sont fonctionnels.</p> |
| | |
| | <div class="grid grid-cols-2 gap-4"> |
| | <div> |
| | <label class="block text-sm font-medium mb-1">Fréquence</label> |
| | <select id="check-frequency" class="w-full bg-gray-700 border border-gray-600 rounded-md px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-purple-500"> |
| | <option value="daily" selected>Quotidiennement</option> |
| | <option value="weekly">Hebdomadairement</option> |
| | <option value="monthly">Mensuellement</option> |
| | </select> |
| | </div> |
| | <div> |
| | <label class="block text-sm font-medium mb-1">Heure</label> |
| | <input type="time" id="check-time" class="w-full bg-gray-700 border border-gray-600 rounded-md px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-purple-500" value="04:00"> |
| | </div> |
| | </div> |
| | |
| | <div class="mt-4"> |
| | <label class="block text-sm font-medium mb-1">Seuil d'alerte</label> |
| | <div class="flex items-center space-x-4"> |
| | <input type="range" id="alert-threshold" min="0" max="100" value="70" class="w-full h-2 bg-gray-700 rounded-lg appearance-none cursor-pointer"> |
| | <span id="threshold-value" class="text-sm font-medium">70%</span> |
| | </div> |
| | <p class="text-xs text-gray-400 mt-1">Envoie une alerte si moins de X% des liens d'un site sont fonctionnels</p> |
| | </div> |
| | </div> |
| | </div> |
| | |
| | <div class="mt-6 bg-gray-800 rounded-lg p-6 border border-gray-700"> |
| | <h3 class="text-xl font-bold mb-4">Notifications</h3> |
| | |
| | <div class="grid md:grid-cols-3 gap-4"> |
| | <div> |
| | <label class="flex items-center space-x-3"> |
| | <input type="checkbox" id="email-notifications" class="form-checkbox h-5 w-5 text-purple-600" checked> |
| | <span class="text-gray-300">Email</span> |
| | </label> |
| | </div> |
| | <div> |
| | <label class="flex items-center space-x-3"> |
| | <input type="checkbox" id="push-notifications" class="form-checkbox h-5 w-5 text-purple-600"> |
| | <span class="text-gray-300">Notifications push</span> |
| | </label> |
| | </div> |
| | <div> |
| | <label class="flex items-center space-x-3"> |
| | <input type="checkbox" id="webhook-notifications" class="form-checkbox h-5 w-5 text-purple-600"> |
| | <span class="text-gray-300">Webhook</span> |
| | </label> |
| | </div> |
| | </div> |
| | |
| | <div class="mt-4" id="email-settings"> |
| | <label class="block text-sm font-medium mb-1">Email de notification</label> |
| | <input type="email" id="notification-email" class="w-full bg-gray-700 border border-gray-600 rounded-md px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-purple-500" value="admin@example.com"> |
| | </div> |
| | |
| | <div class="mt-4 hidden" id="webhook-settings"> |
| | <label class="block text-sm font-medium mb-1">URL Webhook</label> |
| | <input type="url" id="webhook-url" class="w-full bg-gray-700 border border-gray-600 rounded-md px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-purple-500" placeholder="https://example.com/webhook"> |
| | </div> |
| | |
| | <div class="mt-6"> |
| | <button id="save-settings-btn" class="bg-purple-600 hover:bg-purple-700 px-4 py-2 rounded-lg font-medium flex items-center"> |
| | <i class="fas fa-save mr-2"></i> Enregistrer les paramètres |
| | </button> |
| | </div> |
| | </div> |
| | </section> |
| |
|
| | |
| | <section id="stats" class="container mx-auto px-4 py-10"> |
| | <h2 class="text-2xl font-bold mb-6">Statistiques des Sites</h2> |
| | |
| | <div class="grid md:grid-cols-3 gap-6 mb-8"> |
| | <div class="bg-gray-800 rounded-lg p-6 border border-gray-700"> |
| | <h3 class="text-lg font-bold mb-4">Statut des Sites</h3> |
| | <div class="space-y-2"> |
| | <div> |
| | <div class="flex justify-between text-sm mb-1"> |
| | <span>Actifs</span> |
| | <span>24 (85.7%)</span> |
| | </div> |
| | <div class="w-full bg-gray-700 rounded-full h-2"> |
| | <div class="bg-green-500 h-2 rounded-full" style="width: 85.7%"></div> |
| | </div> |
| | </div> |
| | <div> |
| | <div class="flex justify-between text-sm mb-1"> |
| | <span>Instables</span> |
| | <span>3 (10.7%)</span> |
| | </div> |
| | <div class="w-full bg-gray-700 rounded-full h-2"> |
| | <div class="bg-yellow-500 h-2 rounded-full" style="width: 10.7%"></div> |
| | </div> |
| | </div> |
| | <div> |
| | <div class="flex justify-between text-sm mb-1"> |
| | <span>Inactifs</span> |
| | <span>1 (3.6%)</span> |
| | </div> |
| | <div class="w-full bg-gray-700 rounded-full h-2"> |
| | <div class="bg-red-500 h-2 rounded-full" style="width: 3.6%"></div> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| | |
| | <div class="bg-gray-800 rounded-lg p-6 border border-gray-700"> |
| | <h3 class="text-lg font-bold mb-4">Liens par Site</h3> |
| | <div class="space-y-2"> |
| | <div> |
| | <div class="flex justify-between text-sm mb-1"> |
| | <span>StreamHub</span> |
| | <span>24,556 (19.7%)</span> |
| | </div> |
| | <div class="w-full bg-gray-700 rounded-full h-2"> |
| | <div class="bg-blue-500 h-2 rounded-full" style="width: 19.7%"></div> |
| | </div> |
| | </div> |
| | <div> |
| | <div class="flex justify-between text-sm mb-1"> |
| | <span>MovieCloud</span> |
| | <span>18,432 (14.8%)</span> |
| | </div> |
| | <div class="w-full bg-gray-700 rounded-full h-2"> |
| | <div class="bg-purple-500 h-2 rounded-full" style="width: 14.8%"></div> |
| | </div> |
| | </div> |
| | <div> |
| | <div class="flex justify-between text-sm mb-1"> |
| | <span>Autres</span> |
| | <span>81,568 (65.5%)</span> |
| | </div> |
| | <div class="w-full bg-gray-700 rounded-full h-2"> |
| | <div class="bg-pink-500 h-2 rounded-full" style="width: 65.5%"></div> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| | |
| | <div class="bg-gray-800 rounded-lg p-6 border border-gray-700"> |
| | <h3 class="text-lg font-bold mb-4">Activité Récente</h3> |
| | <div class="space-y-4"> |
| | <div class="flex items-start"> |
| | <div class="bg-purple-500 text-white rounded-full p-1 mr-3 mt-1"> |
| | <i class="fas fa-sync-alt text-xs"></i> |
| | </div> |
| | <div> |
| | <div class="text-sm font-medium">Mise à jour automatique</div> |
| | <div class="text-xs text-gray-400">Aujourd'hui 03:42 - 328 nouveaux liens ajoutés</div> |
| | </div> |
| | </div> |
| | <div class="flex items-start"> |
| | <div class="bg-green-500 text-white rounded-full p-1 mr-3 mt-1"> |
| | <i class="fas fa-check text-xs"></i> |
| | </div> |
| | <div> |
| | <div class="text-sm font-medium">Vérification des liens</div> |
| | <div class="text-xs text-gray-400">Aujourd'hui 04:30 - 124,556 liens vérifiés</div> |
| | </div> |
| | </div> |
| | <div class="flex items-start"> |
| | <div class="bg-yellow-500 text-white rounded-full p-1 mr-3 mt-1"> |
| | <i class="fas fa-exclamation text-xs"></i> |
| | </div> |
| | <div> |
| | <div class="text-sm font-medium">Alerte: FilmBox instable</div> |
| | <div class="text-xs text-gray-400">76% des liens fonctionnels (en dessous du seuil)</div> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| | |
| | <div class="bg-gray-800 rounded-lg p-6 border border-gray-700"> |
| | <h3 class="text-xl font-bold mb-4">Historique des Mises à Jour</h3> |
| | <div class="overflow-x-auto"> |
| | <table class="min-w-full divide-y divide-gray-700"> |
| | <thead class="bg-gray-700"> |
| | <tr> |
| | <th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-300 uppercase tracking-wider">Date/Heure</th> |
| | <th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-300 uppercase tracking-wider">Type</th> |
| | <th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-300 uppercase tracking-wider">Sites</th> |
| | <th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-300 uppercase tracking-wider">Nouveaux Liens</th> |
| | <th scope="col" class="px-6 py-3 text-left text-xs font-medium text-gray-300 uppercase tracking-wider">Statut</th> |
| | </tr> |
| | </thead> |
| | <tbody class="bg-gray-800 divide-y divide-gray-700"> |
| | <tr> |
| | <td class="px-6 py-4 whitespace-nowrap text-sm">2023-11-15 03:42</td> |
| | <td class="px-6 py-4 whitespace-nowrap text-sm">Automatique</td> |
| | <td class="px-6 py-4 whitespace-nowrap text-sm">Tous (28)</td> |
| | <td class="px-6 py-4 whitespace-nowrap text-sm">328</td> |
| | <td class="px-6 py-4 whitespace-nowrap"> |
| | <span class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-green-500 text-green-900">Terminé</span> |
| | </td> |
| | </tr> |
| | <tr> |
| | <td class="px-6 py-4 whitespace-nowrap text-sm">2023-11-14 03:40</td> |
| | <td class="px-6 py-4 whitespace-nowrap text-sm">Automatique</td> |
| | <td class="px-6 py-4 whitespace-nowrap text-sm">Tous (28)</td> |
| | <td class="px-6 py-4 whitespace-nowrap text-sm">287</td> |
| | <td class="px-6 py-4 whitespace-nowrap"> |
| | <span class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-green-500 text-green-900">Terminé</span> |
| | </td> |
| | </tr> |
| | <tr> |
| | <td class="px-6 py-4 whitespace-nowrap text-sm">2023-11-13 03:38</td> |
| | <td class="px-6 py-4 whitespace-nowrap text-sm">Automatique</td> |
| | <td class="px-6 py-4 whitespace-nowrap text-sm">Tous (28)</td> |
| | <td class="px-6 py-4 whitespace-nowrap text-sm">312</td> |
| | <td class="px-6 py-4 whitespace-nowrap"> |
| | <span class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-green-500 text-green-900">Terminé</span> |
| | </td> |
| | </tr> |
| | <tr> |
| | <td class="px-6 py-4 whitespace-nowrap text-sm">2023-11-12 03:45</td> |
| | <td class="px-6 py-4 whitespace-nowrap text-sm">Automatique</td> |
| | <td class="px-6 py-4 whitespace-nowrap text-sm">Tous (28)</td> |
| | <td class="px-6 py-4 whitespace-nowrap text-sm">276</td> |
| | <td class="px-6 py-4 whitespace-nowrap"> |
| | <span class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-green-500 text-green-900">Terminé</span> |
| | </td> |
| | </tr> |
| | <tr> |
| | <td class="px-6 py-4 whitespace-nowrap text-sm">2023-11-11 03:42</td> |
| | <td class="px-6 py-4 whitespace-nowrap text-sm">Automatique</td> |
| | <td class="px-6 py-4 whitespace-nowrap text-sm">Tous (28)</td> |
| | <td class="px-6 py-4 whitespace-nowrap text-sm">301</td> |
| | <td class="px-6 py-4 whitespace-nowrap"> |
| | <span class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-green-500 text-green-900">Terminé</span> |
| | </td> |
| | </tr> |
| | </tbody> |
| | </table> |
| | </div> |
| | </div> |
| | </section> |
| |
|
| | |
| | <div id="add-site-modal" class="hidden fixed inset-0 z-50 bg-black bg-opacity-75 flex items-center justify-center p-4"> |
| | <div class="bg-gray-800 rounded-lg w-full max-w-2xl max-h-[90vh] overflow-y-auto"> |
| | <div class="p-6"> |
| | <div class="flex justify-between items-center mb-4"> |
| | <h3 class="text-xl font-bold">Ajouter un Nouveau Site</h3> |
| | <button id="close-site-modal" class="text-gray-400 hover:text-white"> |
| | <i class="fas fa-times"></i> |
| | </button> |
| | </div> |
| | |
| | <div class="space-y-4"> |
| | <div> |
| | <label class="block text-sm font-medium mb-1">Nom du Site*</label> |
| | <input type="text" id="site-name" class="w-full bg-gray-700 border border-gray-600 rounded-md px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-purple-500" placeholder="Ex: StreamHub"> |
| | </div> |
| | |
| | <div> |
| | <label class="block text-sm font-medium mb-1">URL du Site*</label> |
| | <input type="url" id="site-url" class="w-full bg-gray-700 border border-gray-600 rounded-md px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-purple-500" placeholder="https://example.com"> |
| | </div> |
| | |
| | <div class="grid grid-cols-2 gap-4"> |
| | <div> |
| | <label class="block text-sm font-medium mb-1">Pays*</label> |
| | <select id="site-country" class="w-full bg-gray-700 border border-gray-600 rounded-md px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-purple-500"> |
| | <option value="">Sélectionner un pays</option> |
| | <option value="france">France</option> |
| | <option value="usa">USA</option> |
| | <option value="canada">Canada</option> |
| | <option value="uk">Royaume-Uni</option> |
| | <option value="other">Autre</option> |
| | </select> |
| | </div> |
| | <div> |
| | <label class="block text-sm font-medium mb-1">Langue Principale*</label> |
| | <select id="site-language" class="w-full bg-gray-700 border border-gray-600 rounded-md px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-purple-500"> |
| | <option value="">Sélectionner une langue</option> |
| | <option value="fr">Français</option> |
| | <option value="en">Anglais</option> |
| | <option value="multi">Multi-langues</option> |
| | </select> |
| | </div> |
| | </div> |
| | |
| | <div> |
| | <label class="block text-sm font-medium mb-1">Type de Contenu*</label> |
| | <div class="grid grid-cols-3 gap-2"> |
| | <label class="inline-flex items-center"> |
| | <input type="checkbox" id="content-movies" class="form-checkbox text-purple-600" checked> |
| | <span class="ml-2 text-sm">Films</span> |
| | </label> |
| | <label class="inline-flex items-center"> |
| | <input type="checkbox" id="content-series" class="form-checkbox text-purple-600" checked> |
| | <span class="ml-2 text-sm">Séries</span> |
| | </label> |
| | <label class="inline-flex items-center"> |
| | <input type="checkbox" id="content-anime" class="form-checkbox text-purple-600"> |
| | <span class="ml-2 text-sm">Animés</span> |
| | </label> |
| | </div> |
| | </div> |
| | |
| | <div> |
| | <label class="block text-sm font-medium mb-1">Priorité</label> |
| | <select id="site-priority" class="w-full bg-gray-700 border border-gray-600 rounded-md px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-purple-500"> |
| | <option value="low">Faible</option> |
| | <option value="medium" selected>Moyenne</option> |
| | <option value="high">Haute</option> |
| | </select> |
| | </div> |
| | |
| | <div> |
| | <label class="block text-sm font-medium mb-1">API Key (optionnel)</label> |
| | <input type="text" id="site-apikey" class="w-full bg-gray-700 border border-gray-600 rounded-md px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-purple-500" placeholder="Clé d'API si nécessaire"> |
| | </div> |
| | |
| | <div> |
| | <label class="block text-sm font-medium mb-1">Scanner automatiquement</label> |
| | <label class="relative inline-flex items-center cursor-pointer"> |
| | <input type="checkbox" id="auto-scan" class="sr-only peer" checked> |
| | <div class="w-11 h-6 bg-gray-700 peer-focus:outline-none rounded-full peer peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] after:absolute after:top-[2px] after:left-[2px] after:bg-white after:border-gray-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all peer-checked:bg-purple-600"></div> |
| | <span class="ml-3 text-sm font-medium text-gray-300">Activer le scan automatique</span> |
| | </label> |
| | </div> |
| | </div> |
| | |
| | <div class="flex justify-end space-x-3 mt-6"> |
| | <button id="cancel-site-btn" class="bg-gray-700 hover:bg-gray-600 px-4 py-2 rounded-lg font-medium"> |
| | Annuler |
| | </button> |
| | <button id="save-site-btn" class="bg-purple-600 hover:bg-purple-700 px-4 py-2 rounded-lg font-medium flex items-center"> |
| | <i class="fas fa-save mr-2"></i> Enregistrer |
| | </button> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| |
|
| | |
| | <div id="scan-sites-modal" class="hidden fixed inset-0 z-50 bg-black bg-opacity-75 flex items-center justify-center p-4"> |
| | <div class="bg-gray-800 rounded-lg w-full max-w-2xl"> |
| | <div class="p-6"> |
| | <div class="flex justify-between items-center mb-4"> |
| | <h3 class="text-xl font-bold">Scanner les Sites</h3> |
| | <button id="close-scan-modal" class="text-gray-400 hover:text-white"> |
| | <i class="fas fa-times"></i> |
| | </button> |
| | </div> |
| | |
| | <div class="mb-4"> |
| | <div class="flex justify-between text-sm mb-1"> |
| | <span>Progression</span> |
| | <span id="scan-progress-text">0%</span> |
| | </div> |
| | <div class="w-full bg-gray-700 rounded-full h-2.5"> |
| | <div id="scan-progress-bar" class="bg-purple-600 h-2.5 rounded-full" style="width: 0%"></div> |
| | </div> |
| | </div> |
| | |
| | <div class="bg-gray-700 rounded-lg p-4 mb-4"> |
| | <div class="flex items-center"> |
| | <div id="scan-status-icon" class="text-yellow-500 mr-3"> |
| | <i class="fas fa-sync-alt fa-spin"></i> |
| | </div> |
| | <div> |
| | <div id="scan-status" class="font-medium">Initialisation du scan...</div> |
| | <div id="scan-details" class="text-sm text-gray-300">Préparation des sites à scanner</div> |
| | </div> |
| | </div> |
| | </div> |
| | |
| | <div class="overflow-y-auto max-h-60 mb-4"> |
| | <table class="min-w-full divide-y divide-gray-700"> |
| | <thead class="bg-gray-800"> |
| | <tr> |
| | <th scope="col" class="px-4 py-2 text-left text-xs font-medium text-gray-300 uppercase tracking-wider">Site</th> |
| | <th scope="col" class="px-4 py-2 text-left text-xs font-medium text-gray-300 uppercase tracking-wider">Statut</th> |
| | <th scope="col" class="px-4 py-2 text-left text-xs font-medium text-gray-300 uppercase tracking-wider">Liens</th> |
| | </tr> |
| | </thead> |
| | <tbody id="scan-results" class="bg-gray-800 divide-y divide-gray-700"> |
| | |
| | </tbody> |
| | </table> |
| | </div> |
| | |
| | <div class="flex justify-between items-center text-sm text-gray-400"> |
| | <div id="scan-summary">0/28 sites scannés</div> |
| | <div id="scan-time">Temps écoulé: 0s</div> |
| | </div> |
| | |
| | <div class="flex justify-end mt-4"> |
| | <button id="close-scan-btn" class="bg-purple-600 hover:bg-purple-700 px-4 py-2 rounded-lg font-medium" disabled> |
| | <i class="fas fa-times mr-2"></i> Fermer |
| | </button> |
| | </div> |
| | </div> |
| | </div> |
| | </div> |
| |
|
| | |
| | <footer class="bg-gray-900 border-t border-gray-800 pt-12 pb-6"> |
| | <div class="container mx-auto px-4"> |
| | <div class="grid md:grid-cols-4 gap-8 mb-8"> |
| | <div> |
| | <h3 class="text-xl font-bold mb-4">StreamMaster</h3> |
| | <p class="text-gray-400">Solution complète de gestion et d'automatisation des sites de streaming. Mises à jour automatiques, vérification des liens et statistiques avancées.</p> |
| | </div> |
| | <div> |
| | <h4 class="font-bold mb-4">Navigation</h4> |
| | <ul class="space-y-2"> |
| | <li><a href="#dashboard" class="text-gray-400 hover:text-purple-400">Dashboard</a></li> |
| | <li><a href="#sites" class="text-gray-400 hover:text-purple-400">Sites de Streaming</a></li> |
| | <li><a href="#automation" class="text-gray-400 hover:text-purple-400">Automatisation</a></li> |
| | <li><a href="#stats" class="text-gray-400 hover:text-purple-400">Statistiques</a></li> |
| | </ul> |
| | </div> |
| | <div> |
| | <h4 class="font-bold mb-4">Support</h4> |
| | <ul class="space-y-2"> |
| | <li><a href="#" class="text-gray-400 hover:text-purple-400">Documentation</a></li> |
| | <li><a href="#" class="text-gray-400 hover:text-purple-400">Forum</a></li> |
| | <li><a href="#" class="text-gray-400 hover:text-purple-400">Contact</a></li> |
| | </ul> |
| | </div> |
| | <div> |
| | <h4 class="font-bold mb-4">Légal</h4> |
| | <ul class="space-y-2"> |
| | <li><a href="#" class="text-gray-400 hover:text-purple-400">Conditions d'utilisation</a></li> |
| | <li><a href="#" class="text-gray-400 hover:text-purple-400">Politique de confidentialité</a></li> |
| | </ul> |
| | </div> |
| | </div> |
| | <div class="border-t border-gray-800 pt-6 text-center text-gray-500 text-sm"> |
| | <p>© 2023 StreamMaster. Tous droits réservés. Version 3.1.0</p> |
| | </div> |
| | </div> |
| | </footer> |
| |
|
| | <script> |
| | |
| | document.addEventListener('DOMContentLoaded', () => { |
| | |
| | document.getElementById('add-site-btn').addEventListener('click', () => { |
| | document.getElementById('add-site-modal').classList.remove('hidden'); |
| | }); |
| | |
| | document.getElementById('close-site-modal').addEventListener('click', () => { |
| | document.getElementById('add-site-modal').classList.add('hidden'); |
| | }); |
| | |
| | document.getElementById('cancel-site-btn').addEventListener('click', () => { |
| | document.getElementById('add-site-modal').classList.add('hidden'); |
| | }); |
| | |
| | |
| | document.getElementById('scan-sites-btn').addEventListener('click', () => { |
| | document.getElementById('scan-sites-modal').classList.remove('hidden'); |
| | simulateSiteScan(); |
| | }); |
| | |
| | document.getElementById('close-scan-modal').addEventListener('click', () => { |
| | document.getElementById('scan-sites-modal').classList.add('hidden'); |
| | }); |
| | |
| | document.getElementById('close-scan-btn').addEventListener('click', () => { |
| | document.getElementById('scan-sites-modal').classList.add('hidden'); |
| | }); |
| | |
| | |
| | const thresholdSlider = document.getElementById('alert-threshold'); |
| | const thresholdValue = document.getElementById('threshold-value'); |
| | |
| | thresholdSlider.addEventListener('input', () => { |
| | thresholdValue.textContent = `${thresholdSlider.value}%`; |
| | }); |
| | |
| | |
| | const emailNotifications = document.getElementById('email-notifications'); |
| | const webhookNotifications = document.getElementById('webhook-notifications'); |
| | const emailSettings = document.getElementById('email-settings'); |
| | const webhookSettings = document.getElementById('webhook-settings'); |
| | |
| | emailNotifications.addEventListener('change', () => { |
| | emailSettings.classList.toggle('hidden', !emailNotifications.checked); |
| | }); |
| | |
| | webhookNotifications.addEventListener('change', () => { |
| | webhookSettings.classList.toggle('hidden', !webhookNotifications.checked); |
| | }); |
| | }); |
| | |
| | |
| | function simulateSiteScan() { |
| | const sites = [ |
| | { name: 'StreamHub', url: 'streamhub.to' }, |
| | { name: 'MovieCloud', url: 'moviecloud.cc' }, |
| | { name: 'FilmBox', url: 'filmbox.pro' }, |
| | { name: 'CinéStream', url: 'cinestream.xyz' }, |
| | { name: 'StreamZone', url: 'streamzone.io' }, |
| | { name: 'FlixHQ', url: 'flixhq.net' } |
| | ]; |
| | |
| | const scanResults = document.getElementById('scan-results'); |
| | const scanStatus = document.getElementById('scan-status'); |
| | const scanDetails = document.getElementById('scan-details'); |
| | const scanStatusIcon = document.getElementById('scan-status-icon'); |
| | const scanProgressBar = document.getElementById('scan-progress-bar'); |
| | const scanProgressText = document.getElementById('scan-progress-text'); |
| | const scanSummary = document.getElementById('scan-summary'); |
| | const scanTime = document.getElementById('scan-time'); |
| | const closeScanBtn = document.getElementById('close-scan-btn'); |
| | |
| | let completed = 0; |
| | const totalSites = sites.length; |
| | const startTime = new Date(); |
| | |
| | scanResults.innerHTML = ''; |
| | |
| | const updateTime = () => { |
| | const elapsed = Math.floor((new Date() - startTime) / 1000); |
| | scanTime.textContent = `Temps écoulé: ${elapsed}s`; |
| | }; |
| | |
| | const timer = setInterval(updateTime, 1000); |
| | |
| | sites.forEach((site, index) => { |
| | const row = document.createElement('tr'); |
| | row.innerHTML = ` |
| | <td class="px-4 py-2 whitespace-nowrap text-sm">${site.name}</td> |
| | <td class="px-4 py-2 whitespace-nowrap text-sm"> |
| | <span class="text-yellow-500">En attente</span> |
| | </td> |
| | <td class="px-4 py-2 whitespace-nowrap text-sm">-</td> |
| | `; |
| | scanResults.appendChild(row); |
| | |
| | |
| | setTimeout(() => { |
| | const status = Math.random() > 0.1 ? 'success' : 'error'; |
| | const linksFound = Math.floor(Math.random() * 50) + 10; |
| | |
| | row.innerHTML = ` |
| | <td class="px-4 py-2 whitespace-nowrap text-sm">${site.name}</td> |
| | <td class="px-4 py-2 whitespace-nowrap text-sm"> |
| | <span class="${status === 'success' ? 'text-green-500' : 'text-red-500'}"> |
| | ${status === 'success' ? 'Succès' : 'Erreur'} |
| | </span> |
| | </td> |
| | <td class="px-4 py-2 whitespace-nowrap text-sm"> |
| | ${status === 'success' ? linksFound : '0'} |
| | </td> |
| | `; |
| | |
| | completed++; |
| | const progress = Math.floor((completed / totalSites) * 100); |
| | |
| | scanProgressBar.style.width = `${progress}%`; |
| | scanProgressText.textContent = `${progress}%`; |
| | scanSummary.textContent = `${completed}/${totalSites} sites scannés`; |
| | |
| | if (completed === totalSites) { |
| | scanStatus.textContent = 'Scan terminé'; |
| | scanDetails.textContent = `${totalSites} sites scannés avec succès`; |
| | scanStatusIcon.innerHTML = '<i class="fas fa-check-circle text-green-500"></i>'; |
| | closeScanBtn.disabled = false; |
| | clearInterval(timer); |
| | } |
| | }, 1000 + (index * 1500)); |
| | }); |
| | } |
| | </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=docto41/stream-4u" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body> |
| | </html> |