From bd73d00d51420c49784e732cb9381ec5b4f89a96 Mon Sep 17 00:00:00 2001 From: Cedric Date: Fri, 26 Jun 2026 08:17:00 +0200 Subject: [PATCH] Actualiser api.php --- api.php | 74 ++++++++++++++++++++------------------------------------- 1 file changed, 26 insertions(+), 48 deletions(-) diff --git a/api.php b/api.php index f865042..b24c484 100644 --- a/api.php +++ b/api.php @@ -120,7 +120,7 @@ function extractYear($dateStr) { return ''; } -// ── Fanart.tv API (Jaquettes DVD/Blu-ray françaises uniquement) ── +// ── Fanart.tv API (Jaquettes exclusives) ── function fetchFanartTv($title, $year = '', $format = 'bluray', $pdo = null) { if (empty($title)) return null; @@ -138,7 +138,7 @@ function fetchFanartTv($title, $year = '', $format = 'bluray', $pdo = null) { } } - // Étape 1 : Chercher le film sur TMDB pour obtenir son ID + // 1. Récupération silencieuse de l'ID via TMDB $tmdbKey = getTmdbApiKey($pdo); if (!$tmdbKey) { error_log("Fanart.tv: Clé TMDB requise"); @@ -156,71 +156,49 @@ function fetchFanartTv($title, $year = '', $format = 'bluray', $pdo = null) { if (empty($searchData['results'])) { error_log("Fanart.tv: Film non trouvé sur TMDB pour '$title'"); - return null; + // Verrouillage : TMDB ne le trouve pas, on force l'image par défaut + return ['poster' => 'assets/img/default_physical_media.jpg', 'title' => $cleanTitle, 'format' => $format]; } $tmdbId = $searchData['results'][0]['id']; + $poster = null; // Initialisation stricte - // Étape 2 : Récupérer les artworks depuis fanart.tv + // 2. Interrogation exclusive de Fanart.tv avec l'ID obtenu $fanartUrl = "https://webservice.fanart.tv/v3/movies/{$tmdbId}?api_key={$apiKey}"; $fanartRes = httpGet($fanartUrl, 5); $fanartData = $fanartRes ? json_decode($fanartRes, true) : []; - if (isset($fanartData['error'])) { - error_log("Fanart.tv: Erreur API - " . $fanartData['error']); - return null; - } - - $poster = ''; - - // PRIORITÉ 1 : movieposter en français (jaquettes DVD/Blu-ray FR) - if (!empty($fanartData['movieposter'])) { + if (!isset($fanartData['error']) && !empty($fanartData['movieposter'])) { $posters = $fanartData['movieposter']; - // Filtrer uniquement les jaquettes françaises - $frenchPosters = array_filter($posters, function($p) { - return isset($p['lang']) && $p['lang'] === 'fr'; - }); - - // Trier par likes (le plus populaire en premier) + // PRIORITÉ 1 : Français + $frenchPosters = array_filter($posters, function($p) { return isset($p['lang']) && $p['lang'] === 'fr'; }); if (!empty($frenchPosters)) { - usort($frenchPosters, function($a, $b) { - return ($b['likes'] ?? 0) - ($a['likes'] ?? 0); - }); + usort($frenchPosters, function($a, $b) { return ($b['likes'] ?? 0) - ($a['likes'] ?? 0); }); $poster = $frenchPosters[0]['url']; - error_log("Fanart.tv: Jaquette FR trouvée - {$poster}"); } - } - - // PRIORITÉ 2 : Si pas de jaquette FR, prendre movieposter en anglais - if (empty($poster) && !empty($fanartData['movieposter'])) { - $posters = $fanartData['movieposter']; - $englishPosters = array_filter($posters, function($p) { - return isset($p['lang']) && $p['lang'] === 'en'; - }); - if (!empty($englishPosters)) { - usort($englishPosters, function($a, $b) { - return ($b['likes'] ?? 0) - ($a['likes'] ?? 0); - }); - $poster = $englishPosters[0]['url']; - error_log("Fanart.tv: Jaquette EN trouvée (fallback) - {$poster}"); + // PRIORITÉ 2 : Anglais (fallback) + if (empty($poster)) { + $englishPosters = array_filter($posters, function($p) { return isset($p['lang']) && $p['lang'] === 'en'; }); + if (!empty($englishPosters)) { + usort($englishPosters, function($a, $b) { return ($b['likes'] ?? 0) - ($a['likes'] ?? 0); }); + $poster = $englishPosters[0]['url']; + } + } + + // PRIORITÉ 3 : N'importe quelle langue + if (empty($poster)) { + usort($posters, function($a, $b) { return ($b['likes'] ?? 0) - ($a['likes'] ?? 0); }); + $poster = $posters[0]['url']; } } - // PRIORITÉ 3 : Fallback sur n'importe quelle langue - if (empty($poster) && !empty($fanartData['movieposter'])) { - $posters = $fanartData['movieposter']; - usort($posters, function($a, $b) { - return ($b['likes'] ?? 0) - ($a['likes'] ?? 0); - }); - $poster = $posters[0]['url']; - error_log("Fanart.tv: Jaquette trouvée (toute langue) - {$poster}"); - } - + // 3. Verrouillage final if (empty($poster)) { error_log("Fanart.tv: Aucune jaquette trouvée pour TMDB ID {$tmdbId}"); - return null; + // AUCUN retour vers TMDB, on force l'image locale + $poster = 'assets/img/default_physical_media.jpg'; } return [