From 2c8de68d202fc418e341e0bd0a7a1bb17753dcfe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20FAMIBELLE-PRONZOLA?= Date: Tue, 8 Apr 2025 09:34:19 +0400 Subject: [PATCH] dynamics video page --- video.php | 358 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 185 insertions(+), 173 deletions(-) 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) { - <?php echo $video['title']; ?> - Kaubuntu.re + <?php echo !empty($video['title']) ? $video['title'] . ' - ' : ''; ?>Kaubuntu.re @@ -155,141 +181,127 @@ function formatDate($dateString) { + + +
+ +

Vidéo non trouvée

+

La vidéo que vous recherchez n'existe pas ou a été supprimée.

+ Retour à l'accueil +
+ + -
-
- +
+
+
+ +
-
-

+
+
+

+ +
+ + +
+ + + +
+
+
-
- - - -
-

Commentaires

- -
-
- Avatar -
-
- -
- - + + +
+ + # +
+
-
-
+
+

Vidéos suggérées

+ + + + +

Aucune vidéo suggérée disponible

+ +
+ + + +
+

Commentaires

+ +
- Avatar + Avatar
-
-
Marie Dupont
-
Il y a 2 jours
-
- Excellente vidéo ! J'ai beaucoup appris sur l'histoire de La Réunion. Merci pour ce contenu de qualité. -
-
- - - +
+ +
+ +
-
-
- Avatar -
-
-
Jean Martin
-
Il y a 5 jours
-
- Pourriez-vous faire une vidéo plus détaillée sur certains aspects abordés ici ? J'aimerais approfondir ce sujet. -
-
- - - -
-
+
+

Les commentaires sont en cours de développement.

+
- - -
-

Vidéos suggérées

- -
- -
-
- <?php echo $suggestedVideo['title']; ?> -
- -
-
-
-

- -
-
- -
-
+ - +