docto41 commited on
Commit
73c7f84
·
verified ·
1 Parent(s): e35d6e6

Add 2 files

Browse files
Files changed (2) hide show
  1. index.html +253 -29
  2. prompts.txt +2 -1
index.html CHANGED
@@ -70,6 +70,21 @@
70
  width: 90%;
71
  max-width: 900px;
72
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
73
  </style>
74
  </head>
75
  <body>
@@ -129,11 +144,16 @@
129
  <section class="py-12 bg-gray-900 bg-opacity-50">
130
  <div class="container mx-auto px-6">
131
  <h2 class="text-2xl font-bold mb-6 flex items-center">
132
- <i class="fas fa-star text-yellow-400 mr-3"></i> Nouveautés
133
  </h2>
134
  <div class="autoplay-carousel flex overflow-x-auto space-x-6 py-4" id="newReleases">
135
  <!-- Les nouveautés seront ajoutées dynamiquement par JavaScript -->
136
  </div>
 
 
 
 
 
137
  </div>
138
  </section>
139
 
@@ -209,6 +229,19 @@
209
  </div>
210
  </div>
211
 
 
 
 
 
 
 
 
 
 
 
 
 
 
212
  <script>
213
  // Données des films (simulées)
214
  const movies = [
@@ -221,7 +254,8 @@
221
  duration: "2h35m",
222
  description: "Paul Atreides se rend sur la planète désertique Arrakis, connue sous le nom de Dune, où sa famille a pris le contrôle de la production d'une épice précieuse.",
223
  image: "https://m.media-amazon.com/images/M/MV5BN2FjNmEyNWMtYzM0ZS00NjIyLTg5YzYtYThlMGVjNzE1OGViXkEyXkFqcGdeQXVyMTkxNjUyNQ@@._V1_.jpg",
224
- featured: true
 
225
  },
226
  {
227
  id: 2,
@@ -232,7 +266,8 @@
232
  duration: "2h56m",
233
  description: "Batman enquête sur la corruption à Gotham City et affronte le Riddler, un tueur en série qui cible l'élite de Gotham.",
234
  image: "https://m.media-amazon.com/images/M/MV5BMDdmMTBiNTYtMDIzNi00NGVlLWIzMDYtZTk3MTQ3NGQxZGEwXkEyXkFqcGdeQXVyMzMwOTU5MDk@._V1_.jpg",
235
- featured: true
 
236
  },
237
  {
238
  id: 3,
@@ -243,7 +278,8 @@
243
  duration: "2h19m",
244
  description: "Une femme chinoise vieillissante est emportée dans une aventure folle où seule elle peut sauver le monde en explorant d'autres univers.",
245
  image: "https://m.media-amazon.com/images/M/MV5BYTdiOTIyZTQtNmQ1OS00NjZlLWIyMTgtYzk5Y2M3ZDVmOTkxXkEyXkFqcGdeQXVyMTAzMDg4NzU0._V1_.jpg",
246
- featured: true
 
247
  },
248
  {
249
  id: 4,
@@ -254,7 +290,8 @@
254
  duration: "2h11m",
255
  description: "Après plus de trente ans de service, Pete 'Maverick' Mitchell est de retour pour former une nouvelle génération de pilotes.",
256
  image: "https://m.media-amazon.com/images/M/MV5BZWYzOGEwNTgtNWU3NS00ZTQ0LWJkODUtM2FkNzE0ZGViMGY4XkEyXkFqcGdeQXVyMjkwOTAyMDU@._V1_.jpg",
257
- featured: true
 
258
  },
259
  {
260
  id: 5,
@@ -265,7 +302,8 @@
265
  duration: "2h10m",
266
  description: "Les habitants d'une ville isolée de l'intérieur de la Californie sont témoins d'une découverte étrange et terrifiante.",
267
  image: "https://m.media-amazon.com/images/M/MV5BZjA2NmY0OTEtZTY1OC00NmM1LWE0NzMtZDc1MWY0OTk0ZWEyXkEyXkFqcGdeQXVyMTA3MDk2NDg2._V1_.jpg",
268
- featured: false
 
269
  },
