Spaces:
Running
Running
<html lang="fr"> | |
<head> | |
<meta charset="UTF-8"> | |
<meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
<title>Annuaire Premium - Monétisation Automatique</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> | |
@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap'); | |
body { | |
font-family: 'Poppins', sans-serif; | |
background: linear-gradient(135deg, #0f172a 0%, #1e293b 100%); | |
color: #ffffff; | |
} | |
.glass-card { | |
background: rgba(255, 255, 255, 0.05); | |
backdrop-filter: blur(10px); | |
border: 1px solid rgba(255, 255, 255, 0.1); | |
box-shadow: 0 8px 32px 0 rgba(31, 38, 135, 0.37); | |
} | |
.gradient-text { | |
background: linear-gradient(90deg, #3b82f6, #8b5cf6); | |
-webkit-background-clip: text; | |
background-clip: text; | |
color: transparent; | |
} | |
.pulse-animation { | |
animation: pulse 2s infinite; | |
} | |
@keyframes pulse { | |
0% { transform: scale(1); } | |
50% { transform: scale(1.05); } | |
100% { transform: scale(1); } | |
} | |
.floating { | |
animation: floating 6s ease-in-out infinite; | |
} | |
@keyframes floating { | |
0% { transform: translateY(0px); } | |
50% { transform: translateY(-15px); } | |
100% { transform: translateY(0px); } | |
} | |
.btn-hover-effect { | |
transition: all 0.3s; | |
position: relative; | |
overflow: hidden; | |
} | |
.btn-hover-effect:after { | |
content: ""; | |
position: absolute; | |
top: 0; | |
left: -100%; | |
width: 100%; | |
height: 100%; | |
background: linear-gradient(90deg, transparent, rgba(255,255,255,0.2), transparent); | |
transition: all 0.5s; | |
} | |
.btn-hover-effect:hover:after { | |
left: 100%; | |
} | |
.service-card { | |
transition: all 0.3s; | |
transform: perspective(1000px) rotateX(0deg); | |
} | |
.service-card:hover { | |
transform: perspective(1000px) rotateX(10deg); | |
box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.3); | |
} | |
/* Animation pour le compteur */ | |
@keyframes count-up { | |
from { opacity: 0; transform: translateY(20px); } | |
to { opacity: 1; transform: translateY(0); } | |
} | |
.count-up { | |
animation: count-up 1.5s ease-out forwards; | |
} | |
</style> | |
</head> | |
<body class="min-h-screen"> | |
<!-- Robot de Monétisation --> | |
<div id="monetizationBot" class="fixed bottom-6 right-6 z-50 floating"> | |
<div class="relative"> | |
<div class="w-16 h-16 bg-gradient-to-br from-purple-600 to-blue-500 rounded-full flex items-center justify-center shadow-xl"> | |
<i class="fas fa-robot text-2xl text-white"></i> | |
</div> | |
<div class="absolute -top-2 -right-2 w-6 h-6 bg-green-500 rounded-full flex items-center justify-center text-xs font-bold pulse-animation"> | |
$$$ | |
</div> | |
</div> | |
</div> | |
<!-- Notification de Gains --> | |
<div id="earningsNotification" class="fixed top-4 right-4 glass-card px-4 py-2 rounded-lg shadow-lg hidden z-50"> | |
<div class="flex items-center"> | |
<i class="fas fa-coins text-yellow-400 mr-2"></i> | |
<span class="text-sm">+$0.05 gagnés</span> | |
</div> | |
</div> | |
<!-- Overlay de chargement --> | |
<div id="loadingOverlay" class="fixed inset-0 bg-black/90 z-50 flex flex-col items-center justify-center"> | |
<div class="text-center max-w-2xl px-4"> | |
<div class="w-24 h-24 border-4 border-blue-500 border-t-transparent rounded-full animate-spin mb-8 mx-auto"></div> | |
<h2 class="text-3xl font-bold mb-4 gradient-text">Activation du système de monétisation</h2> | |
<p class="text-xl mb-6">Chargement des <span id="loadingCount" class="font-bold">4,987,897</span> services premium...</p> | |
<div class="w-full bg-gray-700 rounded-full h-2.5 mb-6"> | |
<div id="loadingBar" class="bg-gradient-to-r from-blue-500 to-purple-600 h-2.5 rounded-full" style="width: 0%"></div> | |
</div> | |
<p class="text-sm opacity-80">Optimisation des revenus en cours. Veuillez patienter...</p> | |
</div> | |
</div> | |
<div class="container mx-auto px-4 py-8"> | |
<!-- Header Premium --> | |
<header class="text-center mb-12"> | |
<div class="glass-card inline-block px-6 py-2 rounded-full mb-6"> | |
<span class="text-sm font-medium gradient-text">MONÉTISATION ACTIVE</span> | |
</div> | |
<h1 class="text-5xl md:text-6xl font-bold mb-4 gradient-text"> | |
Annuaire <span class="text-white">Premium</span> | |
</h1> | |
<p class="text-xl opacity-90 max-w-2xl mx-auto"> | |
<span id="totalServicesCount" class="font-bold text-blue-400">4,987,897</span> services générateurs de revenus activés | |
</p> | |
<!-- Stats de Monétisation --> | |
<div class="flex justify-center gap-6 mt-8"> | |
<div class="glass-card px-6 py-3 rounded-lg text-center min-w-[180px]"> | |
<div class="text-2xl font-bold text-green-400">$<span id="currentEarnings">0.00</span></div> | |
<div class="text-xs opacity-80">Gains actuels</div> | |
</div> | |
<div class="glass-card px-6 py-3 rounded-lg text-center min-w-[180px]"> | |
<div class="text-2xl font-bold text-blue-400"><span id="totalClicks">0</span></div> | |
<div class="text-xs opacity-80">Clics aujourd'hui</div> | |
</div> | |
<div class="glass-card px-6 py-3 rounded-lg text-center min-w-[180px]"> | |
<div class="text-2xl font-bold text-purple-400"><span id="activeUsers">1</span></div> | |
<div class="text-xs opacity-80">Utilisateurs actifs</div> | |
</div> | |
</div> | |
<!-- Barre de Recherche Premium --> | |
<div class="max-w-3xl mx-auto mt-8 relative"> | |
<div class="glass-card rounded-xl p-1"> | |
<div class="flex items-center"> | |
<input type="text" id="searchInput" placeholder="Rechercher un service rentable..." | |
class="w-full bg-transparent py-4 px-6 pr-12 text-white placeholder-white/70 focus:outline-none text-lg"> | |
<button class="absolute right-6 text-white/70 hover:text-white"> | |
<i class="fas fa-search text-xl"></i> | |
</button> | |
</div> | |
</div> | |
<p class="text-sm mt-3 opacity-80"> | |
<span id="visibleCount">500</span> services affichés - <span class="text-green-400">Taux de monétisation: 98.7%</span> | |
</p> | |
</div> | |
<!-- Catégories Premium --> | |
<div class="flex flex-wrap justify-center gap-3 mt-8"> | |
<button class="category-btn px-5 py-2.5 glass-card rounded-full text-sm font-medium hover:bg-white/10 transition-all btn-hover-effect" data-category="all"> | |
<i class="fas fa-star mr-2 text-yellow-400"></i> Tous Premium | |
</button> | |
<button class="category-btn px-5 py-2.5 glass-card rounded-full text-sm font-medium hover:bg-white/10 transition-all btn-hover-effect" data-category="high-earning"> | |
<i class="fas fa-coins mr-2 text-yellow-400"></i> Haut revenu | |
</button> | |
<button class="category-btn px-5 py-2.5 glass-card rounded-full text-sm font-medium hover:bg-white/10 transition-all btn-hover-effect" data-category="affiliate"> | |
<i class="fas fa-link mr-2 text-blue-400"></i> Affiliation | |
</button> | |
<button class="category-btn px-5 py-2.5 glass-card rounded-full text-sm font-medium hover:bg-white/10 transition-all btn-hover-effect" data-category="ads"> | |
<i class="fas fa-ad mr-2 text-green-400"></i> Publicité | |
</button> | |
<button class="category-btn px-5 py-2.5 glass-card rounded-full text-sm font-medium hover:bg-white/10 transition-all btn-hover-effect" data-category="crypto"> | |
<i class="fas fa-bitcoin-sign mr-2 text-purple-400"></i> Crypto | |
</button> | |
</div> | |
</header> | |
<!-- Contenu Principal --> | |
<main> | |
<!-- Section VIP --> | |
<div class="glass-card rounded-xl p-6 mb-8"> | |
<div class="flex flex-col md:flex-row items-center justify-between"> | |
<div> | |
<h2 class="text-2xl font-bold mb-2"><i class="fas fa-crown text-yellow-400 mr-2"></i> Services VIP</h2> | |
<p class="opacity-80">Accédez à nos partenaires les plus rentables avec des commissions jusqu'à 75%</p> | |
</div> | |
<button class="mt-4 md:mt-0 px-6 py-3 bg-gradient-to-r from-yellow-500 to-yellow-600 rounded-lg font-medium text-black hover:from-yellow-400 hover:to-yellow-500 transition-all btn-hover-effect"> | |
<i class="fas fa-lock-open mr-2"></i> Débloquer VIP | |
</button> | |
</div> | |
</div> | |
<!-- Grille de Services --> | |
<div id="servicesContainer" class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-6"> | |
<!-- Les services seront générés ici par JavaScript --> | |
</div> | |
<!-- Pagination Premium --> | |
<div class="flex justify-center mt-12"> | |
<nav class="glass-card rounded-lg p-1"> | |
<ul class="flex items-center -space-x-px"> | |
<li> | |
<button class="px-4 py-3 rounded-l-lg hover:bg-white/10 transition"> | |
<i class="fas fa-chevron-left"></i> | |
</button> | |
</li> | |
<li> | |
<button class="px-4 py-3 bg-blue-600 rounded-md mx-1">1</button> | |
</li> | |
<li> | |
<button class="px-4 py-3 hover:bg-white/10 rounded-md mx-1">2</button> | |
</li> | |
<li> | |
<button class="px-4 py-3 hover:bg-white/10 rounded-md mx-1">3</button> | |
</li> | |
<li> | |
<span class="px-2">...</span> | |
</li> | |
<li> | |
<button class="px-4 py-3 hover:bg-white/10 rounded-md mx-1">24</button> | |
</li> | |
<li> | |
<button class="px-4 py-3 rounded-r-lg hover:bg-white/10 transition"> | |
<i class="fas fa-chevron-right"></i> | |
</button> | |
</li> | |
</ul> | |
</nav> | |
</div> | |
</main> | |
<!-- Footer Premium --> | |
<footer class="mt-20 pt-10 border-t border-white/10"> | |
<div class="grid grid-cols-1 md:grid-cols-4 gap-8"> | |
<div> | |
<h3 class="text-lg font-bold mb-4">Monétisation</h3> | |
<ul class="space-y-2"> | |
<li><a href="#" class="opacity-80 hover:opacity-100 hover:text-blue-400 transition">Comment ça marche</a></li> | |
<li><a href="#" class="opacity-80 hover:opacity-100 hover:text-blue-400 transition">Statistiques</a></li> | |
<li><a href="#" class="opacity-80 hover:opacity-100 hover:text-blue-400 transition">Paiements</a></li> | |
</ul> | |
</div> | |
<div> | |
<h3 class="text-lg font-bold mb-4">Services</h3> | |
<ul class="space-y-2"> | |
<li><a href="#" class="opacity-80 hover:opacity-100 hover:text-blue-400 transition">Top rentables</a></li> | |
<li><a href="#" class="opacity-80 hover:opacity-100 hover:text-blue-400 transition">Nouveautés</a></li> | |
<li><a href="#" class="opacity-80 hover:opacity-100 hover:text-blue-400 transition">VIP</a></li> | |
</ul> | |
</div> | |
<div> | |
<h3 class="text-lg font-bold mb-4">Affiliation</h3> | |
<ul class="space-y-2"> | |
<li><a href="#" class="opacity-80 hover:opacity-100 hover:text-blue-400 transition">Devenir partenaire</a></li> | |
<li><a href="#" class="opacity-80 hover:opacity-100 hover:text-blue-400 transition">Programme de parrainage</a></li> | |
<li><a href="#" class="opacity-80 hover:opacity-100 hover:text-blue-400 transition">Ressources</a></li> | |
</ul> | |
</div> | |
<div> | |
<h3 class="text-lg font-bold mb-4">Contact</h3> | |
<div class="flex space-x-4 mb-4"> | |
<a href="#" class="w-10 h-10 glass-card rounded-full flex items-center justify-center hover:bg-blue-600 transition"> | |
<i class="fab fa-facebook-f"></i> | |
</a> | |
<a href="#" class="w-10 h-10 glass-card rounded-full flex items-center justify-center hover:bg-blue-400 transition"> | |
<i class="fab fa-twitter"></i> | |
</a> | |
<a href="#" class="w-10 h-10 glass-card rounded-full flex items-center justify-center hover:bg-purple-600 transition"> | |
<i class="fab fa-instagram"></i> | |
</a> | |
</div> | |
<p class="text-sm opacity-80">support@annuairepremium.com</p> | |
</div> | |
</div> | |
<div class="border-t border-white/10 mt-8 pt-8 text-center"> | |
<p>© 2023 Annuaire Premium - Système de monétisation automatisé</p> | |
<p class="text-sm mt-2 opacity-80"> | |
<span class="pulse-animation"> | |
<i class="fas fa-circle text-green-500 text-xs mr-1"></i> Monétisation active: $<span id="liveEarnings">0.00</span>/min | |
</span> | |
</p> | |
</div> | |
</footer> | |
</div> | |
<script> | |
// Services Premium avec taux de monétisation | |
const premiumServices = [ | |
{ | |
name: "Amazon Affiliate", | |
url: "https://www.amazon.com", | |
category: "high-earning", | |
icon: "shopping-cart", | |
rate: 0.15, | |
commission: "4-10%" | |
}, | |
{ | |
name: "eBay Partner", | |
url: "https://www.ebay.com", | |
category: "high-earning", | |
icon: "shopping-bag", | |
rate: 0.12, | |
commission: "5-8%" | |
}, | |
{ | |
name: "Crypto.com", | |
url: "https://crypto.com", | |
category: "crypto", | |
icon: "bitcoin-sign", | |
rate: 0.20, | |
commission: "$25 par inscription" | |
}, | |
{ | |
name: "Binance Affiliate", | |
url: "https://www.binance.com", | |
category: "crypto", | |
icon: "chart-line", | |
rate: 0.25, | |
commission: "40% des frais" | |
}, | |
{ | |
name: "Shopify Partner", | |
url: "https://www.shopify.com", | |
category: "affiliate", | |
icon: "store", | |
rate: 0.18, | |
commission: "$58 par vente" | |
}, | |
{ | |
name: "AdSense Premium", | |
url: "https://www.google.com/adsense", | |
category: "ads", | |
icon: "ad", | |
rate: 0.08, | |
commission: "68% du revenu" | |
}, | |
{ | |
name: "ClickBank VIP", | |
url: "https://www.clickbank.com", | |
category: "high-earning", | |
icon: "money-bill-wave", | |
rate: 0.30, | |
commission: "Jusqu'à 75%" | |
}, | |
{ | |
name: "Bluehost Affiliate", | |
url: "https://www.bluehost.com", | |
category: "affiliate", | |
icon: "server", | |
rate: 0.22, | |
commission: "$65 par vente" | |
}, | |
{ | |
name: "SEMrush Pro", | |
url: "https://www.semrush.com", | |
category: "high-earning", | |
icon: "search-dollar", | |
rate: 0.15, | |
commission: "40% récurrent" | |
}, | |
{ | |
name: "Udemy Partners", | |
url: "https://www.udemy.com", | |
category: "affiliate", | |
icon: "graduation-cap", | |
rate: 0.10, | |
commission: "10% par vente" | |
}, | |
{ | |
name: "HubSpot Sales", | |
url: "https://www.hubspot.com", | |
category: "high-earning", | |
icon: "hubspot", | |
rate: 0.28, | |
commission: "$100-1000" | |
}, | |
{ | |
name: "Squarespace", | |
url: "https://www.squarespace.com", | |
category: "affiliate", | |
icon: "square", | |
rate: 0.12, | |
commission: "$20-100" | |
} | |
]; | |
// Générer une grande liste de services avec monétisation (4,987,897 services) | |
function generateMassiveMonetizedServices() { | |
const massiveList = []; | |
const totalServices = 4987897; // Exactement 4,987,897 services | |
const baseCount = premiumServices.length; | |
// Créer des variations pour chaque service de base | |
for (let i = 0; i < totalServices; i++) { | |
const baseService = premiumServices[i % baseCount]; | |
// Créer une variation unique pour chaque service | |
const variation = { | |
...baseService, | |
name: `${baseService.name} #${i+1}`, | |
url: `${baseService.url}?ref=${i}`, | |
rate: Math.min(0.5, baseService.rate * (0.8 + Math.random() * 0.4)), // Variation des taux | |
commission: i % 5 === 0 ? baseService.commission : | |
`${Math.floor(5 + Math.random() * 20)}%` // Variation des commissions | |
}; | |
massiveList.push(variation); | |
} | |
return massiveList; | |
} | |
// Variables globales | |
let allServices = generateMassiveMonetizedServices(); // 4,987,897 services | |
let currentServices = allServices.slice(0, 12); // Afficher 12 initialement | |
let currentCategory = 'all'; | |
let totalEarnings = 0; | |
let totalClicks = 0; | |
let activeUsers = 1; | |
let earningsPerMinute = 0; | |
// Robot de monétisation | |
const monetizationBot = document.getElementById('monetizationBot'); | |
const earningsNotification = document.getElementById('earningsNotification'); | |
const loadingOverlay = document.getElementById('loadingOverlay'); | |
const loadingBar = document.getElementById('loadingBar'); | |
const loadingCount = document.getElementById('loadingCount'); | |
const totalServicesCount = document.getElementById('totalServicesCount'); | |
// Simuler le chargement des 4,987,897 services | |
function simulateMassiveLoading() { | |
let loaded = 0; | |
const total = 4987897; | |
const interval = setInterval(() => { | |
loaded += 498789; // Charger par paquets pour l'animation | |
if (loaded > total) loaded = total; | |
// Mettre à jour la barre de progression | |
const percent = Math.min(100, (loaded / total) * 100); | |
loadingBar.style.width = `${percent}%`; | |
// Mettre à jour le compteur avec animation | |
loadingCount.textContent = loaded.toLocaleString('fr-FR'); | |
loadingCount.classList.add('count-up'); | |
setTimeout(() => loadingCount.classList.remove('count-up'), 1000); | |
// Terminer le chargement | |
if (loaded >= total) { | |
clearInterval(interval); | |
setTimeout(() => { | |
loadingOverlay.classList.add('opacity-0'); | |
setTimeout(() => { | |
loadingOverlay.classList.add('hidden'); | |
// Activer la monétisation automatique | |
activateAutoMonetization(); | |
}, 500); | |
}, 1000); | |
} | |
}, 300); | |
} | |
// Activer la monétisation automatique | |
function activateAutoMonetization() { | |
// Mettre à jour le compteur total avec animation | |
totalServicesCount.classList.add('count-up'); | |
// Simuler des utilisateurs actifs | |
setInterval(() => { | |
activeUsers += Math.floor(Math.random() * 5) - 2; // Variation entre -2 et +2 | |
activeUsers = Math.max(1, activeUsers); | |
document.getElementById('activeUsers').textContent = activeUsers.toLocaleString('fr-FR'); | |
// Mettre à jour les gains par minute en fonction des utilisateurs | |
earningsPerMinute = activeUsers * 0.35 * (1 + Math.random() * 0.8); | |
document.getElementById('liveEarnings').textContent = earningsPerMinute.toFixed(2); | |
}, 30000); | |
// Simuler des gains automatiques | |
setInterval(() => { | |
// Gains basés sur les utilisateurs actifs et les 4,987,897 services | |
const increment = (earningsPerMinute / 60) * (1 + Math.random() * 0.5); | |
totalEarnings += increment; | |
// Mettre à jour l'affichage | |
document.getElementById('currentEarnings').textContent = totalEarnings.toFixed(2); | |
document.getElementById('liveEarnings').textContent = earningsPerMinute.toFixed(2); | |
// Générer des clics aléatoires sur les services | |
if (Math.random() > 0.7) { | |
simulateRandomClick(); | |
} | |
}, 1000); | |
// Animer le robot | |
animateBot(); | |
} | |
// Simuler un clic aléatoire sur un service | |
function simulateRandomClick() { | |
const randomService = allServices[Math.floor(Math.random() * allServices.length)]; | |
const earnings = randomService.rate * (0.03 + Math.random() * 0.12); | |
totalEarnings += earnings; | |
totalClicks++; | |
// Mettre à jour l'UI | |
document.getElementById('currentEarnings').textContent = totalEarnings.toFixed(2); | |
document.getElementById('totalClicks').textContent = totalClicks.toLocaleString('fr-FR'); | |
// Afficher la notification | |
showEarningNotification(earnings); | |
// Animer le robot | |
monetizationBot.classList.add('pulse-animation'); | |
setTimeout(() => { | |
monetizationBot.classList.remove('pulse-animation'); | |
}, 1000); | |
} | |
// Animer le robot | |
function animateBot() { | |
setInterval(() => { | |
monetizationBot.classList.toggle('floating'); | |
// Faire clignoter le robot aléatoirement | |
if (Math.random() > 0.7) { | |
monetizationBot.classList.add('pulse-animation'); | |
setTimeout(() => { | |
monetizationBot.classList.remove('pulse-animation'); | |
}, 2000); | |
} | |
}, 6000); | |
} | |
// Afficher une notification de gains | |
function showEarningNotification(amount) { | |
earningsNotification.querySelector('span').textContent = `+$${amount.toFixed(2)} gagnés`; | |
earningsNotification.classList.remove('hidden'); | |
setTimeout(() => { | |
earningsNotification.classList.add('hidden'); | |
}, 3000); | |
} | |
// Générer les cartes de service | |
function generateServiceCards(servicesToShow) { | |
const container = document.getElementById('servicesContainer'); | |
container.innerHTML = ''; | |
servicesToShow.forEach(service => { | |
const card = document.createElement('div'); | |
card.className = `service-card glass-card rounded-xl overflow-hidden transition-all duration-300 ${service.category}`; | |
card.innerHTML = ` | |
<div class="relative"> | |
<div class="absolute top-3 right-3 bg-gradient-to-r from-yellow-500 to-yellow-600 text-black text-xs px-2 py-1 rounded-full font-bold"> | |
${service.commission} | |
</div> | |
<div class="p-6 pb-4"> | |
<div class="w-12 h-12 bg-gradient-to-br from-blue-600 to-purple-600 rounded-full flex items-center justify-center text-white text-xl mb-4"> | |
<i class="fas fa-${service.icon}"></i> | |
</div> | |
<h3 class="text-xl font-bold mb-1">${service.name}</h3> | |
<p class="text-sm opacity-80 mb-3">Catégorie: ${service.category}</p> | |
<div class="flex items-center justify-between"> | |
<div> | |
<div class="text-xs opacity-70">Taux de conversion</div> | |
<div class="w-full bg-gray-700 rounded-full h-1.5 mt-1"> | |
<div class="bg-green-500 h-1.5 rounded-full" style="width: ${service.rate * 100}%"></div> | |
</div> | |
</div> | |
<button class="monetized-btn px-4 py-2 bg-gradient-to-r from-blue-600 to-purple-600 rounded-lg text-sm font-medium hover:from-blue-500 hover:to-purple-500 transition-all"> | |
Accéder <i class="fas fa-external-link-alt ml-1 text-xs"></i> | |
</button> | |
</div> | |
</div> | |
</div> | |
`; | |
// Gérer le clic monétisé | |
const btn = card.querySelector('.monetized-btn'); | |
btn.addEventListener('click', (e) => { | |
e.preventDefault(); | |
// Simuler un délai de "traitement" | |
btn.innerHTML = '<i class="fas fa-spinner fa-spin"></i>'; | |
setTimeout(() => { | |
// Calculer les gains (aléatoire basé sur le taux) | |
const earnings = service.rate * (0.05 + Math.random() * 0.15); | |
totalEarnings += earnings; | |
totalClicks++; | |
// Mettre à jour l'UI | |
document.getElementById('currentEarnings').textContent = totalEarnings.toFixed(2); | |
document.getElementById('totalClicks').textContent = totalClicks.toLocaleString('fr-FR'); | |
// Afficher la notification | |
showEarningNotification(earnings); | |
// Animer le robot | |
monetizationBot.classList.add('pulse-animation'); | |
setTimeout(() => { | |
monetizationBot.classList.remove('pulse-animation'); | |
}, 1000); | |
// Ouvrir le lien | |
window.open(service.url, '_blank', 'noopener,noreferrer'); | |
// Remettre le bouton normal | |
btn.innerHTML = 'Accéder <i class="fas fa-external-link-alt ml-1 text-xs"></i>'; | |
}, 800); | |
}); | |
container.appendChild(card); | |
}); | |
document.getElementById('visibleCount').textContent = servicesToShow.length; | |
} | |
// Filtrer par catégorie | |
function filterByCategory(category) { | |
currentCategory = category; | |
if (category === 'all') { | |
currentServices = allServices.slice(0, 12); | |
} else { | |
currentServices = allServices.filter(s => s.category === category).slice(0, 12); | |
} | |
generateServiceCards(currentServices); | |
updateActiveCategoryButton(); | |
} | |
// Mettre à jour les boutons de catégorie actifs | |
function updateActiveCategoryButton() { | |
document.querySelectorAll('.category-btn').forEach(btn => { | |
if (btn.dataset.category === currentCategory) { | |
btn.classList.add('bg-blue-600', 'text-white'); | |
btn.classList.remove('glass-card', 'hover:bg-white/10'); | |
} else { | |
btn.classList.remove('bg-blue-600', 'text-white'); | |
btn.classList.add('glass-card', 'hover:bg-white/10'); | |
} | |
}); | |
} | |
// Recherche | |
function searchServices(query) { | |
const filtered = allServices.filter(service => | |
service.name.toLowerCase().includes(query.toLowerCase()) || | |
service.category.toLowerCase().includes(query.toLowerCase()) | |
).slice(0, 12); | |
currentServices = filtered; | |
generateServiceCards(currentServices); | |
} | |
// Initialisation | |
document.addEventListener('DOMContentLoaded', function() { | |
// Démarrer le chargement massif | |
simulateMassiveLoading(); | |
// Générer les premiers services | |
generateServiceCards(currentServices); | |
updateActiveCategoryButton(); | |
// Écouteurs d'événements | |
document.querySelectorAll('.category-btn').forEach(btn => { | |
btn.addEventListener('click', () => filterByCategory(btn.dataset.category)); | |
}); | |
document.getElementById('searchInput').addEventListener('input', (e) => { | |
searchServices(e.target.value); | |
}); | |
// Faire apparaître le robot après un délai | |
setTimeout(() => { | |
monetizationBot.style.opacity = '1'; | |
}, 3000); | |
}); | |
</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/mega-academy" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body> | |
</html> |