diff --git a/api.php b/api.php index 510a42f..7e5085b 100644 --- a/api.php +++ b/api.php @@ -155,19 +155,16 @@ function fetchCinemaPassion($title, $year = '', $ean = '', $pdo = null) { } // ÉTAPE 2 : Trouver le lien qui correspond EXACTEMENT au titre - // Pattern : Saw $filmUrl = null; $filmName = null; $filmId = null; - // Chercher tous les liens vers des films if (preg_match_all('/]*>([^<]+)<\/a>/i', $searchRes, $matches, PREG_SET_ORDER)) { foreach ($matches as $match) { $linkTitle = trim($match[3]); $linkName = $match[1]; $linkId = $match[2]; - // Vérifier si le titre du lien correspond au titre recherché if (strcasecmp($linkTitle, $cleanTitle) === 0 || stripos($linkTitle, $cleanTitle) !== false || stripos($cleanTitle, $linkTitle) !== false) { @@ -178,7 +175,6 @@ function fetchCinemaPassion($title, $year = '', $ean = '', $pdo = null) { } } - // Si pas de correspondance exacte, prendre le premier résultat if (!$filmUrl && !empty($matches)) { $filmName = $matches[0][1]; $filmId = $matches[0][2]; @@ -200,7 +196,6 @@ function fetchCinemaPassion($title, $year = '', $ean = '', $pdo = null) { } // ÉTAPE 4 : Chercher le lien vers la jaquette DVD ou Blu-ray - // Pattern : ou $jaquetteUrl = null; if (preg_match('/href=["\']?(?:\.\.\/)?(jaquette-(?:dvd|blu-ray)-[^"\'\s]+\.php)["\']?/i', $filmPageRes, $matches)) { @@ -213,27 +208,28 @@ function fetchCinemaPassion($title, $year = '', $ean = '', $pdo = null) { $jaquettePageRes = httpGet($jaquetteUrl, 10); if ($jaquettePageRes) { - // Pattern : src='http://www.cinemapassion.com/covers_temp/covers3/Saw-13005811062007.jpg' + // Pattern SPÉCIFIQUE : chercher UNIQUEMENT dans covers_temp/ (les vraies jaquettes) if (preg_match('/src=["\']?(https?:\/\/(?:www\.)?cinemapassion\.com\/covers_temp\/covers\d*\/[^"\'\s>]+\.jpg)["\']?/i', $jaquettePageRes, $imgMatches)) { - $posterUrl = str_replace('http://', 'https://', $imgMatches[1]); + $posterUrl = $imgMatches[1]; + $posterUrl = str_replace('http://', 'https://', $posterUrl); error_log("CinemaPassion OK (jaquette): '{$cleanTitle}' → {$posterUrl}"); return ['poster' => $posterUrl, 'title' => $cleanTitle, 'format' => 'Blu-ray']; } } } - // ÉTAPE 6 : Fallback - Chercher l'image covers_temp directement sur la page du film - if (preg_match('/src=["\']?(https?:\/\/(?:www\.)?cinemapassion\.com\/covers_temp\/covers\d*\/[^"\'\s>]+\.jpg)["\']?/i', $filmPageRes, $imgMatches)) { - $posterUrl = str_replace('http://', 'https://', $imgMatches[1]); - error_log("CinemaPassion OK (covers_temp direct): '{$cleanTitle}' → {$posterUrl}"); - return ['poster' => $posterUrl, 'title' => $cleanTitle, 'format' => 'Blu-ray']; - } - - // ÉTAPE 7 : Fallback - Utiliser l'affiche trouvée sur la page du film - if (preg_match('/src=["\']?(https?:\/\/(?:www\.)?cinemapassion\.com\/lesaffiches\/[^"\'\s>]+\.jpg)["\']?/i', $filmPageRes, $imgMatches)) { - $posterUrl = str_replace('http://', 'https://', $imgMatches[1]); - error_log("CinemaPassion OK (affiche fallback): '{$cleanTitle}' → {$posterUrl}"); - return ['poster' => $posterUrl, 'title' => $cleanTitle, 'format' => 'Blu-ray']; + // ÉTAPE 6 : Fallback - Chercher covers_temp directement sur la page du film + // Mais IGNORER les miniatures et les sections "Actuellement" + if (preg_match_all('/src=["\']?(https?:\/\/(?:www\.)?cinemapassion\.com\/covers_temp\/covers\d*\/[^"\'\s>]+\.jpg)["\']?/i', $filmPageRes, $allMatches)) { + // Prendre la PREMIÈRE vraie jaquette (pas les miniatures) + foreach ($allMatches[1] as $imgUrl) { + // Vérifier que ce n'est pas une miniature + if (strpos($imgUrl, 'miniature') === false && strpos($imgUrl, 'vign') === false) { + $posterUrl = str_replace('http://', 'https://', $imgUrl); + error_log("CinemaPassion OK (covers_temp direct): '{$cleanTitle}' → {$posterUrl}"); + return ['poster' => $posterUrl, 'title' => $cleanTitle, 'format' => 'Blu-ray']; + } + } } error_log("CinemaPassion KO: Image NON trouvée pour '{$cleanTitle}'");