270
  {
271
  id: 6,
@@ -276,7 +314,8 @@
276
  duration: "2h17m",
277
  description: "Un prince viking part en quête de vengeance après l'assassinat de son père.",
278
  image: "https://m.media-amazon.com/images/M/MV5BMzVlMmY2NTctODgwOC00NDMzLWEzMWYtM2RiYmIyNTNhMTI0XkEyXkFqcGdeQXVyNTAzNzgwNTg@._V1_.jpg",
279
- featured: false
 
280
  },
281
  {
282
  id: 7,
@@ -287,7 +326,8 @@
287
  duration: "2h06m",
288
  description: "Le Docteur Strange voyage dans le multivers avec l'aide de America Chavez pour affronter une nouvelle menace mystique.",
289
  image: "https://m.media-amazon.com/images/M/MV5BNWM0ZGJlMzMtZmYwMi00NzI3LTgzMzMtNjMzNjliNDRmZmFlXkEyXkFqcGdeQXVyMTM1MTE1NDMx._V1_.jpg",
290
- featured: false
 
291
  },
292
  {
293
  id: 8,
@@ -298,12 +338,89 @@
298
  duration: "1h47m",
299
  description: "Nicolas Cage joue son propre rôle alors qu'il accepte un million de dollars pour assister à l'anniversaire d'un fan.",
300
  image: "https://m.media-amazon.com/images/M/MV5BNDMxODI5NDMtNTg0NC00ZjhlLTk3NjAtYzFmODllY2M4ZGRjXkEyXkFqcGdeQXVyMTA2MDU0NjM5._V1_.jpg",
301
- featured: false
 
302
  }
303
  ];
304
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
305
  // Initialisation du site
306
  document.addEventListener('DOMContentLoaded', function() {
 
 
 
307
  // Remplir le carrousel hero
308
  const heroCarousel = document.getElementById('heroCarousel');
309
  const featuredMovies = movies.filter(movie => movie.featured);
@@ -323,7 +440,7 @@
323
  </div>
324
  <p class="text-gray-300 mt-2 line-clamp-2">${movie.description}</p>
325
  <div class="flex space-x-4 mt-4">
326
- <button class="bg-red-600 hover:bg-red-700 text-white px-6 py-2 rounded-full font-medium" onclick="showMovieDetails(${movie.id})">
327
  <i class="fas fa-play mr-2"></i> Regarder
328
  </button>
329
  <button class="bg-gray-800 bg-opacity-60 hover:bg-opacity-100 text-white px-4 py-2 rounded-full" onclick="showMovieDetails(${movie.id})">
@@ -343,9 +460,9 @@
343
  trendingMovies.appendChild(movieCard);
344
  });
345
 
346
- // Remplir les nouveautés
347
  const newReleases = document.getElementById('newReleases');
348
- movies.slice().reverse().slice(0, 8).forEach(movie => {
349
  const movieCard = createMovieCard(movie);
350
  newReleases.appendChild(movieCard);
351
  });
@@ -357,9 +474,45 @@
357
  document.querySelectorAll('.genre-tag').forEach(button => {
358
  button.addEventListener('click', function() {
359
  const genre = this.getAttribute('data-genre');
360
- filterMoviesByGenre(genre);
361
  });
362
  });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
363
  });
364
 
365
  // Créer une carte de film
@@ -367,7 +520,7 @@
367
  const card = document.createElement('div');
368
  card.className = 'movie-card flex-shrink-0 w-40 sm:w-48 md:w-56 cursor-pointer';
369
  card.innerHTML = `
370
- <div class="relative rounded-lg overflow-hidden" onclick="showMovieDetails(${movie.id})">
371
  <img src="${movie.image}" alt="${movie.title}" class="w-full h-60 sm:h-72 object-cover">
372
  <div class="absolute inset-0 bg-gradient-to-t from-black via-transparent to-transparent opacity-0 hover:opacity-100 transition-opacity flex flex-col justify-end p-4">
373
  <h3 class="text-white font-bold">${movie.title}</h3>
@@ -380,33 +533,49 @@
380
  <i class="fas fa-star text-yellow-400 mr-1"></i>
381
  <span class="text-white">${movie.rating}/5</span>
382
  </div>
 
 
 
 
 
 
 
 
383
  </div>
384
  </div>
385
  `;
 
