add dynamics categories

This commit is contained in:
2025-04-08 15:36:33 +04:00
parent 5d4f34a10f
commit 42d65c55d2
2 changed files with 145 additions and 3 deletions
+98 -3
View File
@@ -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;
}
?>