Actualiser api.php

This commit is contained in:
2026-06-24 08:29:41 +02:00
parent 487cc74b77
commit 0370b797db
+75 -67
View File
@@ -235,8 +235,8 @@ function fetchTMDBFull($title, $year, $apiKey, $pdo) {
'poster' => !empty($details['poster_path']) ? "https://image.tmdb.org/t/p/w500" . $details['poster_path'] : '',
'length' => !empty($details['runtime']) ? $details['runtime'] . ' min' : '',
'streaming' => $streaming,
'overview' => $overview, // 🔥 NOUVEAU
'cast' => $cast // 🔥 NOUVEAU
'overview' => $overview,
'cast' => $cast
];
setCache($pdo, $cacheKey, $result, 'tmdb');
@@ -293,9 +293,17 @@ switch ($action) {
break;
case 'get_films':
$crit = $pdo->query("SELECT *, 'critique' AS type FROM critiques ORDER BY id DESC")->fetchAll();
$video = $pdo->query("SELECT *, 'videotheque' AS type FROM videotheque ORDER BY id DESC")->fetchAll();
echo json_encode(array_merge($crit, $video));
// Fusion parfaite des deux tables avec des colonnes neutres (NULL) pour harmoniser le flux
$sql = "
SELECT id, title, year, director, poster, rating, review, NULL AS description, streaming, 'critique' AS type
FROM critiques
UNION ALL
SELECT id, title, year, director, poster, NULL AS rating, NULL AS review, description, NULL AS streaming, 'videotheque' AS type
FROM videotheque
ORDER BY id DESC
";
$result = $pdo->query($sql)->fetchAll();
echo json_encode($result);
break;
case 'search_ean_full':
@@ -306,7 +314,7 @@ switch ($action) {
'poster' => '', 'publisher' => '', 'format' => '',
'length' => '', 'number_of_discs' => 1, 'aspect_ratio' => '', 'actors' => ''
];
$upcData = fetchUPCitemdb($ean, $pdo);
$upcData = fetchUPCitemdb($ean, $pdo);
$tmdbQueryTitle = "";
if ($upcData) {
$tmdbQueryTitle = $upcData['title'];
@@ -316,11 +324,10 @@ switch ($action) {
$result['format'] = $upcData['format'];
}
// 🔥 NOUVEAU : DVDFr pour remplacer l'affiche ET le synopsis lors d'un ajout manuel
$dvdfrData = fetchDVDFr($ean, $pdo);
if (!empty($dvdfrData)) {
if (!empty($dvdfrData['poster'])) $result['poster'] = $dvdfrData['poster'];
if (!empty($dvdfrData['synopsis'])) $result['description'] = $dvdfrData['synopsis'];
// 🔥 NOUVEAU : DVDFr pour remplacer l'affiche lors d'un ajout manuel
$dvdfrCover = fetchDVDFr($ean, $pdo);
if (!empty($dvdfrCover)) {
$result['poster'] = $dvdfrCover;
}
$tmdbKey = getTmdbApiKey($pdo);
if ($tmdbKey && $tmdbQueryTitle) {
@@ -427,7 +434,7 @@ switch ($action) {
$actors = implode(', ', array_slice($actorsArray, 0, 4));
}
// 1. UPCitemDB
// 1. UPCitemDB
if (!empty($ean)) {
$upcData = fetchUPCitemdb($ean, $pdo);
if ($upcData) {
@@ -437,65 +444,66 @@ switch ($action) {
if (empty($format) || $format === 'Blu-ray') $format = $upcData['format'];
}
// 🔥 1.5 DVDFr (Récupère uniquement la vraie jaquette FR)
$dvdfrCover = fetchDVDFr($ean, $pdo);
if (!empty($dvdfrCover)) {
$poster = $dvdfrCover;
}
// 2. TMDB (Données Officielles & Synopsis)
if ($tmdbApiKey && !empty($title)) {
// Premier essai classique
$tmdbData = fetchTMDBFull($title, $year, $tmdbApiKey, $pdo);
// 🔥 NOUVEAU : Si TMDB ne trouve rien (cas des Coffrets ou titres multiples)
if (!$tmdbData || empty($tmdbData['overview'])) {
$cleanTitle = $title;
// A. Supprime les mots parasites
$cleanTitle = preg_ireplace(['coffret ', 'l\'intégrale ', 'intégrale ', 'trilogie ', 'quadrilogie ', 'collection '], '', $cleanTitle);
// B. Sépare les listes de films (ex: "Alien / Aliens" ou "Batman + Batman Le Défi")
$cleanTitle = preg_split('/(\/|\+)/', $cleanTitle)[0];
// C. Sépare les tirets longs (ex: "Le Parrain - L'intégrale")
$cleanTitle = explode(' - ', $cleanTitle)[0];
$cleanTitle = trim($cleanTitle);
// Si le titre a été nettoyé, on relance TMDB avec le titre du 1er film
if (!empty($cleanTitle) && $cleanTitle !== $title) {
// On omet volontairement l'année, car l'année du coffret n'est pas celle du 1er film
$tmdbFallback = fetchTMDBFull($cleanTitle, '', $tmdbApiKey, $pdo);
if ($tmdbFallback && !empty($tmdbFallback['overview'])) {
$tmdbData = $tmdbFallback;
}
}
// 🔥 1.5 DVDFr (Récupère uniquement la vraie jaquette FR)
$dvdfrCover = fetchDVDFr($ean, $pdo);
if (!empty($dvdfrCover)) {
$poster = $dvdfrCover;
}
if ($tmdbData) {
if (!empty($tmdbData['title'])) $title = $tmdbData['title'];
// 2. TMDB (Données Officielles & Synopsis)
if ($tmdbApiKey && !empty($title)) {
// Premier essai classique
$tmdbData = fetchTMDBFull($title, $year, $tmdbApiKey, $pdo);
if (empty($director)) {
$director = $tmdbData['director'] ?? '';
} elseif (!empty($tmdbData['director']) && strpos($director, ',') === false && strpos($tmdbData['director'], ',') !== false) {
$director = $tmdbData['director'];
// 🔥 NOUVEAU : Si TMDB ne trouve rien (cas des Coffrets ou titres multiples)
if (!$tmdbData || empty($tmdbData['overview'])) {
$cleanTitle = $title;
// A. Supprime les mots parasites
$cleanTitle = preg_ireplace(['coffret ', 'l\'intégrale ', 'intégrale ', 'trilogie ', 'quadrilogie ', 'collection '], '', $cleanTitle);
// B. Sépare les listes de films (ex: "Alien / Aliens" ou "Batman + Batman Le Défi")
$cleanTitle = preg_split('/(\/|\+)/', $cleanTitle)[0];
// C. Sépare les tirets longs (ex: "Le Parrain - L'intégrale")
$cleanTitle = explode(' - ', $cleanTitle)[0];
$cleanTitle = trim($cleanTitle);
// Si le titre a été nettoyé, on relance TMDB avec le titre du 1er film
if (!empty($cleanTitle) && $cleanTitle !== $title) {
// On omet volontairement l'année, car l'année du coffret n'est pas celle du 1er film
$tmdbFallback = fetchTMDBFull($cleanTitle, '', $tmdbApiKey, $pdo);
if ($tmdbFallback && !empty($tmdbFallback['overview'])) {
$tmdbData = $tmdbFallback;
}
}
}
if (empty($year) && !empty($tmdbData['year'])) $year = $tmdbData['year'];
if (empty($length) && !empty($tmdbData['length'])) $length = $tmdbData['length'];
// LIGNE DÉSACTIVÉE : TMDB ne touche jamais à l'affiche de la vidéothèque
// if (empty($poster) && !empty($tmdbData['poster'])) $poster = $tmdbData['poster'];
// 🔥 Récupération du Synopsis via TMDB (Même pour le 1er film d'un coffret)
if (!empty($tmdbData['overview'])) {
$description = $tmdbData['overview'];
}
// Récupération des Acteurs officiels (Top 4)
if (!empty($tmdbData['cast'])) {
$actors = implode(', ', $tmdbData['cast']);
if ($tmdbData) {
if (!empty($tmdbData['title'])) $title = $tmdbData['title'];
if (empty($director)) {
$director = $tmdbData['director'] ?? '';
} elseif (!empty($tmdbData['director']) && strpos($director, ',') === false && strpos($tmdbData['director'], ',') !== false) {
$director = $tmdbData['director'];
}
if (empty($year) && !empty($tmdbData['year'])) $year = $tmdbData['year'];
if (empty($length) && !empty($tmdbData['length'])) $length = $tmdbData['length'];
// LIGNE DÉSACTIVÉE : TMDB ne touche jamais à l'affiche de la vidéothèque
// if (empty($poster) && !empty($tmdbData['poster'])) $poster = $tmdbData['poster'];
// 🔥 Récupération du Synopsis via TMDB (Même pour le 1er film d'un coffret)
if (!empty($tmdbData['overview'])) {
$description = $tmdbData['overview'];
}
// Récupération des Acteurs officiels (Top 4)
if (!empty($tmdbData['cast'])) {
$actors = implode(', ', $tmdbData['cast']);
}
}
}
}