Actualiser api.php

This commit is contained in:
2026-06-26 14:13:09 +02:00
parent 311e11cce4
commit ac08a2e441
+15 -19
View File
@@ -155,19 +155,16 @@ function fetchCinemaPassion($title, $year = '', $ean = '', $pdo = null) {
} }
// ÉTAPE 2 : Trouver le lien qui correspond EXACTEMENT au titre // ÉTAPE 2 : Trouver le lien qui correspond EXACTEMENT au titre
// Pattern : <a href='../film/Saw-3814.php'>Saw</a>
$filmUrl = null; $filmUrl = null;
$filmName = null; $filmName = null;
$filmId = null; $filmId = null;
// Chercher tous les liens vers des films
if (preg_match_all('/<a\s+href=["\']?(?:\.\.\/)?film\/([^"\'\s]+)-(\d+)\.php["\']?[^>]*>([^<]+)<\/a>/i', $searchRes, $matches, PREG_SET_ORDER)) { if (preg_match_all('/<a\s+href=["\']?(?:\.\.\/)?film\/([^"\'\s]+)-(\d+)\.php["\']?[^>]*>([^<]+)<\/a>/i', $searchRes, $matches, PREG_SET_ORDER)) {
foreach ($matches as $match) { foreach ($matches as $match) {
$linkTitle = trim($match[3]); $linkTitle = trim($match[3]);
$linkName = $match[1]; $linkName = $match[1];
$linkId = $match[2]; $linkId = $match[2];
// Vérifier si le titre du lien correspond au titre recherché
if (strcasecmp($linkTitle, $cleanTitle) === 0 || if (strcasecmp($linkTitle, $cleanTitle) === 0 ||
stripos($linkTitle, $cleanTitle) !== false || stripos($linkTitle, $cleanTitle) !== false ||
stripos($cleanTitle, $linkTitle) !== 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)) { if (!$filmUrl && !empty($matches)) {
$filmName = $matches[0][1]; $filmName = $matches[0][1];
$filmId = $matches[0][2]; $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 // ÉTAPE 4 : Chercher le lien vers la jaquette DVD ou Blu-ray
// Pattern : <a href='../jaquette-dvd-Saw-3814.php'> ou <a href='../jaquette-blu-ray-Saw-3814.php'>
$jaquetteUrl = null; $jaquetteUrl = null;
if (preg_match('/href=["\']?(?:\.\.\/)?(jaquette-(?:dvd|blu-ray)-[^"\'\s]+\.php)["\']?/i', $filmPageRes, $matches)) { 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); $jaquettePageRes = httpGet($jaquetteUrl, 10);
if ($jaquettePageRes) { 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)) { 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}"); error_log("CinemaPassion OK (jaquette): '{$cleanTitle}' → {$posterUrl}");
return ['poster' => $posterUrl, 'title' => $cleanTitle, 'format' => 'Blu-ray']; return ['poster' => $posterUrl, 'title' => $cleanTitle, 'format' => 'Blu-ray'];
} }
} }
} }
// ÉTAPE 6 : Fallback - Chercher l'image covers_temp directement sur la page du film // ÉTAPE 6 : Fallback - Chercher 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)) { // Mais IGNORER les miniatures et les sections "Actuellement"
$posterUrl = str_replace('http://', 'https://', $imgMatches[1]); if (preg_match_all('/src=["\']?(https?:\/\/(?:www\.)?cinemapassion\.com\/covers_temp\/covers\d*\/[^"\'\s>]+\.jpg)["\']?/i', $filmPageRes, $allMatches)) {
error_log("CinemaPassion OK (covers_temp direct): '{$cleanTitle}' → {$posterUrl}"); // Prendre la PREMIÈRE vraie jaquette (pas les miniatures)
return ['poster' => $posterUrl, 'title' => $cleanTitle, 'format' => 'Blu-ray']; foreach ($allMatches[1] as $imgUrl) {
} // Vérifier que ce n'est pas une miniature
if (strpos($imgUrl, 'miniature') === false && strpos($imgUrl, 'vign') === false) {
// ÉTAPE 7 : Fallback - Utiliser l'affiche trouvée sur la page du film $posterUrl = str_replace('http://', 'https://', $imgUrl);
if (preg_match('/src=["\']?(https?:\/\/(?:www\.)?cinemapassion\.com\/lesaffiches\/[^"\'\s>]+\.jpg)["\']?/i', $filmPageRes, $imgMatches)) { error_log("CinemaPassion OK (covers_temp direct): '{$cleanTitle}' → {$posterUrl}");
$posterUrl = str_replace('http://', 'https://', $imgMatches[1]); return ['poster' => $posterUrl, 'title' => $cleanTitle, 'format' => 'Blu-ray'];
error_log("CinemaPassion OK (affiche fallback): '{$cleanTitle}' → {$posterUrl}"); }
return ['poster' => $posterUrl, 'title' => $cleanTitle, 'format' => 'Blu-ray']; }
} }
error_log("CinemaPassion KO: Image NON trouvée pour '{$cleanTitle}'"); error_log("CinemaPassion KO: Image NON trouvée pour '{$cleanTitle}'");