forked from ORGANISATION-KA-INTERNATIONALE/FEDIVERSE-OKI
feat: add last podcast from castopod
This commit is contained in:
+100
@@ -24,6 +24,7 @@
|
||||
- 📡 Détection automatique d'état de connexion
|
||||
- 📊 Analytics intégré avec Plausible (respectueux de la vie privée)
|
||||
- 📰 *Intégration WordPress* : Affichage des articles depuis un site WordPress via REST API
|
||||
- 🎙️ *Intégration Castopod* : Affichage des derniers épisodes de podcast via flux RSS
|
||||
- 💝 *Système de dons* : Support multi-plateformes (LiberaPay, Ko-fi, Stripe) avec dons ponctuels et récurrents
|
||||
- ⏰ *Système de countdown* : Page de lancement configurable avec compte à rebours multi-fuseaux
|
||||
- 📺 *Annonce du prochain live* : Affichage dynamique avec multi-fuseaux horaires et image personnalisable
|
||||
@@ -88,6 +89,7 @@
|
||||
* `json` - Pour le traitement des données JSON
|
||||
* `intl` - Pour la gestion des dates internationales et traductions
|
||||
* `mbstring` - Pour la manipulation des chaînes multi-octets
|
||||
* `xml` (SimpleXML) - Recommandée pour Castopod (fallback regex disponible)
|
||||
- 🌐 *Serveur web* : Apache ou Nginx
|
||||
- 🔒 *HTTPS* : Requis pour les fonctionnalités PWA
|
||||
|
||||
@@ -480,6 +482,104 @@ Le système intègre plusieurs protections :
|
||||
- ✅ *Ouverture sécurisée* : Liens avec `noopener noreferrer`
|
||||
- ✅ *Tokens CSRF* : Protection contre les attaques CSRF
|
||||
|
||||
== 🎙️ Intégration Castopod (Podcasts)
|
||||
|
||||
FEDIVERSE OKI peut afficher les derniers épisodes d'un podcast Castopod directement sur la page d'accueil, à côté de la timeline Mastodon et des articles WordPress.
|
||||
|
||||
=== ✨ Fonctionnalités
|
||||
|
||||
- 🎧 *Affichage des derniers épisodes* : Liste configurable des épisodes récents
|
||||
- 🖼️ *Miniatures des épisodes* : Affichage des images de couverture
|
||||
- ⏱️ *Durée et date* : Informations complètes sur chaque épisode
|
||||
- 🎨 *Design cohérent* : Interface harmonisée avec le reste du site
|
||||
- 📱 *Responsive* : Affichage adapté mobile et desktop
|
||||
- 🌙 *Mode sombre* : Support complet du thème sombre
|
||||
- 🔄 *Fallback intelligent* : Fonctionne avec ou sans l'extension PHP SimpleXML
|
||||
|
||||
=== ⚙️ Configuration
|
||||
|
||||
Pour activer l'intégration Castopod, ajoutez dans votre `config.local.php` :
|
||||
|
||||
[source,php]
|
||||
----
|
||||
// Activer l'affichage des podcasts Castopod
|
||||
define('CASTOPOD_ENABLED', true);
|
||||
|
||||
// URL de l'instance Castopod
|
||||
define('CASTOPOD_URL', 'https://kute.o-k-i.net');
|
||||
|
||||
// Liste des slugs de podcasts à afficher
|
||||
// Les épisodes de tous les podcasts seront mélangés et triés par date
|
||||
define('CASTOPOD_PODCAST_SLUGS', [
|
||||
'joukawouve',
|
||||
'cspcc',
|
||||
'radyobokaz'
|
||||
]);
|
||||
|
||||
// Nombre d'épisodes à afficher (total, tous podcasts confondus)
|
||||
define('CASTOPOD_EPISODES_COUNT', 5);
|
||||
|
||||
// IMPORTANT : Activer le cache pour éviter le rate limiting
|
||||
define('CACHE_ENABLED', true);
|
||||
define('CACHE_DURATION', 3600); // 1 heure recommandé
|
||||
----
|
||||
|
||||
WARNING: *Rate Limiting* : Castopod applique un rate limit strict sur les requêtes RSS. Pour afficher plusieurs podcasts, le système ajoute un délai de 5 secondes entre chaque requête. *Le cache est fortement recommandé* pour éviter ces délais à chaque chargement de page.
|
||||
|
||||
TIP: Pour un seul podcast, vous pouvez utiliser une chaîne : `define('CASTOPOD_PODCAST_SLUGS', ['joukawouve']);`
|
||||
|
||||
=== 📋 Prérequis
|
||||
|
||||
- *Extension PHP XML* (recommandée mais optionnelle) :
|
||||
+
|
||||
[source,bash]
|
||||
----
|
||||
# Sur Ubuntu/Debian
|
||||
sudo apt install php8.3-xml
|
||||
|
||||
# Sur CentOS/RHEL
|
||||
sudo yum install php-xml
|
||||
----
|
||||
+
|
||||
NOTE: Si l'extension n'est pas installée, un fallback avec parsing regex sera utilisé automatiquement (moins performant mais fonctionnel).
|
||||
|
||||
=== 🎯 Affichage
|
||||
|
||||
La section Castopod s'affiche automatiquement sur la page d'accueil selon la configuration :
|
||||
|
||||
*Ordre d'affichage* :
|
||||
1. Vidéo hero (si configurée)
|
||||
2. Podcasts Castopod
|
||||
3. Timeline Mastodon
|
||||
4. Articles WordPress (si activé)
|
||||
|
||||
*Desktop* :
|
||||
- Castopod + Mastodon : Layout 1fr 2fr (podcasts étroit, timeline large)
|
||||
- Castopod + Mastodon + WordPress : Layout 1fr 2fr 1fr (trois colonnes)
|
||||
- Mastodon + WordPress (sans Castopod) : Layout 2fr 1fr (timeline large, articles étroits)
|
||||
|
||||
*Mobile/Tablette* :
|
||||
- Layout vertical avec toutes les sections empilées dans l'ordre ci-dessus
|
||||
|
||||
=== 🔧 Fonctionnement technique
|
||||
|
||||
Le système récupère les épisodes via le flux RSS Castopod :
|
||||
|
||||
- *URL du feed* : `CASTOPOD_URL/@PODCAST_SLUG/feed`
|
||||
- *Format* : RSS 2.0 avec namespace iTunes
|
||||
- *Données extraites* : Titre, lien, date, durée, image, description
|
||||
- *Cache* : Support du système de cache si activé
|
||||
- *Timeout* : 10 secondes pour éviter les blocages
|
||||
|
||||
=== 🎨 Personnalisation CSS
|
||||
|
||||
Les styles sont définis dans `css/castopod-podcasts.css` :
|
||||
|
||||
- `.castopod-container` : Conteneur principal
|
||||
- `.castopod-episode-item` : Élément d'épisode
|
||||
- `.castopod-episode-thumb` : Miniature avec effet hover
|
||||
- `.castopod-play-icon` : Icône de lecture au survol
|
||||
|
||||
== 🛡️ Configuration de sécurité Apache
|
||||
|
||||
Le fichier `conf/.htaccess.sample` fourni inclut des règles de sécurité importantes pour protéger votre installation :
|
||||
|
||||
Reference in New Issue
Block a user