diff --git a/js/admin.js b/js/admin.js index 4f908ce..a2b7960 100644 --- a/js/admin.js +++ b/js/admin.js @@ -328,4 +328,67 @@ async function saveNewPassword() { loadDashboardData(); } } catch (err) { console.error('Erreur mise à jour mot de passe :', err); } +} + +// ── ENRICHISSEMENT TMDB AUTOMATIQUE ── +async function enrichirTMDB() { + const tmdbKey = localStorage.getItem('tmdb_key'); + if (!tmdbKey) { + alert("Veuillez d'abord sauvegarder votre clé TMDB juste au-dessus !"); + return; + } + + // On cherche les films qui n'ont pas d'affiche + const missingFilms = allItems.filter(f => !f.poster || f.poster.trim() === ''); + + if (missingFilms.length === 0) { + alert("Bonne nouvelle : tous vos films ont déjà une affiche !"); + return; + } + + if (!confirm(`${missingFilms.length} films n'ont pas d'affiche ou de réalisateur. Voulez-vous lancer la récupération TMDB ? (Cela peut prendre un peu de temps)`)) { + return; + } + + const btn = document.getElementById('btn-enrichir'); + if (btn) btn.innerHTML = ' Recherche en cours...'; + + let updatedCount = 0; + + for (let f of missingFilms) { + try { + // 1. Recherche du film par titre et année + const searchRes = await fetch(`https://api.themoviedb.org/3/search/movie?api_key=${tmdbKey}&query=${encodeURIComponent(f.title)}&year=${f.year}&language=fr-FR`); + const searchData = await searchRes.json(); + + if (searchData.results && searchData.results.length > 0) { + const movie = searchData.results[0]; + f.poster = movie.poster_path ? `https://image.tmdb.org/t/p/w500${movie.poster_path}` : f.poster; + + // 2. Recherche du réalisateur + const creditsRes = await fetch(`https://api.themoviedb.org/3/movie/${movie.id}/credits?api_key=${tmdbKey}`); + const creditsData = await creditsRes.json(); + + if (creditsData.crew) { + const director = creditsData.crew.find(c => c.job === 'Director'); + if (director) f.director = director.name; + } + + // 3. Sauvegarde automatique en base de données + await fetch(`${API_URL}?action=save_film`, { + method: 'POST', + headers: { 'Authorization': localStorage.getItem('token'), 'Content-Type': 'application/json' }, + body: JSON.stringify(f) + }); + updatedCount++; + } + } catch (e) { + console.error(`Erreur TMDB pour ${f.title}`, e); + } + } + + alert(`Terminé ! ${updatedCount} affiches et réalisateurs ont été récupérés avec succès.`); + if (btn) btn.innerHTML = ' Lancer la récupération'; + closeConfigModal(); + loadDashboardData(); } \ No newline at end of file