
Cette documentation présente l’architecture, le fonctionnement et la maintenance du projet Mon Lecteur RSS, un agrégateur de flux RSS léger et performant développé en Python.
1. Objectifs du Projet
Mon Lecteur RSS répond à la nécessité de centraliser l’information provenant de multiples sources (par exemple : Le Monde, Futura-Sciences, Korben, etc.) dans une interface unique, sobre et réactive.
Problèmes résolus :
- Fragmentation de l’information : Plus besoin de consulter chaque site individuellement.
- Surcharge cognitive : Filtrage par catégories pour cibler les sujets d’intérêt.
- Accessibilité : Génération d’un fichier HTML statique consultable sur n’importe quel navigateur, optimisé pour la lecture.
- Consommation de ressources : Application légère sans base de données lourde ni serveur complexe.
Valeur ajoutée :
- Archivage local : Conservation des articles pendant une durée paramétrable (7 jours par défaut).
- Interface Premium : Design moderne avec mode sombre, gestion du « glassmorphism » et micro-animations.
- Filtrage Dynamique : Navigation fluide entre les thématiques sans rechargement de page.
2. Dépendances
Le projet repose sur un écosystème Python moderne. Voici la liste exhaustive des bibliothèques nécessaires :
| Bibliothèque | Version recommandée | Rôle |
|---|---|---|
| httpx | >= 0.24.0 | Requêtes HTTP asynchrones pour une récupération rapide des flux. |
| feedparser | >= 6.0.0 | Analyse syntaxique (parsing) des flux RSS et Atom. |
| asyncio | (Standard) | Gestion de la concurrence pour le téléchargement parallèle. |
| sqlite3 | (Standard) | Stockage local des articles et gestion des doublons. |
| json | (Standard) | Gestion de la configuration utilisateur. |
3. Structure Logicielle
L’architecture est modulaire, facilitant la maintenance et l’évolution du code.
Arborescence des fichiers :
app.py: Point d’entrée principal. Orchestre la récupération, le stockage et la génération.fetcher.py: Module spécialisé dans la récupération asynchrone des flux via HTTP.database.py: Couche d’abstraction pour la base de données SQLite (rss_data.db).generator.py: Moteur de rendu produisant le fichierindex.html(Template + Logique JS).config.json: Fichier de configuration (URLs des flux, catégories, temps de rétention).rss_data.db: Base de données locale (générée automatiquement au premier lancement).
Schéma de fonctionnement :
- Initialisation : Chargement de
config.json. - Collecte (
fetcher.py) : Téléchargement parallèle de tous les flux configurés. - Persistance (
database.py) : Insertion des nouveaux articles (détection des doublons via GUID). - Nettoyage (
database.py) : Suppression automatique des anciens articles selon le délai de rétention. - Rendu (
generator.py) : Génération de l’interfaceindex.htmlavec les derniers articles.
4. Mode Opératoire
Installation
- Prérequis : Python 3.10 ou supérieur installé sur la machine.
- Installation des dépendances :
pip install httpx feedparser
- Déploiement : Copier l’ensemble des fichiers dans un répertoire dédié.
Configuration
Éditez le fichier config.json pour ajouter vos propres flux :
url: Lien direct vers le flux RSS.category: Nom de la catégorie (ex: « Actualités », « Tech »).retention_days: Nombre de jours avant suppression des articles.
Utilisation
Lancer le script principal :
python app.py
Une fois l’exécution terminée, ouvrez le fichier index.html généré pour consulter vos actualités.
5. Guide de Maintenance
Gestion des Logs
L’application utilise le module logging de Python. Par défaut, les messages d’information et d’erreur sont affichés dans la console. Il est possible de rediriger la sortie vers un fichier pour un suivi sur le long terme.
Pérennité du Code
- Mises à jour : Vérifiez périodiquement la validité des URLs dans
config.json. - Base de données : Le fichier
rss_data.dbse gère seul. En cas de corruption, il suffit de le supprimer ; l’application le recréera à vide au prochain lancement. - Tests : Avant toute mise à jour majeure, testez la récupération avec un seul flux connu pour valider la connectivité.
6. Évolutions Possibles
Roadmap suggérée :
- Recherche plein texte : Intégration d’un champ de recherche dans l’interface HTML.
- Gestion du « Lu / Non-lu » : Ajout d’une interaction utilisateur pour marquer les articles traités.
- Notifications : Système d’alerte (Desktop ou Push) lors de l’arrivée de nouveaux articles importants.
- Optimisation Image : Récupération et affichage des miniatures des articles pour une interface plus visuelle.
- Automatisation : Configuration d’une tâche
cronpour une mise à jour automatique toutes les heures.