386
  return card;
387
  }
388
 
389
  // Filtrer les films par genre
390
- function filterMoviesByGenre(genre) {
391
  const moviesByGenre = document.getElementById('moviesByGenre');
392
- moviesByGenre.innerHTML = '';
393
-
394
- const filteredMovies = movies.filter(movie => movie.genre.includes(genre));
395
-
396
- if (filteredMovies.length === 0) {
397
- moviesByGenre.innerHTML = '<p class="col-span-full text-center text-gray-400">Aucun film trouvé dans cette catégorie.</p>';
398
- return;
399
- }
400
 
401
- filteredMovies.forEach(movie => {
402
- const movieCard = createMovieCard(movie);
403
- moviesByGenre.appendChild(movieCard);
404
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
405
  }
406
 
407
  // Afficher les détails du film dans un modal
408
  function showMovieDetails(movieId) {
409
- const movie = movies.find(m => m.id === movieId);
 
410
  if (!movie) return;
411
 
412
  const modal = document.getElementById('movieModal');
@@ -429,7 +598,7 @@
429
  </div>
430
  <p class="mt-6 text-gray-300">${movie.description}</p>
431
  <div class="mt-8 flex space-x-4">
432
- <button class="bg-red-600 hover:bg-red-700 text-white px-6 py-3 rounded-full font-medium">
433
  <i class="fas fa-play mr-2"></i> Regarder maintenant
434
  </button>
435
  <button class="border border-gray-600 hover:border-gray-400 text-white px-6 py-3 rounded-full">
@@ -444,6 +613,27 @@
444
  document.body.style.overflow = 'hidden';
445
  }
446
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
447
  // Fermer le modal
448
  function closeModal() {
449
  document.getElementById('movieModal').style.display = 'none';
@@ -484,12 +674,46 @@
484
  });
485
  }
486
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
487
  // Fermer le modal si on clique en dehors
488
  window.onclick = function(event) {
489
  const modal = document.getElementById('movieModal');
490
  if (event.target == modal) {
491
  closeModal();
492
  }
 
 
 
 
 
493
  }
494
  </script>
495
  <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/plateformecin-ma" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
 
70
  width: 90%;
71
  max-width: 900px;
72
  }
73
+
74
+ .loading-spinner {
75
+ border: 4px solid rgba(255, 255, 255, 0.3);
76
+ border-radius: 50%;
77
+ border-top: 4px solid #f43f5e;
78
+ width: 40px;
79
+ height: 40px;
80
+ animation: spin 1s linear infinite;
81
+ margin: 20px auto;
82
+ }
83
+
84
+ @keyframes spin {
85
+ 0% { transform: rotate(0deg); }
86
+ 100% { transform: rotate(360deg); }
87
+ }
88
  </style>
89
  </head>
90
  <body>
 
144
  <section class="py-12 bg-gray-900 bg-opacity-50">
145
  <div class="container mx-auto px-6">
146
  <h2 class="text-2xl font-bold mb-6 flex items-center">
147
+ <i class="fas fa-star text-yellow-400 mr-3"></i> Nouveautés (25,654 films)
148
  </h2>
149
  <div class="autoplay-carousel flex overflow-x-auto space-x-6 py-4" id="newReleases">
150
  <!-- Les nouveautés seront ajoutées dynamiquement par JavaScript -->
151
  </div>
152
+ <div class="flex justify-center mt-6">
153
+ <button id="loadMoreNew" class="bg-gray-800 hover:bg-gray-700 text-white px-6 py-2 rounded-full font-medium">
154
+ Charger plus de nouveautés
155
+ </button>
156
+ </div>
157
  </div>
158
  </section>
159
 
 
229
  </div>
230
  </div>
231
 
