Actualiser api.php
This commit is contained in:
@@ -100,9 +100,14 @@ function extractYear($dateStr) {
|
|||||||
function fetchDVDFr($ean, $pdo) {
|
function fetchDVDFr($ean, $pdo) {
|
||||||
if (empty($ean) || strlen($ean) < 8) return null;
|
if (empty($ean) || strlen($ean) < 8) return null;
|
||||||
|
|
||||||
|
$cacheKey = 'dvdfr_' . md5($ean);
|
||||||
|
$cached = getCache($pdo, $cacheKey);
|
||||||
|
if ($cached) return $cached;
|
||||||
|
|
||||||
|
// DVDFr exige un User-Agent propre
|
||||||
$ua = 'MonCinema/1.0 (collection privée; contact@moncineapp.fr)';
|
$ua = 'MonCinema/1.0 (collection privée; contact@moncineapp.fr)';
|
||||||
|
|
||||||
// Étape 1 : recherche par gencode
|
// Étape 1 : recherche par gencode → récupère l'id DVDFr
|
||||||
$searchUrl = "https://www.dvdfr.com/api/search.php?gencode=" . urlencode($ean);
|
$searchUrl = "https://www.dvdfr.com/api/search.php?gencode=" . urlencode($ean);
|
||||||
$ch = curl_init($searchUrl);
|
$ch = curl_init($searchUrl);
|
||||||
curl_setopt_array($ch, [
|
curl_setopt_array($ch, [
|
||||||
@@ -126,7 +131,7 @@ function fetchDVDFr($ean, $pdo) {
|
|||||||
$dvdId = (string)$xml->dvd[0]->id;
|
$dvdId = (string)$xml->dvd[0]->id;
|
||||||
if (empty($dvdId)) return null;
|
if (empty($dvdId)) return null;
|
||||||
|
|
||||||
// Étape 2 : fiche complète
|
// Étape 2 : fiche complète via dvd.php?id=
|
||||||
$ficheUrl = "https://www.dvdfr.com/api/dvd.php?id=" . urlencode($dvdId);
|
$ficheUrl = "https://www.dvdfr.com/api/dvd.php?id=" . urlencode($dvdId);
|
||||||
$ch2 = curl_init($ficheUrl);
|
$ch2 = curl_init($ficheUrl);
|
||||||
curl_setopt_array($ch2, [
|
curl_setopt_array($ch2, [
|
||||||
@@ -149,10 +154,22 @@ function fetchDVDFr($ean, $pdo) {
|
|||||||
|
|
||||||
$dvd = $fiche->dvd[0];
|
$dvd = $fiche->dvd[0];
|
||||||
|
|
||||||
|
// 🔥 Extraction de la jaquette (CORRECTION)
|
||||||
$poster = '';
|
$poster = '';
|
||||||
if (isset($dvd->cover)) $poster = (string)$dvd->cover;
|
// Méthode 1 : cover directe
|
||||||
if (empty($poster) && isset($dvd->covers->cover[0])) $poster = (string)$dvd->covers->cover[0];
|
if (isset($dvd->cover)) {
|
||||||
|
$poster = (string)$dvd->cover; // ✅ CORRECTION ICI
|
||||||
|
}
|
||||||
|
// Méthode 2 : covers->cover[0]
|
||||||
|
if (empty($poster) && isset($dvd->covers->cover[0])) {
|
||||||
|
$poster = (string)$dvd->covers->cover[0];
|
||||||
|
}
|
||||||
|
// Méthode 3 : image directe
|
||||||
|
if (empty($poster) && isset($dvd->image)) {
|
||||||
|
$poster = (string)$dvd->image;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Extraction des métadonnées techniques
|
||||||
$result = [
|
$result = [
|
||||||
'poster' => $poster,
|
'poster' => $poster,
|
||||||
'publisher' => isset($dvd->editeur) ? (string)$dvd->editeur : '',
|
'publisher' => isset($dvd->editeur) ? (string)$dvd->editeur : '',
|
||||||
@@ -162,6 +179,11 @@ function fetchDVDFr($ean, $pdo) {
|
|||||||
'discs' => isset($dvd->nbdisques) ? (string)$dvd->nbdisques : '',
|
'discs' => isset($dvd->nbdisques) ? (string)$dvd->nbdisques : '',
|
||||||
];
|
];
|
||||||
|
|
||||||
|
// Ne met en cache que si on a au moins une affiche ou un éditeur
|
||||||
|
if (!empty($result['poster']) || !empty($result['publisher'])) {
|
||||||
|
setCache($pdo, $cacheKey, $result, 'dvdfr');
|
||||||
|
}
|
||||||
|
|
||||||
return !empty($result['poster']) || !empty($result['publisher']) ? $result : null;
|
return !empty($result['poster']) || !empty($result['publisher']) ? $result : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user