handle live from an account

This commit is contained in:
2025-04-10 10:33:19 +04:00
parent 1f1f17e0e7
commit 84a124c09b
4 changed files with 201 additions and 6 deletions
+37 -1
View File
@@ -88,6 +88,9 @@ if (!defined('ENABLE_USER_ACCOUNTS')) define('ENABLE_USER_ACCOUNTS', false);
if (!defined('CACHE_ENABLED')) define('CACHE_ENABLED', false);
if (!defined('CACHE_DURATION')) define('CACHE_DURATION', 3600); // En secondes (1 heure)
// Compte pour les lives
if (!defined('LIVE_ACCOUNT_NAME')) define('LIVE_ACCOUNT_NAME', 'admin');
// Tags pour filtrer les vidéos selon les catégories
if (!defined('TAG_SHORT')) define('TAG_SHORT', 'short');
@@ -275,6 +278,38 @@ function getIndependenceVideos($count = INDEPENDENCE_VIDEOS_COUNT) {
return getVideosByTag(TAG_INDEPENDENCE, $count);
}
/**
* Vérifie s'il y a un direct en cours du compte LIVE_ACCOUNT_NAME sur l'instance PeerTube
*
* @return array|null Informations sur le direct en cours ou null si aucun direct
*/
function getLiveStream() {
// Récupérer les lives du compte spécifié
$accountName = LIVE_ACCOUNT_NAME;
$data = callPeerTubeApi('accounts/' . $accountName . '/videos', [
'count' => 1,
'isLocal' => true,
'isLive' => true, // Filtrer uniquement les lives
'sort' => '-publishedAt' // Les plus récents en premier
]);
// Vérifier si on a des résultats
if (empty($data['data']) || count($data['data']) === 0) {
return null;
}
// Formater les données du live
$liveData = formatVideosData($data['data']);
// Filtrer pour ne garder que les lives en cours
$activeLives = array_filter($liveData, function($video) {
return isset($video['isLive']) && $video['isLive'] === true;
});
// Retourner le premier live trouvé
return !empty($activeLives) ? reset($activeLives) : null;
}
/**
* Formate les données brutes des vidéos venant de l'API
*
@@ -307,7 +342,8 @@ function formatVideosData($videosData) {
'date' => $video['publishedAt'],
'aspectRatio' => $video['aspectRatio'],
'description' => $video['description'] ?? '',
'tags' => $video['tags'] ?? []
'tags' => $video['tags'] ?? [],
'isLive' => isset($video['isLive']) ? $video['isLive'] : false
];
}