232
+ <!-- Fenêtre de lecture -->
233
+ <div id="playerWindow" class="fixed inset-0 z-50 bg-black hidden flex-col">
234
+ <div class="flex justify-between items-center p-4 bg-black bg-opacity-90">
235
+ <h3 id="playerTitle" class="text-xl font-bold"></h3>
236
+ <button onclick="closePlayer()" class="text-white text-2xl">&times;</button>
237
+ </div>
238
+ <div class="flex-grow flex items-center justify-center">
239
+ <video id="moviePlayer" controls class="w-full h-full max-w-6xl">
240
+ Votre navigateur ne supporte pas la lecture de vidéos.
241
+ </video>
242
+ </div>
243
+ </div>
244
+
245
  <script>
246
  // Données des films (simulées)
247
  const movies = [
 
254
  duration: "2h35m",
255
  description: "Paul Atreides se rend sur la planète désertique Arrakis, connue sous le nom de Dune, où sa famille a pris le contrôle de la production d'une épice précieuse.",
256
  image: "https://m.media-amazon.com/images/M/MV5BN2FjNmEyNWMtYzM0ZS00NjIyLTg5YzYtYThlMGVjNzE1OGViXkEyXkFqcGdeQXVyMTkxNjUyNQ@@._V1_.jpg",
257
+ featured: true,
258
+ videoUrl: "https://sample-videos.com/video123/mp4/720/big_buck_bunny_720p_1mb.mp4"
259
  },
260
  {
261
  id: 2,
 
266
  duration: "2h56m",
267
  description: "Batman enquête sur la corruption à Gotham City et affronte le Riddler, un tueur en série qui cible l'élite de Gotham.",
268
  image: "https://m.media-amazon.com/images/M/MV5BMDdmMTBiNTYtMDIzNi00NGVlLWIzMDYtZTk3MTQ3NGQxZGEwXkEyXkFqcGdeQXVyMzMwOTU5MDk@._V1_.jpg",
269
+ featured: true,
270
+ videoUrl: "https://sample-videos.com/video123/mp4/720/big_buck_bunny_720p_1mb.mp4"
271
  },
272
  {
273
  id: 3,
 
278
  duration: "2h19m",
279
  description: "Une femme chinoise vieillissante est emportée dans une aventure folle où seule elle peut sauver le monde en explorant d'autres univers.",
280
  image: "https://m.media-amazon.com/images/M/MV5BYTdiOTIyZTQtNmQ1OS00NjZlLWIyMTgtYzk5Y2M3ZDVmOTkxXkEyXkFqcGdeQXVyMTAzMDg4NzU0._V1_.jpg",
281
+ featured: true,
282
+ videoUrl: "https://sample-videos.com/video123/mp4/720/big_buck_bunny_720p_1mb.mp4"
283
  },
284
  {
285
  id: 4,
 
290
  duration: "2h11m",
291
  description: "Après plus de trente ans de service, Pete 'Maverick' Mitchell est de retour pour former une nouvelle génération de pilotes.",
292
  image: "https://m.media-amazon.com/images/M/MV5BZWYzOGEwNTgtNWU3NS00ZTQ0LWJkODUtM2FkNzE0ZGViMGY4XkEyXkFqcGdeQXVyMjkwOTAyMDU@._V1_.jpg",
293
+ featured: true,
294
+ videoUrl: "https://sample-videos.com/video123/mp4/720/big_buck_bunny_720p_1mb.mp4"
295
  },
296
  {
297
  id: 5,
 
302
  duration: "2h10m",
303
  description: "Les habitants d'une ville isolée de l'intérieur de la Californie sont témoins d'une découverte étrange et terrifiante.",
304
  image: "https://m.media-amazon.com/images/M/MV5BZjA2NmY0OTEtZTY1OC00NmM1LWE0NzMtZDc1MWY0OTk0ZWEyXkEyXkFqcGdeQXVyMTA3MDk2NDg2._V1_.jpg",
305
+ featured: false,
306
+ videoUrl: "https://sample-videos.com/video123/mp4/720/big_buck_bunny_720p_1mb.mp4"
307
  },
