add dynamics categories
This commit is contained in:
+98
-3
@@ -7,7 +7,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
// URL de base de votre instance PeerTube
|
// 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)
|
// Paramètres d'API (si nécessaire)
|
||||||
define('API_KEY', ''); // Laissez vide si pas 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('SHORTS_COUNT', 6);
|
||||||
define('TRENDING_VIDEOS_COUNT', 6);
|
define('TRENDING_VIDEOS_COUNT', 6);
|
||||||
define('INDEPENDENCE_VIDEOS_COUNT', 6);
|
define('INDEPENDENCE_VIDEOS_COUNT', 6);
|
||||||
|
define('CATEGORY_VIDEOS_COUNT', 6);
|
||||||
define('LOAD_MORE_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
|
// Informations du site
|
||||||
define('SITE_NAME', 'Kaubuntu.re');
|
define('SITE_NAME', 'Kaubuntu.re');
|
||||||
define('SITE_DESCRIPTION', 'Votre plateforme de médias libres');
|
define('SITE_DESCRIPTION', 'Votre plateforme de médias libres');
|
||||||
@@ -53,6 +61,27 @@ define('TAG_SHORT', 'short');
|
|||||||
setlocale(LC_TIME, 'fr_FR.UTF-8');
|
setlocale(LC_TIME, 'fr_FR.UTF-8');
|
||||||
date_default_timezone_set('Indian/Reunion');
|
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
|
* Fonction utilitaire pour appeler l'API PeerTube
|
||||||
*
|
*
|
||||||
@@ -102,8 +131,8 @@ function callPeerTubeApi($endpoint, $params = []) {
|
|||||||
* @return array Liste des catégories
|
* @return array Liste des catégories
|
||||||
*/
|
*/
|
||||||
function getCategories() {
|
function getCategories() {
|
||||||
// Récupérer la liste des catégories depuis l'API
|
// Utiliser les catégories déjà récupérées
|
||||||
$categories = callPeerTubeApi('video-categories');
|
$categories = PEERTUBE_CATEGORIES;
|
||||||
|
|
||||||
$result = [];
|
$result = [];
|
||||||
foreach ($categories as $key => $name) {
|
foreach ($categories as $key => $name) {
|
||||||
@@ -290,4 +319,70 @@ function formatDate($dateString) {
|
|||||||
return 'Il y a ' . $years . ' an' . ($years > 1 ? 's' : '');
|
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;
|
||||||
|
}
|
||||||
?>
|
?>
|
||||||
@@ -311,6 +311,53 @@
|
|||||||
<button class="view-more">Voir plus</button>
|
<button class="view-more">Voir plus</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- Sections par catégorie -->
|
||||||
|
<?php
|
||||||
|
// Récupérer les catégories avec leurs vidéos
|
||||||
|
$displayCategories = getDisplayCategories();
|
||||||
|
|
||||||
|
// Afficher chaque catégorie qui a des vidéos
|
||||||
|
foreach ($displayCategories as $category):
|
||||||
|
if (!empty($category['videos'])):
|
||||||
|
?>
|
||||||
|
<!-- Section Catégorie: <?php echo $category['name']; ?> -->
|
||||||
|
<div class="video-section">
|
||||||
|
<div class="section-header">
|
||||||
|
<div class="section-logo">
|
||||||
|
<img src="img/logo.png" alt="Kaubuntu.re">
|
||||||
|
</div>
|
||||||
|
<h2 class="section-title"><?php echo $category['name']; ?></h2>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="video-grid">
|
||||||
|
<?php foreach ($category['videos'] as $video): ?>
|
||||||
|
<div class="video-card" data-video-id="<?php echo $video['id']; ?>">
|
||||||
|
<div class="video-thumbnail">
|
||||||
|
<img src="<?php echo $video['thumbnail']; ?>" alt="<?php echo $video['title']; ?>">
|
||||||
|
<div class="video-play-icon">
|
||||||
|
<i class="fas fa-play-circle"></i>
|
||||||
|
</div>
|
||||||
|
<div class="video-duration"><?php echo formatDuration($video['duration']); ?></div>
|
||||||
|
</div>
|
||||||
|
<div class="video-info">
|
||||||
|
<h3 class="video-title"><?php echo $video['title']; ?></h3>
|
||||||
|
<div class="video-channel"><?php echo $video['channel']; ?></div>
|
||||||
|
<div class="video-metadata">
|
||||||
|
<span class="video-views"><i class="fas fa-eye"></i> <?php echo formatViewCount($video['views']); ?> vues</span>
|
||||||
|
<span class="video-date"><i class="far fa-calendar-alt"></i> <?php echo formatDate($video['date']); ?></span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<button class="view-more">Voir plus</button>
|
||||||
|
</div>
|
||||||
|
<?php
|
||||||
|
endif;
|
||||||
|
endforeach;
|
||||||
|
?>
|
||||||
|
|
||||||
<!-- Section Tendances Hashtags -->
|
<!-- Section Tendances Hashtags -->
|
||||||
<div class="video-section">
|
<div class="video-section">
|
||||||
<h2 class="section-title">Tendances</h2>
|
<h2 class="section-title">Tendances</h2>
|
||||||
|
|||||||
Reference in New Issue
Block a user