refactor: migrate main.py to modular routers and add project roadmap
- Migrated monolithic main.py to feature-scoped routers in app/routers/ - Added GEMINI.md for project context and AI instructional guidelines - Updated README.md with a comprehensive modernization plan (SQL migration, robust scraping DSL, frontend modernization) - Improved authentication with cookie support and modular JS - Updated test suite and documentation
This commit is contained in:
@@ -213,6 +213,51 @@ Les contributions sont les bienvenues !
|
||||
4. Push (`git push origin feature/AmazingFeature`)
|
||||
5. Ouvrez une Pull Request
|
||||
|
||||
## 🗺️ Plan d'Évolution Global (Modernisation)
|
||||
|
||||
Ce plan détaille les étapes nécessaires pour transformer Ohm Stream Downloader en une application de production robuste, sécurisée et évolutive.
|
||||
|
||||
### Phase 1 : Consolidation de la Donnée (Fondation)
|
||||
*Objectif : Remplacer les fichiers JSON par une base de données relationnelle.*
|
||||
- **Migration SQL** : Utiliser **SQLModel** (SQLAlchemy + Pydantic) pour gérer la persistance.
|
||||
- Tables : `users`, `watchlist`, `tasks`, `favorites`, `settings`.
|
||||
- **Gestion des Migrations** : Mettre en place **Alembic** pour suivre l'évolution du schéma sans perte de données.
|
||||
- **Support Multi-base** : Configurer SQLite par défaut et PostgreSQL pour les déploiements avancés.
|
||||
|
||||
### Phase 2 : Robustesse du Scraping (Cœur Technique)
|
||||
*Objectif : Rendre l'extraction de données résiliente aux changements des sites tiers.*
|
||||
- **Abstraction DSL (Domain Specific Language)** : Déporter les sélecteurs CSS et Regex dans des fichiers **YAML/JSON**.
|
||||
- Permet de mettre à jour un provider sans modifier le code Python.
|
||||
- **Découplage des Métadonnées** : Utiliser exclusivement les API de **Kitsu**, **Anilist** ou **MyAnimeList** pour les fiches d'animes.
|
||||
- Le scraping ne sert plus qu'à récupérer les flux vidéo.
|
||||
- **Health Checks Automatisés** : Script quotidien vérifiant que chaque provider répond toujours correctement (alerte en cas d'échec).
|
||||
- **Service Playwright (Headless)** : Intégrer un service optionnel pour scraper les sites protégés par Cloudflare ou du JS complexe.
|
||||
- **Résolution de Domaines (Auto-Mirrors)** : Détection automatique des changements de domaine (.si, .co, .pw) via DNS-over-HTTPS.
|
||||
|
||||
### Phase 3 : Modernisation du Frontend (UX & Maintenance)
|
||||
*Objectif : Simplifier le code JS et améliorer l'expérience utilisateur.*
|
||||
- **Adoption de HTMX/Alpine.js** : Réduire la complexité du Vanilla JS en utilisant **HTMX** pour les mises à jour partielles (DOM diffing) et **Alpine.js** pour la réactivité légère.
|
||||
- **Lecteur Vidéo Professionnel** : Intégrer **Plyr** ou **Video.js** pour supporter :
|
||||
- Les sous-titres (.srt, .vtt).
|
||||
- La gestion avancée du cache et du buffering.
|
||||
- Une interface personnalisée et responsive.
|
||||
- **Système de Toasts & Notifications** : Alertes visuelles pour la progression des tâches et les nouveaux épisodes détectés.
|
||||
- **Design "Mobile First"** : Optimisation complète des CSS pour une utilisation fluide sur smartphone (PWA).
|
||||
|
||||
### Phase 4 : Sécurité et DevOps (Professionnalisation)
|
||||
*Objectif : Sécuriser les accès et faciliter le déploiement.*
|
||||
- **Dockerisation Complète** : `docker-compose.yml` incluant App, Redis (cache), PostgreSQL et Playwright.
|
||||
- **Journalisation Structurée** : Remplacer les `print` par un logger structuré (ex: `structlog`) avec rotation des logs.
|
||||
- **Rate Limiting** : Protection des endpoints API contre le brute-force et le spam de recherche.
|
||||
- **Gestion Stricte des Secrets** : Validation rigoureuse des variables d'environnement et suppression des IPs codées en dur (CORS).
|
||||
|
||||
### Phase 5 : Nouvelles Fonctionnalités (Valeur Ajoutée)
|
||||
*Objectif : Étendre les capacités du service.*
|
||||
- **Transcodage à la volée** : Option FFmpeg pour convertir les .mkv incompatibles vers .mp4.
|
||||
- **Bot de Notification** : Intégration Telegram/Discord pour être alerté dès qu'un épisode de la watchlist est téléchargé.
|
||||
- **Multi-Utilisateurs Réel** : Bibliothèques et historiques de lecture totalement isolés par compte.
|
||||
- **Support des Sous-titres Externes** : Upload de fichiers de sous-titres personnalisés pour le streaming.
|
||||
|
||||
## 📝 Licence
|
||||
|
||||
Ce projet est à usage éducatif uniquement. Respectez les droits d'auteur et les lois locales.
|
||||
|
||||
Reference in New Issue
Block a user