308
  {
309
  id: 6,
 
314
  duration: "2h17m",
315
  description: "Un prince viking part en quête de vengeance après l'assassinat de son père.",
316
  image: "https://m.media-amazon.com/images/M/MV5BMzVlMmY2NTctODgwOC00NDMzLWEzMWYtM2RiYmIyNTNhMTI0XkEyXkFqcGdeQXVyNTAzNzgwNTg@._V1_.jpg",
317
+ featured: false,
318
+ videoUrl: "https://sample-videos.com/video123/mp4/720/big_buck_bunny_720p_1mb.mp4"
319
  },
320
  {
321
  id: 7,
 
326
  duration: "2h06m",
327
  description: "Le Docteur Strange voyage dans le multivers avec l'aide de America Chavez pour affronter une nouvelle menace mystique.",
328
  image: "https://m.media-amazon.com/images/M/MV5BNWM0ZGJlMzMtZmYwMi00NzI3LTgzMzMtNjMzNjliNDRmZmFlXkEyXkFqcGdeQXVyMTM1MTE1NDMx._V1_.jpg",
329
+ featured: false,
330
+ videoUrl: "https://sample-videos.com/video123/mp4/720/big_buck_bunny_720p_1mb.mp4"
331
  },
332
  {
333
  id: 8,
 
338
  duration: "1h47m",
339
  description: "Nicolas Cage joue son propre rôle alors qu'il accepte un million de dollars pour assister à l'anniversaire d'un fan.",
340
  image: "https://m.media-amazon.com/images/M/MV5BNDMxODI5NDMtNTg0NC00ZjhlLTk3NjAtYzFmODllY2M4ZGRjXkEyXkFqcGdeQXVyMTA2MDU0NjM5._V1_.jpg",
341
+ featured: false,
342
+ videoUrl: "https://sample-videos.com/video123/mp4/720/big_buck_bunny_720p_1mb.mp4"
343
  }
344
  ];
345
 
346
+ // Générer 25,654 films supplémentaires
347
+ function generateMassiveMovieDatabase() {
348
+ const genres = ["action", "comedy", "drama", "horror", "sci-fi", "thriller", "romance", "fantasy", "animation", "documentary"];
349
+ const years = Array.from({length: 30}, (_, i) => 1993 + i);
350
+ const ratings = [3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, 4.0, 4.1, 4.2, 4.3, 4.4, 4.5];
351
+ const durations = ["1h30m", "1h45m", "2h00m", "2h15m", "2h30m"];
352
+
353
+ const baseTitles = [
354
+ "Le Secret de", "L'Énigme du", "La Malédiction des", "Les Aventures de", "La Revanche des",
355
+ "Le Retour de", "La Légende du", "Le Mystère de", "La Prophétie des", "Les Guerriers de",
356
+ "Le Trésor perdu de", "La Colère de", "L'Héritage des", "Le Pouvoir des", "La Quête du"
357
+ ];
358
+
359
+ const baseNames = [
360
+ "l'Ombre", "la Lumière", "la Nuit", "l'Éternité", "la Destinée", "le Passé", "l'Avenir",
361
+ "les Étoiles", "la Mer", "la Montagne", "la Forêt", "le Désert", "le Temps", "l'Espace",
362
+ "le Dragon", "le Phénix", "le Sorcier", "le Guerrier", "le Roi", "la Reine", "le Chevalier"
363
+ ];
364
+
365
+ const massiveMovies = [];
366
+ const totalMovies = 25654;
367
+
368
+ for (let i = 0; i < totalMovies; i++) {
369
+ // Générer un titre aléatoire
370
+ const titlePart1 = baseTitles[Math.floor(Math.random() * baseTitles.length)];
371
+ const titlePart2 = baseNames[Math.floor(Math.random() * baseNames.length)];
372
+ const title = `${titlePart1} ${titlePart2}`;
373
+
374
+ // Générer des données aléatoires
375
+ const year = years[Math.floor(Math.random() * years.length)];
376
+ const rating = ratings[Math.floor(Math.random() * ratings.length)];
377
+ const duration = durations[Math.floor(Math.random() * durations.length)];
378
+
379
+ // Sélectionner 1-3 genres aléatoires
380
+ const movieGenres = [];
381
+ const numGenres = Math.floor(Math.random() * 3) + 1;
382
+ for (let j = 0; j < numGenres; j++) {
383
+ const randomGenre = genres[Math.floor(Math.random() * genres.length)];
384
+ if (!movieGenres.includes(randomGenre)) {
385
+ movieGenres.push(randomGenre);
386
+ }
387
+ }
388
+
389
+ // Description générée aléatoirement
390
+ const descriptions = [
391
+ `Une histoire captivante sur ${titlePart2.toLowerCase()} qui changera à jamais votre vision du monde.`,
392
+ `Dans ce film épique, découvrez les secrets cachés de ${titlePart2.toLowerCase()} à travers une aventure inoubliable.`,
393
+ `Une quête périlleuse attend ceux qui osent affronter ${titlePart2.toLowerCase()} dans ce chef-d'œuvre cinématographique.`,
394
+ `Plongez dans un univers fantastique où ${titlePart2.toLowerCase()} détient le pouvoir de changer le destin.`
395
+ ];
396
+ const description = descriptions[Math.floor(Math.random() * descriptions.length)];
397
+
398
+ // Utiliser une image aléatoire parmi les 8 de base pour la démo
399
+ const imageIndex = Math.floor(Math.random() * 8);
400
+ const image = movies[imageIndex].image;
401
+
402
+ massiveMovies.push({
403
+ id: 9 + i, // Commencer après les 8 films initiaux
404
+ title,
405
+ year,
406
+ genre: movieGenres,
407
+ rating,
408
+ duration,
409
+ description,
410
+ image,
411
+ featured: false,
412
+ videoUrl: "https://sample-videos.com/video123/mp4/720/big_buck_bunny_720p_1mb.mp4"
413
+ });
414
+ }
415
+
416
+ return massiveMovies;
417
+ }
418
+
419
  // Initialisation du site
