From c6c0c25fd544e8ba9262c1079b950d9a091e42b0 Mon Sep 17 00:00:00 2001 From: Cedric Date: Tue, 30 Jun 2026 13:49:33 +0200 Subject: [PATCH] Actualiser api.php --- api.php | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/api.php b/api.php index 26fd310..8bdcbc4 100644 --- a/api.php +++ b/api.php @@ -340,6 +340,7 @@ function fetchTmdbPosterAndSynopsis($title, $year = '', $pdo = null) { // ── FONCTION POUR RÉCUPÉRER LES DONNÉES DEPUIS BLU-RAY.COM ── function fetchFromBlurayCom($ean) { + static $lastRequest = 0; $empty = [ 'title' => '', 'year' => '', 'director' => '', 'actors' => '', 'poster' => '', 'description' => '', 'length' => '', @@ -350,6 +351,13 @@ function fetchFromBlurayCom($ean) { $ean = preg_replace('/[^0-9]/', '', (string)$ean); if (strlen($ean) < 8) return $empty; + // ✅ THROTTLE : Attendre 3 secondes entre chaque requête pour éviter le blocage + $now = microtime(true); + if ($lastRequest > 0 && ($now - $lastRequest) < 3) { + usleep((int)(3 - ($now - $lastRequest)) * 1000000); + } + $lastRequest = microtime(true); + // ÉTAPE 1 : Recherche par EAN sur Blu-ray.com $searchUrl = "https://www.blu-ray.com/movies/search.php?ean=" . urlencode($ean) . "&action=search"; @@ -364,13 +372,15 @@ function fetchFromBlurayCom($ean) { CURLOPT_HTTPHEADER => [ 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 'Accept-Language: fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7', - 'Referer: https://www.blu-ray.com/' + 'Referer: https://www.blu-ray.com/', + 'Connection: keep-alive' ] ]); $searchHtml = curl_exec($ch); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); + // ✅ GESTION D'ERREUR : Si Blu-ray.com bloque (403, 429, 503), on retourne vide if (!$searchHtml || $httpCode !== 200) { error_log("Blu-ray.com: ❌ Échec recherche EAN $ean (HTTP $httpCode)"); return $empty; @@ -385,6 +395,9 @@ function fetchFromBlurayCom($ean) { $movieUrl = $matches[1]; $movieId = $matches[2]; + // ✅ THROTTLE avant la 2ème requête + usleep(1000000); // 1 seconde + // ÉTAPE 2 : Récupérer la page du film $ch2 = curl_init($movieUrl); curl_setopt_array($ch2, [ @@ -397,14 +410,16 @@ function fetchFromBlurayCom($ean) { CURLOPT_HTTPHEADER => [ 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 'Accept-Language: fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7', - 'Referer: https://www.blu-ray.com/' + 'Referer: https://www.blu-ray.com/', + 'Connection: keep-alive' ] ]); $movieHtml = curl_exec($ch2); + $httpCode2 = curl_getinfo($ch2, CURLINFO_HTTP_CODE); curl_close($ch2); - if (!$movieHtml) { - error_log("Blu-ray.com: ❌ Impossible de charger la page du film $movieUrl"); + if (!$movieHtml || $httpCode2 !== 200) { + error_log("Blu-ray.com: ❌ Impossible de charger la page du film $movieUrl (HTTP $httpCode2)"); return $empty; }