Actualiser api.php
This commit is contained in:
@@ -146,93 +146,141 @@ function fetchCinemaPassion($title, $year = '', $ean = '', $pdo = null) {
|
|||||||
return ['poster' => $defaultPoster, 'title' => '', 'format' => 'Blu-ray'];
|
return ['poster' => $defaultPoster, 'title' => '', 'format' => 'Blu-ray'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
error_log("=== CinemaPassion: Début recherche pour '{$cleanTitle}' ===");
|
||||||
|
|
||||||
// ÉTAPE 1 : Recherche POST sur /moteur2.php
|
// ÉTAPE 1 : Recherche POST sur /moteur2.php
|
||||||
$searchRes = httpPost('https://www.cinemapassion.com/moteur2.php', ['recherche' => $cleanTitle]);
|
$searchRes = httpPost('https://www.cinemapassion.com/moteur2.php', ['recherche' => $cleanTitle]);
|
||||||
|
|
||||||
if (!$searchRes) {
|
if (!$searchRes) {
|
||||||
error_log("CinemaPassion: Recherche échouée pour '{$cleanTitle}'");
|
error_log("CinemaPassion: ❌ Recherche échouée pour '{$cleanTitle}'");
|
||||||
return ['poster' => $defaultPoster, 'title' => $cleanTitle, 'format' => 'Blu-ray'];
|
return ['poster' => $defaultPoster, 'title' => $cleanTitle, 'format' => 'Blu-ray'];
|
||||||
}
|
}
|
||||||
|
|
||||||
// ÉTAPE 2 : Trouver le lien qui correspond EXACTEMENT au titre
|
error_log("CinemaPassion: ✅ Recherche OK, " . strlen($searchRes) . " caractères reçus");
|
||||||
|
|
||||||
|
// ÉTAPE 2 : Trouver tous les liens vers des films (pattern simplifié)
|
||||||
$filmUrl = null;
|
$filmUrl = null;
|
||||||
$filmName = null;
|
$filmName = null;
|
||||||
$filmId = null;
|
$filmId = null;
|
||||||
|
|
||||||
if (preg_match_all('/<a\s+href=["\']?(?:\.\.\/)?film\/([^"\'\s]+)-(\d+)\.php["\']?[^>]*>([^<]+)<\/a>/i', $searchRes, $matches, PREG_SET_ORDER)) {
|
// Pattern simplifié : cherche film/XXX-NNN.php n'importe où dans le HTML
|
||||||
foreach ($matches as $match) {
|
if (preg_match_all('/film\/([^"\'\s<>]+)-(\d+)\.php/i', $searchRes, $allMatches, PREG_SET_ORDER)) {
|
||||||
$linkTitle = trim($match[3]);
|
error_log("CinemaPassion: " . count($allMatches) . " liens de films trouvés");
|
||||||
|
|
||||||
|
// Essayer de trouver le bon film par correspondance de nom
|
||||||
|
foreach ($allMatches as $match) {
|
||||||
$linkName = $match[1];
|
$linkName = $match[1];
|
||||||
$linkId = $match[2];
|
$linkId = $match[2];
|
||||||
|
|
||||||
if (strcasecmp($linkTitle, $cleanTitle) === 0 ||
|
// Comparer le nom du film (dans l'URL) avec le titre recherché
|
||||||
stripos($linkTitle, $cleanTitle) !== false ||
|
$linkNameClean = str_replace('-', ' ', $linkName);
|
||||||
stripos($cleanTitle, $linkTitle) !== false) {
|
if (strcasecmp($linkNameClean, $cleanTitle) === 0 ||
|
||||||
|
stripos($linkNameClean, $cleanTitle) !== false ||
|
||||||
|
stripos($cleanTitle, $linkNameClean) !== false) {
|
||||||
$filmUrl = "https://www.cinemapassion.com/film/{$linkName}-{$linkId}.php";
|
$filmUrl = "https://www.cinemapassion.com/film/{$linkName}-{$linkId}.php";
|
||||||
$filmName = $linkName;
|
$filmName = $linkName;
|
||||||
$filmId = $linkId;
|
$filmId = $linkId;
|
||||||
|
error_log("CinemaPassion: ✅ Film trouvé par nom: {$filmName}-{$filmId}");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$filmUrl && !empty($matches)) {
|
// Si pas trouvé, prendre le premier résultat
|
||||||
$filmName = $matches[0][1];
|
if (!$filmUrl && !empty($allMatches)) {
|
||||||
$filmId = $matches[0][2];
|
$filmName = $allMatches[0][1];
|
||||||
|
$filmId = $allMatches[0][2];
|
||||||
$filmUrl = "https://www.cinemapassion.com/film/{$filmName}-{$filmId}.php";
|
$filmUrl = "https://www.cinemapassion.com/film/{$filmName}-{$filmId}.php";
|
||||||
|
error_log("CinemaPassion: ⚠️ Premier film utilisé: {$filmName}-{$filmId}");
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
error_log("CinemaPassion: ❌ Aucun lien de film trouvé dans les résultats");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$filmUrl) {
|
if (!$filmUrl) {
|
||||||
error_log("CinemaPassion: Film non trouvé pour '{$cleanTitle}'");
|
error_log("CinemaPassion: ❌ Film non trouvé pour '{$cleanTitle}'");
|
||||||
return ['poster' => $defaultPoster, 'title' => $cleanTitle, 'format' => 'Blu-ray'];
|
return ['poster' => $defaultPoster, 'title' => $cleanTitle, 'format' => 'Blu-ray'];
|
||||||
}
|
}
|
||||||
|
|
||||||
// ÉTAPE 3 : Aller sur la page du film
|
// ÉTAPE 3 : Aller sur la page du film
|
||||||
|
error_log("CinemaPassion: Accès à la page film: {$filmUrl}");
|
||||||
$filmPageRes = httpGet($filmUrl, 10);
|
$filmPageRes = httpGet($filmUrl, 10);
|
||||||
|
|
||||||
if (!$filmPageRes) {
|
if (!$filmPageRes) {
|
||||||
error_log("CinemaPassion: Page film inaccessible : {$filmUrl}");
|
error_log("CinemaPassion: ❌ Page film inaccessible : {$filmUrl}");
|
||||||
return ['poster' => $defaultPoster, 'title' => $cleanTitle, 'format' => 'Blu-ray'];
|
return ['poster' => $defaultPoster, 'title' => $cleanTitle, 'format' => 'Blu-ray'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
error_log("CinemaPassion: ✅ Page film OK, " . strlen($filmPageRes) . " caractères reçus");
|
||||||
|
|
||||||
// ÉTAPE 4 : Chercher le lien vers la jaquette DVD ou Blu-ray
|
// ÉTAPE 4 : Chercher le lien vers la jaquette DVD ou Blu-ray
|
||||||
$jaquetteUrl = null;
|
$jaquetteUrl = null;
|
||||||
|
|
||||||
if (preg_match('/href=["\']?(?:\.\.\/)?(jaquette-(?:dvd|blu-ray)-[^"\'\s]+\.php)["\']?/i', $filmPageRes, $matches)) {
|
// Pattern simplifié pour trouver le chemin de la jaquette
|
||||||
$jaquettePath = $matches[1];
|
if (preg_match('/jaquette-(?:dvd|blu-ray)-[^"\'\s<>]+\.php/i', $filmPageRes, $matches)) {
|
||||||
$jaquetteUrl = "https://www.cinemapassion.com/" . str_replace('../', '', $jaquettePath);
|
$jaquettePath = $matches[0];
|
||||||
|
// Nettoyer le chemin (supprimer ../)
|
||||||
|
$jaquettePath = str_replace('../', '', $jaquettePath);
|
||||||
|
$jaquetteUrl = "https://www.cinemapassion.com/" . $jaquettePath;
|
||||||
|
error_log("CinemaPassion: ✅ Page jaquette trouvée: {$jaquetteUrl}");
|
||||||
|
} else {
|
||||||
|
error_log("CinemaPassion: ⚠️ Aucun lien de jaquette trouvé dans la page film");
|
||||||
}
|
}
|
||||||
|
|
||||||
// ÉTAPE 5 : Si page jaquette trouvée, aller dessus et extraire l'image covers_temp
|
// ÉTAPE 5 : Si page jaquette trouvée, aller dessus et extraire l'image covers_temp
|
||||||
if ($jaquetteUrl) {
|
if ($jaquetteUrl) {
|
||||||
|
error_log("CinemaPassion: Accès à la page jaquette: {$jaquetteUrl}");
|
||||||
$jaquettePageRes = httpGet($jaquetteUrl, 10);
|
$jaquettePageRes = httpGet($jaquetteUrl, 10);
|
||||||
|
|
||||||
if ($jaquettePageRes) {
|
if ($jaquettePageRes) {
|
||||||
// Pattern SPÉCIFIQUE : chercher UNIQUEMENT dans covers_temp/ (les vraies jaquettes)
|
error_log("CinemaPassion: ✅ Page jaquette OK, " . strlen($jaquettePageRes) . " caractères reçus");
|
||||||
if (preg_match('/src=["\']?(https?:\/\/(?:www\.)?cinemapassion\.com\/covers_temp\/covers\d*\/[^"\'\s>]+\.jpg)["\']?/i', $jaquettePageRes, $imgMatches)) {
|
|
||||||
$posterUrl = $imgMatches[1];
|
// Pattern simplifié pour chercher l'image dans covers_temp/
|
||||||
|
if (preg_match('/covers_temp\/covers\d*\/[^"\'\s<>]+\.jpg/i', $jaquettePageRes, $imgMatches)) {
|
||||||
|
$posterUrl = $imgMatches[0];
|
||||||
|
// S'assurer que l'URL est complète
|
||||||
|
if (strpos($posterUrl, 'http') !== 0) {
|
||||||
|
$posterUrl = 'https://www.cinemapassion.com/' . ltrim($posterUrl, '/');
|
||||||
|
}
|
||||||
$posterUrl = str_replace('http://', 'https://', $posterUrl);
|
$posterUrl = str_replace('http://', 'https://', $posterUrl);
|
||||||
error_log("CinemaPassion OK (jaquette): '{$cleanTitle}' → {$posterUrl}");
|
error_log("CinemaPassion: ✅✅✅ Image trouvée (jaquette): '{$cleanTitle}' → {$posterUrl}");
|
||||||
return ['poster' => $posterUrl, 'title' => $cleanTitle, 'format' => 'Blu-ray'];
|
return ['poster' => $posterUrl, 'title' => $cleanTitle, 'format' => 'Blu-ray'];
|
||||||
|
} else {
|
||||||
|
error_log("CinemaPassion: ❌ Image covers_temp non trouvée dans la page jaquette");
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
error_log("CinemaPassion: ❌ Page jaquette inaccessible: {$jaquetteUrl}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ÉTAPE 6 : Fallback - Chercher covers_temp directement sur la page du film
|
// ÉTAPE 6 : Fallback - Chercher covers_temp directement sur la page du film
|
||||||
// Mais IGNORER les miniatures et les sections "Actuellement"
|
error_log("CinemaPassion: Tentative fallback sur la page film...");
|
||||||
if (preg_match_all('/src=["\']?(https?:\/\/(?:www\.)?cinemapassion\.com\/covers_temp\/covers\d*\/[^"\'\s>]+\.jpg)["\']?/i', $filmPageRes, $allMatches)) {
|
if (preg_match_all('/covers_temp\/covers\d*\/[^"\'\s<>]+\.jpg/i', $filmPageRes, $allMatches)) {
|
||||||
// Prendre la PREMIÈRE vraie jaquette (pas les miniatures)
|
foreach ($allMatches[0] as $imgPath) {
|
||||||
foreach ($allMatches[1] as $imgUrl) {
|
if (strpos($imgPath, 'miniature') === false && strpos($imgPath, 'vign') === false) {
|
||||||
// Vérifier que ce n'est pas une miniature
|
$posterUrl = $imgPath;
|
||||||
if (strpos($imgUrl, 'miniature') === false && strpos($imgUrl, 'vign') === false) {
|
if (strpos($posterUrl, 'http') !== 0) {
|
||||||
$posterUrl = str_replace('http://', 'https://', $imgUrl);
|
$posterUrl = 'https://www.cinemapassion.com/' . ltrim($posterUrl, '/');
|
||||||
error_log("CinemaPassion OK (covers_temp direct): '{$cleanTitle}' → {$posterUrl}");
|
}
|
||||||
|
$posterUrl = str_replace('http://', 'https://', $posterUrl);
|
||||||
|
error_log("CinemaPassion: ✅✅ Image trouvée (covers_temp direct): '{$cleanTitle}' → {$posterUrl}");
|
||||||
return ['poster' => $posterUrl, 'title' => $cleanTitle, 'format' => 'Blu-ray'];
|
return ['poster' => $posterUrl, 'title' => $cleanTitle, 'format' => 'Blu-ray'];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
error_log("CinemaPassion KO: Image NON trouvée pour '{$cleanTitle}'");
|
// ÉTAPE 7 : Fallback ultime - Chercher lesaffiches/
|
||||||
|
error_log("CinemaPassion: Tentative fallback ultime (affiches)...");
|
||||||
|
if (preg_match('/lesaffiches\/[^"\'\s<>]+\.jpg/i', $filmPageRes, $imgMatches)) {
|
||||||
|
$posterUrl = $imgMatches[0];
|
||||||
|
if (strpos($posterUrl, 'http') !== 0) {
|
||||||
|
$posterUrl = 'https://www.cinemapassion.com/' . ltrim($posterUrl, '/');
|
||||||
|
}
|
||||||
|
$posterUrl = str_replace('http://', 'https://', $posterUrl);
|
||||||
|
error_log("CinemaPassion: ✅ Image trouvée (affiche fallback): '{$cleanTitle}' → {$posterUrl}");
|
||||||
|
return ['poster' => $posterUrl, 'title' => $cleanTitle, 'format' => 'Blu-ray'];
|
||||||
|
}
|
||||||
|
|
||||||
|
error_log("CinemaPassion: ❌❌❌ Image NON trouvée pour '{$cleanTitle}'");
|
||||||
return ['poster' => $defaultPoster, 'title' => $cleanTitle, 'format' => 'Blu-ray'];
|
return ['poster' => $defaultPoster, 'title' => $cleanTitle, 'format' => 'Blu-ray'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user