420
  document.addEventListener('DOMContentLoaded', function() {
421
+ // Générer la base de données massive
422
+ const allMovies = [...movies, ...generateMassiveMovieDatabase()];
423
+
424
  // Remplir le carrousel hero
425
  const heroCarousel = document.getElementById('heroCarousel');
426
  const featuredMovies = movies.filter(movie => movie.featured);
 
440
  </div>
441
  <p class="text-gray-300 mt-2 line-clamp-2">${movie.description}</p>
442
  <div class="flex space-x-4 mt-4">
443
+ <button class="bg-red-600 hover:bg-red-700 text-white px-6 py-2 rounded-full font-medium" onclick="playMovie(${movie.id})">
444
  <i class="fas fa-play mr-2"></i> Regarder
445
  </button>
446
  <button class="bg-gray-800 bg-opacity-60 hover:bg-opacity-100 text-white px-4 py-2 rounded-full" onclick="showMovieDetails(${movie.id})">
 
460
  trendingMovies.appendChild(movieCard);
461
  });
462
 
463
+ // Remplir les nouveautés (première page)
464
  const newReleases = document.getElementById('newReleases');
465
+ allMovies.slice(0, 20).forEach(movie => {
466
  const movieCard = createMovieCard(movie);
467
  newReleases.appendChild(movieCard);
468
  });
 
474
  document.querySelectorAll('.genre-tag').forEach(button => {
475
  button.addEventListener('click', function() {
476
  const genre = this.getAttribute('data-genre');
477
+ filterMoviesByGenre(genre, allMovies);
478
  });
479
  });
