diff --git a/includes/config.php b/includes/config.php index a2a688a..a66d878 100644 --- a/includes/config.php +++ b/includes/config.php @@ -7,7 +7,7 @@ */ // URL de base de votre instance PeerTube -define('PEERTUBE_URL', 'https://video.off-investigation.fr'); +define('PEERTUBE_URL', 'https://gade.o-k-i.net'); // Paramètres d'API (si nécessaire) define('API_KEY', ''); // Laissez vide si pas nécessaire @@ -19,8 +19,16 @@ define('RECENT_VIDEOS_COUNT', 6); define('SHORTS_COUNT', 6); define('TRENDING_VIDEOS_COUNT', 6); define('INDEPENDENCE_VIDEOS_COUNT', 6); +define('CATEGORY_VIDEOS_COUNT', 6); define('LOAD_MORE_COUNT', 6); +// Catégories prioritaires (dans l'ordre d'affichage souhaité) +define('PRIORITY_CATEGORIES', [ + 11, // News & Politique + 14, // Activism + 15, // Science & Technologie +]); + // Informations du site define('SITE_NAME', 'Kaubuntu.re'); define('SITE_DESCRIPTION', 'Votre plateforme de médias libres'); @@ -53,6 +61,27 @@ define('TAG_SHORT', 'short'); setlocale(LC_TIME, 'fr_FR.UTF-8'); date_default_timezone_set('Indian/Reunion'); +// Initialisation des catégories de vidéo depuis l'API +$peertube_categories = initCategories(); +define('PEERTUBE_CATEGORIES', $peertube_categories); + +/** + * Initialise et récupère les catégories depuis l'API PeerTube + * + * @return array Liste des catégories + */ +function initCategories() { + // Récupérer la liste des catégories depuis l'API + $categories = callPeerTubeApi('videos/categories'); + + $result = []; + foreach ($categories as $key => $name) { + $result[$key] = $name; + } + + return $result; +} + /** * Fonction utilitaire pour appeler l'API PeerTube * @@ -102,8 +131,8 @@ function callPeerTubeApi($endpoint, $params = []) { * @return array Liste des catégories */ function getCategories() { - // Récupérer la liste des catégories depuis l'API - $categories = callPeerTubeApi('video-categories'); + // Utiliser les catégories déjà récupérées + $categories = PEERTUBE_CATEGORIES; $result = []; foreach ($categories as $key => $name) { @@ -290,4 +319,70 @@ function formatDate($dateString) { return 'Il y a ' . $years . ' an' . ($years > 1 ? 's' : ''); } } + +/** + * Récupère les vidéos d'une catégorie spécifique depuis l'API PeerTube + * + * @param int $categoryId Identifiant de la catégorie + * @param int $count Nombre de vidéos à récupérer + * @return array Liste des vidéos de la catégorie + */ +function getVideosByCategory($categoryId, $count = CATEGORY_VIDEOS_COUNT) { + // Récupérer les vidéos par catégorie + $data = callPeerTubeApi('videos', [ + 'categoryOneOf' => $categoryId, + 'count' => $count, + 'sort' => '-publishedAt', // Les plus récentes d'abord + 'isLocal' => true + ]); + + return formatVideosData($data['data'] ?? []); +} + +/** + * Récupère la liste des catégories à afficher (triées selon les priorités) + * + * @return array Liste des catégories avec id, name et videos + */ +function getDisplayCategories() { + $categories = []; + $priorityCategories = PRIORITY_CATEGORIES; + $allCategories = PEERTUBE_CATEGORIES; + + var_dump($priorityCategories); + + // D'abord ajouter les catégories prioritaires dans l'ordre défini + foreach ($priorityCategories as $catId) { + if (isset($allCategories[$catId])) { + $videos = getVideosByCategory($catId); + + // N'ajouter que les catégories qui ont des vidéos + if (!empty($videos)) { + $categories[] = [ + 'id' => $catId, + 'name' => $allCategories[$catId], + 'videos' => $videos + ]; + } + } + } + + // Ensuite, ajouter les autres catégories qui ont des vidéos + foreach ($allCategories as $catId => $catName) { + if (!in_array($catId, $priorityCategories)) { + $videos = getVideosByCategory($catId); + + // N'ajouter que les catégories qui ont des vidéos + if (!empty($videos)) { + $categories[] = [ + 'id' => $catId, + 'name' => $catName, + 'videos' => $videos + ]; + } + } + } + + return $categories; +} ?> \ No newline at end of file diff --git a/index.php b/index.php index 7e90cfe..f7588e0 100644 --- a/index.php +++ b/index.php @@ -311,6 +311,53 @@ + + + +
+