Spaces:
Running
Running
<html lang="fr"> | |
<head> | |
<meta charset="UTF-8"> | |
<meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
<title>StreamFlow - Plateforme de Streaming Français</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> | |
.hero-gradient { | |
background: linear-gradient(135deg, #1e3a8a 0%, #7c3aed 100%); | |
} | |
.movie-card:hover { | |
transform: scale(1.05); | |
box-shadow: 0 10px 25px rgba(0,0,0,0.3); | |
} | |
.ad-container { | |
transition: all 0.3s ease; | |
} | |
.ad-container:hover { | |
transform: scale(1.02); | |
} | |
.movie-grid { | |
display: grid; | |
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); | |
gap: 20px; | |
} | |
.loading-spinner { | |
border: 4px solid rgba(255, 255, 255, 0.3); | |
border-radius: 50%; | |
border-top: 4px solid #ffffff; | |
width: 40px; | |
height: 40px; | |
animation: spin 1s linear infinite; | |
margin: 50px auto; | |
} | |
@keyframes spin { | |
0% { transform: rotate(0deg); } | |
100% { transform: rotate(360deg); } | |
} | |
.autoplay-badge { | |
position: absolute; | |
top: 10px; | |
right: 10px; | |
background-color: rgba(0,0,0,0.7); | |
color: white; | |
padding: 3px 8px; | |
border-radius: 4px; | |
font-size: 12px; | |
display: flex; | |
align-items: center; | |
} | |
.autoplay-badge i { | |
margin-right: 5px; | |
color: #3b82f6; | |
} | |
.auto-player { | |
position: fixed; | |
bottom: 20px; | |
right: 20px; | |
width: 300px; | |
background: rgba(0,0,0,0.8); | |
border-radius: 8px; | |
z-index: 1000; | |
overflow: hidden; | |
box-shadow: 0 4px 12px rgba(0,0,0,0.3); | |
} | |
.player-header { | |
background: #1a1a1a; | |
padding: 8px 12px; | |
display: flex; | |
justify-content: space-between; | |
align-items: center; | |
} | |
.player-title { | |
font-size: 14px; | |
font-weight: bold; | |
white-space: nowrap; | |
overflow: hidden; | |
text-overflow: ellipsis; | |
} | |
.player-close { | |
background: none; | |
border: none; | |
color: white; | |
cursor: pointer; | |
} | |
.player-video { | |
width: 100%; | |
height: 169px; | |
background: black; | |
} | |
.player-controls { | |
padding: 8px; | |
display: flex; | |
justify-content: space-between; | |
background: #1a1a1a; | |
} | |
.player-btn { | |
background: #3b82f6; | |
color: white; | |
border: none; | |
border-radius: 4px; | |
padding: 4px 8px; | |
font-size: 12px; | |
cursor: pointer; | |
} | |
</style> | |
</head> | |
<body class="bg-gray-900 text-white"> | |
<!-- Navigation --> | |
<nav class="bg-gray-800 shadow-lg sticky top-0 z-50"> | |
<div class="container mx-auto px-4 py-3"> | |
<div class="flex justify-between items-center"> | |
<div class="flex items-center space-x-4"> | |
<a href="#" class="flex items-center"> | |
<i class="fas fa-play-circle text-blue-500 text-3xl mr-2"></i> | |
<span class="text-2xl font-bold">StreamFlow</span> | |
</a> | |
<div class="hidden md:flex space-x-6"> | |
<a href="#" class="hover:text-blue-400">Accueil</a> | |
<a href="#films" class="hover:text-blue-400">Films</a> | |
<a href="#series" class="hover:text-blue-400">Séries</a> | |
<a href="#tendances" class="hover:text-blue-400">Tendances</a> | |
<a href="#liste" class="hover:text-blue-400">Ma liste</a> | |
</div> | |
</div> | |
<div class="flex items-center space-x-4"> | |
<div class="relative hidden md:block"> | |
<input type="text" placeholder="Rechercher..." class="bg-gray-700 px-4 py-1 rounded-full w-64 focus:outline-none focus:ring-2 focus:ring-blue-500"> | |
<i class="fas fa-search absolute right-3 top-2 text-gray-400"></i> | |
</div> | |
<div class="relative"> | |
<img src="https://randomuser.me/api/portraits/men/32.jpg" alt="Profile" class="w-8 h-8 rounded-full cursor-pointer" onclick="window.location.href='#profil'"> | |
<div class="absolute right-0 bottom-0 w-3 h-3 bg-green-500 rounded-full border-2 border-gray-800"></div> | |
</div> | |
</div> | |
</div> | |
</div> | |
</nav> | |
<!-- Hero Section with Ad --> | |
<section class="hero-gradient py-16"> | |
<div class="container mx-auto px-4"> | |
<div class="flex flex-col md:flex-row items-center"> | |
<div class="md:w-2/3 mb-8 md:mb-0"> | |
<h1 class="text-4xl md:text-5xl font-bold mb-4">57,854 films en VF à portée de clic</h1> | |
<p class="text-xl mb-6">La plus grande bibliothèque de films français en streaming. Lecture automatique en un clic.</p> | |
<div class="flex space-x-4"> | |
<button id="startWatchingBtn" class="bg-red-600 hover:bg-red-700 px-6 py-3 rounded-lg font-semibold flex items-center"> | |
<i class="fas fa-play mr-2"></i> Commencer à regarder | |
</button> | |
<button id="howItWorksBtn" class="bg-gray-700 hover:bg-gray-600 px-6 py-3 rounded-lg font-semibold flex items-center"> | |
<i class="fas fa-info-circle mr-2"></i> Comment ça marche | |
</button> | |
</div> | |
</div> | |
<div class="md:w-1/3"> | |
<!-- Publicité premium --> | |
<div class="ad-container bg-yellow-500 text-gray-900 p-4 rounded-lg shadow-lg"> | |
<div class="flex items-center mb-2"> | |
<i class="fas fa-crown text-xl mr-2"></i> | |
<span class="font-bold">PUBLICITÉ</span> | |
</div> | |
<h3 class="font-bold text-lg mb-2">Essayez NordVPN aujourd'hui!</h3> | |
<p class="text-sm mb-3">Débloquez plus de contenus en français avec un VPN.</p> | |
<button id="vpnBtn" class="w-full bg-black text-white py-2 rounded font-semibold">Obtenir 70% de réduction</button> | |
</div> | |
</div> | |
</div> | |
</div> | |
</section> | |
<!-- Bande de publicité --> | |
<div class="bg-gray-800 py-4"> | |
<div class="container mx-auto px-4"> | |
<div class="flex items-center justify-between"> | |
<span class="text-sm font-semibold text-gray-400">Publicité</span> | |
<div class="flex items-center space-x-4 overflow-x-auto whitespace-nowrap" id="ad-scroll"> | |
<span class="text-sm">🎁 3 mois gratuits Disney+ pour les nouveaux abonnés</span> | |
<span class="text-sm">📱 iPhone 15 Pro Max - Livraison gratuite</span> | |
<span class="text-sm">✈️ Booking.com - Réservez maintenant, payez plus tard</span> | |
<span class="text-sm">💳 Amazon Prime - 5% de cashback sur tous vos achats</span> | |
</div> | |
<button id="closeAdBtn" class="text-gray-400 hover:text-white"> | |
<i class="fas fa-times"></i> | |
</button> | |
</div> | |
</div> | |
</div> | |
<!-- Main Content --> | |
<div class="container mx-auto px-4 py-8"> | |
<!-- Section Films populaires --> | |
<section class="mb-12" id="films"> | |
<div class="flex justify-between items-center mb-6"> | |
<h2 class="text-2xl font-bold">Films populaires en français</h2> | |
<div class="flex space-x-4"> | |
<button id="allFilterBtn" class="bg-blue-600 px-4 py-1 rounded-lg text-sm">Tous</button> | |
<button id="actionFilterBtn" class="bg-gray-700 hover:bg-gray-600 px-4 py-1 rounded-lg text-sm">Action</button> | |
<button id="comedyFilterBtn" class="bg-gray-700 hover:bg-gray-600 px-4 py-1 rounded-lg text-sm">Comédie</button> | |
<button id="dramaFilterBtn" class="bg-gray-700 hover:bg-gray-600 px-4 py-1 rounded-lg text-sm">Drame</button> | |
</div> | |
</div> | |
<div class="movie-grid" id="movies-container"> | |
<!-- Les films seront chargés ici par JavaScript --> | |
<div class="loading-spinner"></div> | |
</div> | |
<div class="text-center mt-8"> | |
<button id="loadMoreBtn" class="bg-blue-600 hover:bg-blue-700 px-6 py-2 rounded-lg font-semibold"> | |
<i class="fas fa-plus-circle mr-2"></i> Charger plus de films | |
</button> | |
</div> | |
</section> | |
<!-- Publicité intermédiaire --> | |
<div class="ad-container bg-blue-900 rounded-lg p-6 mb-12 text-center"> | |
<div class="max-w-3xl mx-auto"> | |
<h3 class="text-xl font-bold mb-2">StreamFlow Premium - Sans publicité</h3> | |
<p class="mb-4">Profitez de tous nos 57,854 films sans interruption pour seulement 9,99€/mois</p> | |
<button id="premiumBtn" class="bg-red-600 hover:bg-red-700 px-6 py-2 rounded-lg font-semibold"> | |
Essai gratuit de 30 jours | |
</button> | |
</div> | |
</div> | |
<!-- Section Séries tendances --> | |
<section class="mb-12" id="series"> | |
<div class="flex justify-between items-center mb-6"> | |
<h2 class="text-2xl font-bold">Séries en VF</h2> | |
<a href="#tous-series" class="text-blue-400 hover:underline">Voir tout</a> | |
</div> | |
<div class="grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-6 gap-4"> | |
<!-- Série Card 1 --> | |
<div class="movie-card bg-gray-800 rounded-lg overflow-hidden transition duration-300 cursor-pointer"> | |
<div class="relative"> | |
<img src="https://via.placeholder.com/300x450" alt="Series" class="w-full h-auto"> | |
<div class="autoplay-badge"> | |
<i class="fas fa-play"></i> Auto | |
</div> | |
<div class="absolute bottom-0 left-0 right-0 bg-gradient-to-t from-black to-transparent p-4"> | |
<div class="flex items-center"> | |
<span class="bg-yellow-500 text-black text-xs font-bold px-2 py-1 rounded mr-2">4.8</span> | |
<span class="text-xs">Saison 3</span> | |
</div> | |
</div> | |
</div> | |
<div class="p-3"> | |
<h3 class="font-semibold truncate">The Last of Us</h3> | |
<p class="text-gray-400 text-sm">Drame | VF</p> | |
</div> | |
</div> | |
<!-- Série Card 2 --> | |
<div class="movie-card bg-gray-800 rounded-lg overflow-hidden transition duration-300 cursor-pointer"> | |
<div class="relative"> | |
<img src="https://via.placeholder.com/300x450" alt="Series" class="w-full h-auto"> | |
<div class="autoplay-badge"> | |
<i class="fas fa-play"></i> Auto | |
</div> | |
<div class="absolute bottom-0 left-0 right-0 bg-gradient-to-t from-black to-transparent p-4"> | |
<div class="flex items-center"> | |
<span class="bg-yellow-500 text-black text-xs font-bold px-2 py-1 rounded mr-2">4.9</span> | |
<span class="text-xs">Saison 4</span> | |
</div> | |
</div> | |
</div> | |
<div class="p-3"> | |
<h3 class="font-semibold truncate">Stranger Things</h3> | |
<p class="text-gray-400 text-sm">Science-fiction | VF</p> | |
</div> | |
</div> | |
<!-- Série Card 3 --> | |
<div class="movie-card bg-gray-800 rounded-lg overflow-hidden transition duration-300 cursor-pointer"> | |
<div class="relative"> | |
<img src="https://via.placeholder.com/300x450" alt="Series" class="w-full h-auto"> | |
<div class="autoplay-badge"> | |
<i class="fas fa-play"></i> Auto | |
</div> | |
<div class="absolute bottom-0 left-0 right-0 bg-gradient-to-t from-black to-transparent p-4"> | |
<div class="flex items-center"> | |
<span class="bg-yellow-500 text-black text-xs font-bold px-2 py-1 rounded mr-2">4.7</span> | |
<span class="text-xs">Saison 2</span> | |
</div> | |
</div> | |
</div> | |
<div class="p-3"> | |
<h3 class="font-semibold truncate">House of the Dragon</h3> | |
<p class="text-gray-400 text-sm">Fantasy | VF</p> | |
</div> | |
</div> | |
<!-- Série Card 4 --> | |
<div class="movie-card bg-gray-800 rounded-lg overflow-hidden transition duration-300 cursor-pointer"> | |
<div class="relative"> | |
<img src="https://via.placeholder.com/300x450" alt="Series" class="w-full h-auto"> | |
<div class="autoplay-badge"> | |
<i class="fas fa-play"></i> Auto | |
</div> | |
<div class="absolute bottom-0 left-0 right-0 bg-gradient-to-t from-black to-transparent p-4"> | |
<div class="flex items-center"> | |
<span class="bg-yellow-500 text-black text-xs font-bold px-2 py-1 rounded mr-2">4.5</span> | |
<span class="text-xs">Saison 5</span> | |
</div> | |
</div> | |
</div> | |
<div class="p-3"> | |
<h3 class="font-semibold truncate">The Witcher</h3> | |
<p class="text-gray-400 text-sm">Fantasy | VF</p> | |
</div> | |
</div> | |
<!-- Série Card 5 --> | |
<div class="movie-card bg-gray-800 rounded-lg overflow-hidden transition duration-300 cursor-pointer"> | |
<div class="relative"> | |
<img src="https://via.placeholder.com/300x450" alt="Series" class="w-full h-auto"> | |
<div class="autoplay-badge"> | |
<i class="fas fa-play"></i> Auto | |
</div> | |
<div class="absolute bottom-0 left-0 right-0 bg-gradient-to-t from-black to-transparent p-4"> | |
<div class="flex items-center"> | |
<span class="bg-yellow-500 text-black text-xs font-bold px-2 py-1 rounded mr-2">4.3</span> | |
<span class="text-xs">Saison 1</span> | |
</div> | |
</div> | |
</div> | |
<div class="p-3"> | |
<h3 class="font-semibold truncate">Wednesday</h3> | |
<p class="text-gray-400 text-sm">Comédie | VF</p> | |
</div> | |
</div> | |
<!-- Série Card 6 --> | |
<div class="movie-card bg-gray-800 rounded-lg overflow-hidden transition duration-300 cursor-pointer"> | |
<div class="relative"> | |
<img src="https://via.placeholder.com/300x450" alt="Series" class="w-full h-auto"> | |
<div class="autoplay-badge"> | |
<i class="fas fa-play"></i> Auto | |
</div> | |
<div class="absolute bottom-0 left-0 right-0 bg-gradient-to-t from-black to-transparent p-4"> | |
<div class="flex items-center"> | |
<span class="bg-yellow-500 text-black text-xs font-bold px-2 py-1 rounded mr-2">4.6</span> | |
<span class="text-xs">Saison 2</span> | |
</div> | |
</div> | |
</div> | |
<div class="p-3"> | |
<h3 class="font-semibold truncate">The Mandalorian</h3> | |
<p class="text-gray-400 text-sm">Science-fiction | VF</p> | |
</div> | |
</div> | |
</div> | |
</section> | |
<!-- Publicité native --> | |
<div class="ad-container bg-gray-800 rounded-lg p-4 mb-12 flex items-center"> | |
<div class="w-16 h-16 bg-blue-500 rounded-lg flex items-center justify-center mr-4"> | |
<i class="fas fa-gamepad text-2xl"></i> | |
</div> | |
<div class="flex-1"> | |
<h3 class="font-bold">Découvrez nos jeux exclusifs</h3> | |
<p class="text-sm text-gray-400">Abonnez-vous à StreamFlow Gaming pour accéder à des centaines de jeux premium</p> | |
</div> | |
<button id="gamingBtn" class="bg-green-600 hover:bg-green-700 px-4 py-2 rounded-lg text-sm font-semibold"> | |
Essayer maintenant | |
</button> | |
</div> | |
<!-- Section Nouveautés --> | |
<section class="mb-12" id="tendances"> | |
<div class="flex justify-between items-center mb-6"> | |
<h2 class="text-2xl font-bold">Nouveautés en VF</h2> | |
<a href="#tous-nouveautes" class="text-blue-400 hover:underline">Voir tout</a> | |
</div> | |
<div class="grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-6 gap-4"> | |
<!-- Nouveauté Card 1 --> | |
<div class="movie-card bg-gray-800 rounded-lg overflow-hidden transition duration-300 cursor-pointer"> | |
<div class="relative"> | |
<img src="https://via.placeholder.com/300x450" alt="New" class="w-full h-auto"> | |
<div class="autoplay-badge"> | |
<i class="fas fa-play"></i> Auto | |
</div> | |
<div class="absolute top-2 left-2 bg-red-600 text-white text-xs px-2 py-1 rounded">NOUVEAU</div> | |
</div> | |
<div class="p-3"> | |
<h3 class="font-semibold truncate">The Flash</h3> | |
<p class="text-gray-400 text-sm">Action | VF</p> | |
</div> | |
</div> | |
<!-- Nouveauté Card 2 --> | |
<div class="movie-card bg-gray-800 rounded-lg overflow-hidden transition duration-300 cursor-pointer"> | |
<div class="relative"> | |
<img src="https://via.placeholder.com/300x450" alt="New" class="w-full h-auto"> | |
<div class="autoplay-badge"> | |
<i class="fas fa-play"></i> Auto | |
</div> | |
<div class="absolute top-2 left-2 bg-red-600 text-white text-xs px-2 py-1 rounded">NOUVEAU</div> | |
</div> | |
<div class="p-3"> | |
<h3 class="font-semibold truncate">Indiana Jones 5</h3> | |
<p class="text-gray-400 text-sm">Aventure | VF</p> | |
</div> | |
</div> | |
<!-- Nouveauté Card 3 --> | |
<div class="movie-card bg-gray-800 rounded-lg overflow-hidden transition duration-300 cursor-pointer"> | |
<div class="relative"> | |
<img src="https://via.placeholder.com/300x450" alt="New" class="w-full h-auto"> | |
<div class="autoplay-badge"> | |
<i class="fas fa-play"></i> Auto | |
</div> | |
<div class="absolute top-2 left-2 bg-red-600 text-white text-xs px-2 py-1 rounded">NOUVEAU</div> | |
</div> | |
<div class="p-3"> | |
<h3 class="font-semibold truncate">Elemental</h3> | |
<p class="text-gray-400 text-sm">Animation | VF</p> | |
</div> | |
</div> | |
<!-- Nouveauté Card 4 --> | |
<div class="movie-card bg-gray-800 rounded-lg overflow-hidden transition duration-300 cursor-pointer"> | |
<div class="relative"> | |
<img src="https://via.placeholder.com/300x450" alt="New" class="w-full h-auto"> | |
<div class="autoplay-badge"> | |
<i class="fas fa-play"></i> Auto | |
</div> | |
<div class="absolute top-2 left-2 bg-red-600 text-white text-xs px-2 py-1 rounded">NOUVEAU</div> | |
</div> | |
<div class="p-3"> | |
<h3 class="font-semibold truncate">Transformers 7</h3> | |
<p class="text-gray-400 text-sm">Action | VF</p> | |
</div> | |
</div> | |
<!-- Nouveauté Card 5 --> | |
<div class="movie-card bg-gray-800 rounded-lg overflow-hidden transition duration-300 cursor-pointer"> | |
<div class="relative"> | |
<img src="https://via.placeholder.com/300x450" alt="New" class="w-full h-auto"> | |
<div class="autoplay-badge"> | |
<i class="fas fa-play"></i> Auto | |
</div> | |
<div class="absolute top-2 left-2 bg-red-600 text-white text-xs px-2 py-1 rounded">NOUVEAU</div> | |
</div> | |
<div class="p-3"> | |
<h3 class="font-semibold truncate">Fast X</h3> | |
<p class="text-gray-400 text-sm">Action | VF</p> | |
</div> | |
</div> | |
<!-- Nouveauté Card 6 --> | |
<div class="movie-card bg-gray-800 rounded-lg overflow-hidden transition duration-300 cursor-pointer"> | |
<div class="relative"> | |
<img src="https://via.placeholder.com/300x450" alt="New" class="w-full h-auto"> | |
<div class="autoplay-badge"> | |
<i class="fas fa-play"></i> Auto | |
</div> | |
<div class="absolute top-2 left-2 bg-red-600 text-white text-xs px-2 py-1 rounded">NOUVEAU</div> | |
</div> | |
<div class="p-3"> | |
<h3 class="font-semibold truncate">The Little Mermaid</h3> | |
<p class="text-gray-400 text-sm">Fantasy | VF</p> | |
</div> | |
</div> | |
</div> | |
</section> | |
</div> | |
<!-- Footer with Ads --> | |
<footer class="bg-gray-800 pt-12 pb-6"> | |
<div class="container mx-auto px-4"> | |
<!-- Publicité footer --> | |
<div class="ad-container bg-gray-700 rounded-lg p-6 mb-8 text-center"> | |
<h3 class="text-xl font-bold mb-2">Téléchargez notre application mobile</h3> | |
<p class="mb-4">Regardez vos 57,854 films préférés partout, même hors ligne</p> | |
<div class="flex justify-center space-x-4"> | |
<button id="appStoreBtn" class="bg-black text-white px-6 py-2 rounded-lg flex items-center"> | |
<i class="fab fa-apple mr-2"></i> App Store | |
</button> | |
<button id="playStoreBtn" class="bg-black text-white px-6 py-2 rounded-lg flex items-center"> | |
<i class="fab fa-google-play mr-2"></i> Google Play | |
</button> | |
</div> | |
</div> | |
<div class="grid grid-cols-1 md:grid-cols-4 gap-8 mb-8"> | |
<div> | |
<h4 class="text-lg font-semibold mb-4">StreamFlow</h4> | |
<ul class="space-y-2"> | |
<li><a href="#apropos" class="text-gray-400 hover:text-white">À propos</a></li> | |
<li><a href="#carrieres" class="text-gray-400 hover:text-white">Carrières</a></li> | |
<li><a href="#presse" class="text-gray-400 hover:text-white">Presse</a></li> | |
<li><a href="#investisseurs" class="text-gray-400 hover:text-white">Investisseurs</a></li> | |
</ul> | |
</div> | |
<div> | |
<h4 class="text-lg font-semibold mb-4">Aide</h4> | |
<ul class="space-y-2"> | |
<li><a href="#aide" class="text-gray-400 hover:text-white">Centre d'aide</a></li> | |
<li><a href="#paiement" class="text-gray-400 hover:text-white">Options de paiement</a></li> | |
<li><a href="#faq" class="text-gray-400 hover:text-white">FAQ</a></li> | |
<li><a href="#contact" class="text-gray-400 hover:text-white">Nous contacter</a></li> | |
</ul> | |
</div> | |
<div> | |
<h4 class="text-lg font-semibold mb-4">Légal</h4> | |
<ul class="space-y-2"> | |
<li><a href="#conditions" class="text-gray-400 hover:text-white">Conditions d'utilisation</a></li> | |
<li><a href="#confidentialite" class="text-gray-400 hover:text-white">Confidentialité</a></li> | |
<li><a href="#cookies" class="text-gray-400 hover:text-white">Préférences de cookies</a></li> | |
<li><a href="#legal" class="text-gray-400 hover:text-white">Informations légales</a></li> | |
</ul> | |
</div> | |
<div> | |
<h4 class="text-lg font-semibold mb-4">Suivez-nous</h4> | |
<div class="flex space-x-4"> | |
<a href="https://facebook.com" class="text-gray-400 hover:text-white text-2xl" target="_blank"><i class="fab fa-facebook"></i></a> | |
<a href="https://twitter.com" class="text-gray-400 hover:text-white text-2xl" target="_blank"><i class="fab fa-twitter"></i></a> | |
<a href="https://instagram.com" class="text-gray-400 hover:text-white text-2xl" target="_blank"><i class="fab fa-instagram"></i></a> | |
<a href="https://youtube.com" class="text-gray-400 hover:text-white text-2xl" target="_blank"><i class="fab fa-youtube"></i></a> | |
</div> | |
</div> | |
</div> | |
<div class="border-t border-gray-700 pt-6"> | |
<p class="text-gray-400 text-sm">© 2023 StreamFlow. Tous droits réservés. 57,854 films disponibles.</p> | |
</div> | |
</div> | |
</footer> | |
<!-- Mini Player --> | |
<div id="miniPlayer" class="auto-player hidden"> | |
<div class="player-header"> | |
<div class="player-title" id="playerTitle">Lecture en cours</div> | |
<button class="player-close" id="closePlayerBtn"> | |
<i class="fas fa-times"></i> | |
</button> | |
</div> | |
<div class="player-video"> | |
<video id="autoPlayerVideo" width="100%" height="100%" controls autoplay> | |
<source src="https://samplelib.com/lib/preview/mp4/sample-5s.mp4" type="video/mp4"> | |
Votre navigateur ne supporte pas la lecture vidéo. | |
</video> | |
</div> | |
<div class="player-controls"> | |
<button class="player-btn" id="nextMovieBtn"> | |
<i class="fas fa-forward mr-1"></i> Suivant | |
</button> | |
<button class="player-btn" id="stopAutoplayBtn"> | |
<i class="fas fa-stop mr-1"></i> Arrêter | |
</button> | |
</div> | |
</div> | |
<!-- Modal --> | |
<div id="modal" class="fixed inset-0 bg-black bg-opacity-75 flex items-center justify-center z-50 hidden"> | |
<div class="bg-gray-800 rounded-lg w-full max-w-2xl mx-4"> | |
<div class="flex justify-between items-center border-b border-gray-700 p-4"> | |
<h3 class="text-xl font-bold" id="modalTitle">Modal Title</h3> | |
<button id="closeModalBtn" class="text-gray-400 hover:text-white"> | |
<i class="fas fa-times"></i> | |
</button> | |
</div> | |
<div class="p-6" id="modalContent"> | |
<!-- Content will be inserted here --> | |
</div> | |
<div class="border-t border-gray-700 p-4 flex justify-end"> | |
<button id="confirmModalBtn" class="bg-blue-600 hover:bg-blue-700 px-4 py-2 rounded-lg mr-2">Confirmer</button> | |
<button id="cancelModalBtn" class="bg-gray-700 hover:bg-gray-600 px-4 py-2 rounded-lg">Annuler</button> | |
</div> | |
</div> | |
</div> | |
<script> | |
// Base de données de films (simplifiée pour l'exemple) | |
const moviesDatabase = { | |
all: [], | |
action: [], | |
comedy: [], | |
drama: [] | |
}; | |
// Variables pour l'autoplay | |
let currentMovieIndex = 0; | |
let autoplayInterval; | |
let isAutoplayActive = false; | |
let currentMoviesList = []; | |
// Générer 57,854 films fictifs (en pratique, on en génère 100 pour l'exemple) | |
function generateMovies() { | |
const genres = ['Action', 'Comédie', 'Drame', 'Science-fiction', 'Horreur', 'Romance', 'Thriller', 'Animation']; | |
const years = Array.from({length: 30}, (_, i) => 2023 - i); | |
for (let i = 1; i <= 100; i++) { | |
const genre = genres[Math.floor(Math.random() * genres.length)]; | |
const year = years[Math.floor(Math.random() * years.length)]; | |
const rating = (Math.random() * 2 + 3).toFixed(1); | |
const movie = { | |
id: i, | |
title: `Film ${i} - ${genre}`, | |
genre: genre.toLowerCase(), | |
year: year, | |
rating: rating, | |
image: `https://via.placeholder.com/300x450?text=Film+${i}`, | |
url: `https://samplelib.com/lib/preview/mp4/sample-5s.mp4` | |
}; | |
moviesDatabase.all.push(movie); | |
if (genre === 'Action') moviesDatabase.action.push(movie); | |
if (genre === 'Comédie') moviesDatabase.comedy.push(movie); | |
if (genre === 'Drame') moviesDatabase.drama.push(movie); | |
} | |
} | |
// Charger les films dans le conteneur | |
function loadMovies(genre = 'all', limit = 20) { | |
const container = document.getElementById('movies-container'); | |
container.innerHTML = ''; | |
const movies = moviesDatabase[genre].slice(0, limit); | |
currentMoviesList = movies; // Stocker la liste actuelle pour l'autoplay | |
movies.forEach((movie, index) => { | |
const movieCard = document.createElement('div'); | |
movieCard.className = 'movie-card bg-gray-800 rounded-lg overflow-hidden transition duration-300 cursor-pointer'; | |
movieCard.innerHTML = ` | |
<div class="relative"> | |
<img src="${movie.image}" alt="${movie.title}" class="w-full h-auto"> | |
<div class="autoplay-badge"> | |
<i class="fas fa-play"></i> Auto | |
</div> | |
<div class="absolute bottom-0 left-0 right-0 bg-gradient-to-t from-black to-transparent p-4"> | |
<div class="flex items-center"> | |
<span class="bg-yellow-500 text-black text-xs font-bold px-2 py-1 rounded mr-2">${movie.rating}</span> | |
<span class="text-xs">${movie.year}</span> | |
</div> | |
</div> | |
</div> | |
<div class="p-3"> | |
<h3 class="font-semibold truncate">${movie.title}</h3> | |
<p class="text-gray-400 text-sm">${movie.genre} | VF</p> | |
</div> | |
`; | |
movieCard.onclick = () => startAutoplay(index); | |
container.appendChild(movieCard); | |
}); | |
} | |
// Démarrer l'autoplay à partir d'un index spécifique | |
function startAutoplay(startIndex = 0) { | |
if (currentMoviesList.length === 0) return; | |
isAutoplayActive = true; | |
currentMovieIndex = startIndex; | |
// Afficher le mini player | |
const miniPlayer = document.getElementById('miniPlayer'); | |
miniPlayer.classList.remove('hidden'); | |
// Jouer le premier film | |
playCurrentMovie(); | |
// Configurer l'intervalle pour passer au film suivant | |
autoplayInterval = setInterval(() => { | |
currentMovieIndex = (currentMovieIndex + 1) % currentMoviesList.length; | |
playCurrentMovie(); | |
}, 10000); // Change de film toutes les 10 secondes (pour la démo) | |
} | |
// Jouer le film actuel dans le mini player | |
function playCurrentMovie() { | |
if (currentMovieIndex >= currentMoviesList.length) { | |
currentMovieIndex = 0; | |
} | |
const movie = currentMoviesList[currentMovieIndex]; | |
const videoPlayer = document.getElementById('autoPlayerVideo'); | |
const playerTitle = document.getElementById('playerTitle'); | |
playerTitle.textContent = movie.title; | |
videoPlayer.src = movie.url; | |
videoPlayer.load(); | |
videoPlayer.play().catch(e => console.log("Erreur de lecture automatique:", e)); | |
} | |
// Arrêter l'autoplay | |
function stopAutoplay() { | |
isAutoplayActive = false; | |
clearInterval(autoplayInterval); | |
const videoPlayer = document.getElementById('autoPlayerVideo'); | |
videoPlayer.pause(); | |
const miniPlayer = document.getElementById('miniPlayer'); | |
miniPlayer.classList.add('hidden'); | |
} | |
// Passer au film suivant manuellement | |
function nextMovie() { | |
currentMovieIndex = (currentMovieIndex + 1) % currentMoviesList.length; | |
playCurrentMovie(); | |
} | |
// Charger plus de films | |
let currentLimit = 20; | |
function loadMoreMovies() { | |
currentLimit += 20; | |
loadMovies(currentFilter, currentLimit); | |
showModal('Chargement', `Vous avez chargé ${currentLimit} films sur 57,854 disponibles.`); | |
} | |
// Filtrer les films par genre | |
let currentFilter = 'all'; | |
function filterMovies(genre) { | |
// Reset active button styles | |
document.querySelectorAll('[id$="FilterBtn"]').forEach(btn => { | |
btn.classList.remove('bg-blue-600'); | |
btn.classList.add('bg-gray-700', 'hover:bg-gray-600'); | |
}); | |
// Set active button style | |
document.getElementById(`${genre}FilterBtn`).classList.remove('bg-gray-700', 'hover:bg-gray-600'); | |
document.getElementById(`${genre}FilterBtn`).classList.add('bg-blue-600'); | |
currentFilter = genre; | |
currentLimit = 20; | |
loadMovies(genre, currentLimit); | |
} | |
// Afficher une modal | |
function showModal(title, content) { | |
document.getElementById('modalTitle').textContent = title; | |
document.getElementById('modalContent').innerHTML = content; | |
document.getElementById('modal').classList.remove('hidden'); | |
} | |
// Fermer la modal | |
function closeModal() { | |
document.getElementById('modal').classList.add('hidden'); | |
} | |
// Initialisation | |
document.addEventListener('DOMContentLoaded', () => { | |
generateMovies(); | |
loadMovies(); | |
// Événements | |
document.getElementById('loadMoreBtn').addEventListener('click', loadMoreMovies); | |
document.getElementById('allFilterBtn').addEventListener('click', () => filterMovies('all')); | |
document.getElementById('actionFilterBtn').addEventListener('click', () => filterMovies('action')); | |
document.getElementById('comedyFilterBtn').addEventListener('click', () => filterMovies('comedy')); | |
document.getElementById('dramaFilterBtn').addEventListener('click', () => filterMovies('drama')); | |
document.getElementById('closeModalBtn').addEventListener('click', closeModal); | |
document.getElementById('cancelModalBtn').addEventListener('click', closeModal); | |
document.getElementById('confirmModalBtn').addEventListener('click', closeModal); | |
document.getElementById('startWatchingBtn').addEventListener('click', () => startAutoplay(0)); | |
document.getElementById('nextMovieBtn').addEventListener('click', nextMovie); | |
document.getElementById('stopAutoplayBtn').addEventListener('click', stopAutoplay); | |
document.getElementById('closePlayerBtn').addEventListener('click', stopAutoplay); | |
// Configurer le défilement automatique de la bande de pub | |
const adScroll = document.getElementById('ad-scroll'); | |
let scrollPosition = 0; | |
setInterval(() => { | |
scrollPosition += 1; | |
if (scrollPosition >= adScroll.scrollWidth / 2) { | |
scrollPosition = 0; | |
} | |
adScroll.scrollLeft = scrollPosition; | |
}, 50); | |
}); | |
</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-flow" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body> | |
</html> |