480
+
481
+ // Bouton "Charger plus" pour les nouveautés
482
+ let currentPage = 1;
483
+ const moviesPerPage = 20;
484
+
485
+ document.getElementById('loadMoreNew').addEventListener('click', function() {
486
+ this.disabled = true;
487
+ this.innerHTML = '<div class="loading-spinner"></div>';
488
+
489
+ // Simuler un chargement asynchrone
490
+ setTimeout(() => {
491
+ const startIndex = currentPage * moviesPerPage;
492
+ const endIndex = startIndex + moviesPerPage;
493
+ const nextMovies = allMovies.slice(startIndex, endIndex);
494
+
495
+ if (nextMovies.length > 0) {
496
+ const newReleases = document.getElementById('newReleases');
497
+ nextMovies.forEach(movie => {
498
+ const movieCard = createMovieCard(movie);
499
+ newReleases.appendChild(movieCard);
500
+ });
501
+
502
+ currentPage++;
503
+ this.disabled = false;
504
+ this.textContent = 'Charger plus de nouveautés';
505
+
506
+ // Faire défiler doucement vers le bas pour voir les nouveaux films
507
+ window.scrollBy({
508
+ top: 300,
509
+ behavior: 'smooth'
510
+ });
511
+ } else {
512
+ this.textContent = 'Tous les films chargés';
513
+ }
514
+ }, 1000);
515
+ });
516
  });
517
 
518
  // Créer une carte de film
 
520
  const card = document.createElement('div');
521
  card.className = 'movie-card flex-shrink-0 w-40 sm:w-48 md:w-56 cursor-pointer';
522
  card.innerHTML = `
523
+ <div class="relative rounded-lg overflow-hidden">
524
  <img src="${movie.image}" alt="${movie.title}" class="w-full h-60 sm:h-72 object-cover">
525
  <div class="absolute inset-0 bg-gradient-to-t from-black via-transparent to-transparent opacity-0 hover:opacity-100 transition-opacity flex flex-col justify-end p-4">
526
  <h3 class="text-white font-bold">${movie.title}</h3>
 
533
  <i class="fas fa-star text-yellow-400 mr-1"></i>
534
  <span class="text-white">${movie.rating}/5</span>
535
  </div>
536
+ <div class="flex space-x-2 mt-4">
537
+ <button class="bg-red-600 hover:bg-red-700 text-white px-3 py-1 rounded-full text-sm" onclick="playMovie(${movie.id}); event.stopPropagation();">
538
+ <i class="fas fa-play mr-1"></i>
539
+ </button>
540
+ <button class="bg-gray-800 hover:bg-gray-700 text-white px-3 py-1 rounded-full text-sm" onclick="showMovieDetails(${movie.id}); event.stopPropagation();">
541
+ <i class="fas fa-info-circle"></i>
542
+ </button>
543
+ </div>
544
  </div>
545
  </div>
546
  `;
547
+ card.addEventListener('click', () => showMovieDetails(movie.id));
548
  return card;
549
  }
550
 
551
  // Filtrer les films par genre
552
+ function filterMoviesByGenre(genre, allMovies) {
553
  const moviesByGenre = document.getElementById('moviesByGenre');
554
+ moviesByGenre.innerHTML = '<div class="col-span-full flex justify-center"><div class="loading-spinner"></div></div>';
 
 
 
 
 
 
 
555
 
556
+ // Simuler un chargement asynchrone
557
+ setTimeout(() => {
558
+ moviesByGenre.innerHTML = '';
559
+
560
+ const filteredMovies = allMovies.filter(movie => movie.genre.includes(genre));
561
+
562
+ if (filteredMovies.length === 0) {
563
+ moviesByGenre.innerHTML = '<p class="col-span-full text-center text-gray-400">Aucun film trouvé dans cette catégorie.</p>';
564
+ return;
565
+ }
566
+
567
+ // Afficher les 20 premiers films pour la démo
568
+ filteredMovies.slice(0, 20).forEach(movie => {
569
+ const movieCard = createMovieCard(movie);
570
+ moviesByGenre.appendChild(movieCard);
571
+ });
572
+ }, 500);
573
  }
574
 
575
  // Afficher les détails du film dans un modal
576
  function showMovieDetails(movieId) {
577
+ // Trouver le film dans la base de données massive
578
+ const movie = findMovieById(movieId);
579
  if (!movie) return;
580
 
581
  const modal = document.getElementById('movieModal');
 
598
  </div>
599
  <p class="mt-6 text-gray-300">${movie.description}</p>
600
  <div class="mt-8 flex space-x-4">
601
+ <button class="bg-red-600 hover:bg-red-700 text-white px-6 py-3 rounded-full font-medium" onclick="playMovie(${movie.id})">
602
  <i class="fas fa-play mr-2"></i> Regarder maintenant
603
  </button>
604
  <button class="border border-gray-600 hover:border-gray-400 text-white px-6 py-3 rounded-full">
 
613
  document.body.style.overflow = 'hidden';
614
  }
