diff --git a/video.php b/video.php index 615dd5a..35b165a 100644 --- a/video.php +++ b/video.php @@ -1,67 +1,93 @@ [ - 'id' => 1, - 'title' => 'L\'indépendance de La Réunion : KA UBUNTU À BAKOU', - 'url' => 'https://peertube.example.com/embed/1', - 'description' => 'Une introduction complète au monde de la culture libre et des logiciels open source. Découvrez les principes fondamentaux, les licences, et comment contribuer à des projets open source.', - 'channel' => 'Tech Libre', - 'channelId' => 1, - 'views' => 15420, - 'likes' => 1245, - 'date' => '29 mars 2025', - 'tags' => ['#Bakou', '#LaRéunion', '#Indépendance'] - ], - 2 => [ - 'id' => 2, - 'title' => '#1 Départementalisation de La Réunion (1946) : l\'heure du bilan ?', - 'url' => 'https://peertube.example.com/embed/2', - 'description' => 'Partez à la découverte des sentiers cachés de La Réunion. Cette vidéo vous guide à travers des paysages magnifiques et peu connus de l\'île.', - 'channel' => 'Île Aventure', - 'channelId' => 2, - 'views' => 8745, - 'likes' => 732, - 'date' => '29 mars 2025', - 'tags' => ['#LaRéunion', '#Histoire', '#Politique'] - ], - // Autres vidéos... -]; +// Récupérer l'ID de la vidéo depuis l'URL +$videoId = isset($_GET['id']) ? $_GET['id'] : ''; -// Récupération de la vidéo -$video = isset($videos[$videoId]) ? $videos[$videoId] : $videos[1]; +// Vérifier si l'ID est valide +if (empty($videoId)) { + // Rediriger vers la page d'accueil si aucun ID n'est spécifié + header('Location: index.php'); + exit; +} -// Vidéos suggérées (normalement récupérées par un algorithme de recommandation) -function getSuggestedVideos($videos, $currentId) { - $suggested = []; - foreach ($videos as $id => $video) { - if ($id != $currentId) { - $suggested[] = $video; +// Récupérer les détails de la vidéo via l'API PeerTube +$videoData = callPeerTubeApi('videos/' . $videoId); + +// Vérifier si la vidéo existe +if (empty($videoData) || isset($videoData['error'])) { + // Gérer l'erreur : vidéo non trouvée + $videoNotFound = true; +} else { + // Formater les données de la vidéo + $video = [ + 'id' => $videoData['uuid'], + 'title' => $videoData['name'], + 'url' => PEERTUBE_URL . '/videos/embed/' . $videoData['uuid'], + 'description' => $videoData['description'] ?? '', + 'channel' => $videoData['channel']['displayName'], + 'channelId' => $videoData['channel']['id'], + 'channelHandle' => $videoData['channel']['name'], + 'views' => $videoData['views'], + 'likes' => $videoData['likes'], + 'date' => $videoData['publishedAt'], + 'tags' => $videoData['tags'] ?? [] + ]; + + // Récupérer l'image de la chaîne + $channelAvatar = 'img/default-avatar.jpg'; + if (isset($videoData['channel']['avatar']) && isset($videoData['channel']['avatar']['path'])) { + $channelAvatar = PEERTUBE_URL . $videoData['channel']['avatar']['path']; + } + + // Récupérer les vidéos suggérées (de la même chaîne) + $channelVideos = callPeerTubeApi('video-channels/' . $video['channelHandle'] . '/videos', [ + 'count' => 5, + 'isLocal' => true + ]); + + $suggestedVideos = []; + + if (!empty($channelVideos['data'])) { + foreach ($channelVideos['data'] as $suggVid) { + // Ne pas inclure la vidéo courante dans les suggestions + if ($suggVid['uuid'] !== $videoId) { + $suggestedVideos[] = [ + 'id' => $suggVid['uuid'], + 'title' => $suggVid['name'], + 'thumbnail' => PEERTUBE_URL . $suggVid['thumbnailPath'], + 'views' => $suggVid['views'], + 'date' => $suggVid['publishedAt'], + 'duration' => $suggVid['duration'], + 'channel' => $suggVid['channel']['displayName'] + ]; + } } } - return $suggested; -} - -$suggestedVideos = getSuggestedVideos($videos, $videoId); - -// Formatage des données -function formatViewCount($views) { - if ($views >= 1000000) { - return round($views / 1000000, 1) . 'M'; - } elseif ($views >= 1000) { - return round($views / 1000, 1) . 'K'; - } else { - return $views; + + // Si pas assez de vidéos de la même chaîne, ajouter des vidéos tendances + if (count($suggestedVideos) < 5) { + $trendingVideos = getTrendingVideos(10); + + foreach ($trendingVideos as $trendVid) { + if ($trendVid['id'] !== $videoId && count($suggestedVideos) < 5) { + // Vérifier que cette vidéo n'est pas déjà dans les suggestions + $found = false; + foreach ($suggestedVideos as $sv) { + if ($sv['id'] === $trendVid['id']) { + $found = true; + break; + } + } + + if (!$found) { + $suggestedVideos[] = $trendVid; + } + } + } } } - -function formatDate($dateString) { - $date = new DateTime($dateString); - return $date->format('d/m/Y'); -} ?> @@ -69,7 +95,7 @@ function formatDate($dateString) {
-
Commentaires
- -Vidéos suggérées
+ + +Aucune vidéo suggérée disponible
+ +Commentaires
+ +Les commentaires sont en cours de développement.
Vidéos suggérées
- -