Actualiser api.php

This commit is contained in:
2026-07-01 09:59:25 +02:00
parent 0efa3eea53
commit fbbdd8e770
+55 -46
View File
@@ -882,55 +882,64 @@ case 'import_batch':
publisher=IF(VALUES(publisher)!='', VALUES(publisher), publisher),
director=IF(VALUES(director)!='', VALUES(director), director)");
foreach ($items as $item) {
$ean = preg_replace('/[^0-9]/', '', (string)($item['ean'] ?? ''));
$csvTitle = trim($item['title'] ?? ''); // ✅ Titre du CSV
if (strlen($ean) < 8 && empty($csvTitle)) {
$skipped++;
continue;
foreach ($items as $item) {
$ean = preg_replace('/[^0-9]/', '', (string)($item['ean'] ?? ''));
$csvTitle = trim($item['title'] ?? '');
if (strlen($ean) < 8 && empty($csvTitle)) { $skipped++; continue; }
// 1. Récupération depuis Blu-ray.com (si EAN)
$blurayData = !empty($ean) ? fetchFromBlurayCom($ean) : [];
$title = !empty($blurayData['title']) ? $blurayData['title'] : $csvTitle;
$year = $blurayData['year'] ?? '';
$format = $blurayData['format'] ?: detectFormat($title);
$publisher = $blurayData['publisher'] ?? '';
$discs = $blurayData['number_of_discs'] ?: 1;
$aspect = $blurayData['aspect_ratio'] ?? '';
$length = $blurayData['length'] ?? '';
$poster = $blurayData['poster'] ?? '';
$desc = $blurayData['description'] ?? '';
$director = $blurayData['director'] ?? '';
$actors = $blurayData['actors'] ?? '';
// Si le titre est vide, on utilise celui du CSV
if (empty($title)) $title = $csvTitle;
if (empty($title)) { $skipped++; continue; }
// 2. COMPLÉMENT AVEC MOVIECOVERS.COM (NOUVEAU)
$movieCoversData = fetchFromMovieCovers($title, $year);
if (!empty($movieCoversData)) {
if (empty($poster) || $poster === 'assets/img/default_physical_media.jpg') {
$poster = $movieCoversData['poster'] ?? $poster;
}
// 1. Essayer Blu-ray.com (peut échouer sans bloquer)
$blurayData = !empty($ean) ? fetchFromBlurayCom($ean) : [];
// ✅ Si Blu-ray.com trouve le film, utiliser son titre. Sinon, utiliser celui du CSV.
$title = !empty($blurayData['title']) ? $blurayData['title'] : $csvTitle;
if (empty($title)) {
$skipped++;
continue;
if (empty($director)) $director = $movieCoversData['director'] ?? '';
if (empty($actors)) $actors = $movieCoversData['actors'] ?? '';
if (empty($desc)) $desc = $movieCoversData['description'] ?? '';
if (empty($length) && !empty($movieCoversData['length'])) $length = $movieCoversData['length'];
if (empty($year) && !empty($movieCoversData['year'])) $year = $movieCoversData['year'];
// Optionnel : si le titre de MovieCovers est plus propre, on peut le préférer
if (!empty($movieCoversData['title'])) {
$title = cleanTitle($movieCoversData['title']); // nettoyage supplémentaire
}
$year = $blurayData['year'] ?? '';
$format = $blurayData['format'] ?: detectFormat($title);
$publisher = $blurayData['publisher'] ?? '';
$discs = $blurayData['number_of_discs'] ?: 1;
$aspect = $blurayData['aspect_ratio'] ?? '';
$length = $blurayData['length'] ?? '';
$poster = $blurayData['poster'] ?? '';
$desc = $blurayData['description'] ?? '';
$director = $blurayData['director'] ?? '';
$actors = $blurayData['actors'] ?? '';
// 2. ✅ FALLBACK TMDB si Blu-ray.com n'a pas trouvé certaines données
if (empty($poster) || empty($director) || empty($actors) || empty($desc) || empty($year)) {
$tmdb = fetchTmdbPosterAndSynopsis($title, $year, $pdo);
if (empty($poster) || $poster === 'assets/img/default_physical_media.jpg') {
$poster = $tmdb['poster'];
}
if (empty($director)) $director = $tmdb['director'] ?? '';
if (empty($actors)) $actors = $tmdb['actors'] ?? '';
if (empty($desc)) $desc = $tmdb['description'] ?? '';
if (empty($length) && !empty($tmdb['length'])) $length = $tmdb['length'];
if (empty($year) && !empty($tmdb['year'])) $year = $tmdb['year'];
}
$id = makeStableId('videotheque', $title, $year);
$stmt->execute([$id, $title, $year, $format, $poster, $ean, $desc, $length, $discs, $aspect, $actors, $publisher, $director]);
$imported++;
}
// 3. Fallback TMDB pour ce qui manque encore
if (empty($poster) || empty($director) || empty($actors) || empty($desc) || empty($year)) {
$tmdb = fetchTmdbPosterAndSynopsis($title, $year, $pdo);
if (empty($poster) || $poster === 'assets/img/default_physical_media.jpg') {
$poster = $tmdb['poster'];
}
if (empty($director)) $director = $tmdb['director'] ?? '';
if (empty($actors)) $actors = $tmdb['actors'] ?? '';
if (empty($desc)) $desc = $tmdb['description'] ?? '';
if (empty($length) && !empty($tmdb['length'])) $length = $tmdb['length'];
if (empty($year) && !empty($tmdb['year'])) $year = $tmdb['year'];
}
// 4. Insertion en base
$id = makeStableId('videotheque', $title, $year);
$stmt->execute([$id, $title, $year, $format, $poster, $ean, $desc, $length, $discs, $aspect, $actors, $publisher, $director]);
$imported++;
}
} else {
// Import critiques (inchangé)
$stmtCritiques = $pdo->prepare("INSERT INTO critiques (id, title, year, director, poster, rating, review, streaming)