615
 
616
+ // Trouver un film par ID dans la base de données massive
617
+ function findMovieById(id) {
618
+ // Pour la démo, nous allons simplement retourner un des 8 films initiaux
619
+ // ou générer un film fictif si l'ID est supérieur à 8
620
+ if (id <= 8) {
621
+ return movies.find(m => m.id === id);
622
+ } else {
623
+ return {
624
+ id,
625
+ title: `Film Généré #${id}`,
626
+ year: 2000 + (id % 23),
627
+ genre: ["action", "sci-fi"],
628
+ rating: 4.0,
629
+ duration: "2h00m",
630
+ description: "Ceci est un film généré automatiquement pour la démonstration de la plateforme.",
631
+ image: movies[id % 8].image,
632
+ videoUrl: "https://sample-videos.com/video123/mp4/720/big_buck_bunny_720p_1mb.mp4"
633
+ };
634
+ }
635
+ }
636
+
637
  // Fermer le modal
638
  function closeModal() {
639
  document.getElementById('movieModal').style.display = 'none';
 
674
  });
675
  }
676
 
677
+ // Lire un film dans une nouvelle fenêtre/fenêtre modale
678
+ function playMovie(movieId) {
679
+ const movie = findMovieById(movieId);
680
+ if (!movie) return;
681
+
682
+ const playerWindow = document.getElementById('playerWindow');
683
+ const playerTitle = document.getElementById('playerTitle');
684
+ const moviePlayer = document.getElementById('moviePlayer');
685
+
686
+ playerTitle.textContent = `${movie.title} (${movie.year})`;
687
+ moviePlayer.src = movie.videoUrl;
688
+ moviePlayer.load();
689
+
690
+ playerWindow.classList.remove('hidden');
691
+ playerWindow.classList.add('flex');
692
+ document.body.style.overflow = 'hidden';
693
+ }
694
+
695
+ // Fermer le lecteur
696
+ function closePlayer() {
697
+ const playerWindow = document.getElementById('playerWindow');
698
+ const moviePlayer = document.getElementById('moviePlayer');
699
+
700
+ moviePlayer.pause();
701
+ playerWindow.classList.add('hidden');
702
+ playerWindow.classList.remove('flex');
703
+ document.body.style.overflow = 'auto';
704
+ }
705
+
706
  // Fermer le modal si on clique en dehors
707
  window.onclick = function(event) {
708
  const modal = document.getElementById('movieModal');
709
  if (event.target == modal) {
710
  closeModal();
711
  }
712
+
713
+ const playerWindow = document.getElementById('playerWindow');
714
+ if (event.target == playerWindow) {
715
+ closePlayer();
716
+ }
717
  }
718
  </script>
719
  <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/plateformecin-ma" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
prompts.txt CHANGED
@@ -7,4 +7,5 @@ je veux un hacker de code d'achat et de envao et codecanyon je veux avoir le
7
  je veux un hacker de code d'achat et de envao et codecanyon je veux avoir les code d'achat apartir de l'image du produit , et a partir du non du produit etc..
8
  je veux un crerateur de site a partir d image et de titre du site uniquement
9
  aucun bouton fonction
10
- https://plateformecinema.com/ : creer moi se site en pilotage automatique
 
 
7
  je veux un hacker de code d'achat et de envao et codecanyon je veux avoir les code d'achat apartir de l'image du produit , et a partir du non du produit etc..
8
  je veux un crerateur de site a partir d image et de titre du site uniquement
9
  aucun bouton fonction
10
+ https://plateformecinema.com/ : creer moi se site en pilotage automatique
11
+ ajouter 25654 film nouveauté en automatique et lecture des film dans une nouvel fenetre