Actualiser api.php
This commit is contained in:
@@ -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 : 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É 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É 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 [
|
||||
|
||||
Reference in New Issue
Block a user