Actualiser api.php

This commit is contained in:
2026-07-01 14:26:46 +02:00
parent 4d01079cdb
commit 1934471d46
+46 -28
View File
@@ -890,42 +890,60 @@ case 'search_by_ean':
break; break;
case 'add_item_by_ean': case 'add_item_by_ean':
$data = json_decode(file_get_contents("php://input"), true); $data = json_decode(file_get_contents("php://input"), true);
$ean = $data['ean'] ?? ''; $ean = $data['ean'] ?? '';
// Clé API TMDB (Remplacez par la vôtre) // 1. Récupération des cs API depuis votre table 'config'
$apiKey = 'VOTRE_CLE_API_TMDB'; $stmt = $pdo->query("SELECT key_name, key_value FROM config");
$keys = $stmt->fetchAll(PDO::FETCH_KEY_PAIR);
$tmdbKey = $keys['tmdb_api_key'] ?? '';
// 1. Recherche TMDB via EAN if (!$tmdbKey) {
$url = "https://api.themoviedb.org/3/find/" . $ean . "?api_key=$apiKey&external_source=ean_isbn"; echo json_encode(["success" => false, "error" => "Clé API TMDB manquante en configuration."]);
$response = @file_get_contents($url); exit;
$result = json_decode($response, true); }
if (empty($result['movie_results'])) { // 2. Recherche du titre via UPCItemDB (Utilise le mode Trial)
echo json_encode(["success" => false, "error" => "EAN non trouvé sur TMDB"]); $upcUrl = "https://api.upcitemdb.com/prod/trial/lookup?upc=" . urlencode($ean);
exit; $upcResponse = @file_get_contents($upcUrl);
} $upcData = json_decode($upcResponse, true);
$movie = $result['movie_results'][0]; if (empty($upcData['items'])) {
$title = $movie['title']; echo json_encode(["success" => false, "error" => "EAN non trouvé sur UPCItemDB"]);
$year = substr($movie['release_date'], 0, 4); exit;
}
// 2. Tenter de récupérer la jaquette physique sur MovieCovers $rawTitle = $upcData['items'][0]['title'];
// (Utilise la fonction que vous avez déjà ajoutée dans api.php)
$poster = fetchAndDownloadMovieCovers($title, $ean);
// Si MovieCovers échoue, fallback sur TMDB // 3. Recherche sur TMDB pour obtenir le titre FR et les infos correctes
if (!$poster) { $tmdbSearchUrl = "https://api.themoviedb.org/3/search/movie?api_key=$tmdbKey&query=" . urlencode($rawTitle) . "&language=fr-FR";
$poster = "https://image.tmdb.org/t/p/w500" . $movie['poster_path']; $tmdbSearchResponse = @file_get_contents($tmdbSearchUrl);
} $tmdbSearchData = json_decode($tmdbSearchResponse, true);
// 3. Insertion if (empty($tmdbSearchData['results'])) {
$id = generateStableId('critique', $title, $year); echo json_encode(["success" => false, "error" => "Film introuvable sur TMDB"]);
$stmt = $pdo->prepare("INSERT INTO critiques (id, title, year, poster, streaming) VALUES (?, ?, ?, ?, ?)"); exit;
$stmt->execute([$id, $title, $year, $poster, 'Support physique']); }
echo json_encode(["success" => true]); $movie = $tmdbSearchData['results'][0]; // Meilleur résultat
break; $title = $movie['title']; // Titre en français grâce à language=fr-FR
$year = !empty($movie['release_date']) ? substr($movie['release_date'], 0, 4) : '';
// 4. Récupération de la jaquette physique (votre scraper)
$poster = fetchAndDownloadMovieCovers($title, $ean);
// Fallback affiche TMDB si MovieCovers échoue
if (!$poster && !empty($movie['poster_path'])) {
$poster = "https://image.tmdb.org/t/p/w500" . $movie['poster_path'];
}
// 5. Insertion en base
$id = generateStableId('critique', $title, $year);
$stmt = $pdo->prepare("INSERT INTO critiques (id, title, year, poster, streaming) VALUES (?, ?, ?, ?, ?)");
$stmt->execute([$id, $title, $year, $poster, 'Support physique']);
echo json_encode(["success" => true, "title" => $title]);
break;
case 'import_batch': case 'import_batch':
checkAuth($pdo); checkAuth($pdo);