Phase 3: HTMX & Alpine.js integration, router refactoring, and UI modernization
- Modernized the frontend with HTMX for server-driven UI and Alpine.js for client state. - Refactored anime, player, and recommendation logic into modular routers. - Updated README.md to reflect the latest project state and technologies (v2.4). - Added Plyr.io for an improved streaming experience. - Improved project structure with componentized templates. - Added Playwright and Vitest configuration for frontend testing.
This commit is contained in:
@@ -2,21 +2,21 @@
|
||||
|
||||
**Application web complète pour rechercher, streamer et télécharger des animes, séries TV et films.**
|
||||
|
||||
Interface moderne (SPA-like) avec recherche unifiée, watchlist automatique, métadonnées enrichies, téléchargements parallèles et intégration Sonarr.
|
||||
Interface moderne (SPA-like) avec recherche unifiée, watchlist automatique, métadonnées enrichies, téléchargements parallèles et intégration Sonarr. Propulsée par FastAPI, SQLModel et une interface dynamique HTMX/Alpine.js.
|
||||
|
||||
## ✨ Fonctionnalités
|
||||
|
||||
### 🎬 Recherche & Streaming
|
||||
- **Recherche unifiée** : Recherchez animes et séries TV simultanément.
|
||||
- **Recherche unifiée** : Recherchez animes et séries TV simultanément via plusieurs sources.
|
||||
- **Providers Anime** : Anime-Sama, Neko-Sama, Anime-Ultime, Vostfree, French-Manga.
|
||||
- **Providers Séries** : FS7 (French-Stream).
|
||||
- **Métadonnées riches** : Synopsis, genres, notes, studio via intégration Kitsu.
|
||||
- **Streaming vidéo** : Lecteur intégré supportant divers hébergeurs.
|
||||
- **Streaming vidéo** : Lecteur **Plyr.io** intégré supportant plus de 15 hébergeurs.
|
||||
- **Téléchargement flexible** : Épisode par épisode ou saison complète.
|
||||
|
||||
### 📋 Watchlist & Automatisation
|
||||
- **Suivi intelligent** : Ajoutez des animes à votre watchlist pour ne rater aucun épisode.
|
||||
- **Auto-Download** : Téléchargement automatique des nouveaux épisodes dès leur sortie.
|
||||
- **Suivi intelligent** : Ajoutez des titres à votre watchlist pour ne rater aucun épisode.
|
||||
- **Auto-Download** : Téléchargement automatique des nouveaux épisodes dès leur parution.
|
||||
- **Planificateur (Scheduler)** : Vérification périodique configurable (1h à 168h).
|
||||
- **Filtres avancés** : Visualisation par statut (Actif, En pause, Terminé).
|
||||
- **Intégration Sonarr** : Support des webhooks pour une automatisation complète du homelab.
|
||||
@@ -27,42 +27,58 @@ Interface moderne (SPA-like) avec recherche unifiée, watchlist automatique, mé
|
||||
- **Progression Temps Réel** : Vitesse (Mo/s), pourcentage et estimation du temps restant.
|
||||
- **Sanitisation** : Nettoyage automatique des noms de fichiers pour une compatibilité maximale.
|
||||
|
||||
## 🏗️ Architecture (Three-Tier System)
|
||||
## 🏗️ Architecture & Stack Technique
|
||||
|
||||
L'application repose sur un système à trois couches pour une robustesse maximale :
|
||||
1. **Catalogues (Anime/Series Sites)** : Extraction des listes d'épisodes et métadonnées.
|
||||
2. **Players Vidéo (Video Players)** : Extraction des liens de téléchargement direct depuis les embeds (VidMoly, DoodStream, etc.).
|
||||
3. **Manager (Download Manager)** : Orchestration asynchrone des transferts de fichiers.
|
||||
L'application repose sur une architecture moderne et robuste :
|
||||
- **Backend** : Python 3.11+, **FastAPI** pour l'API asynchrone.
|
||||
- **Base de Données** : **SQLModel** (SQLAlchemy + Pydantic) avec **SQLite**.
|
||||
- **Migrations** : **Alembic** pour la gestion évolutive du schéma de données.
|
||||
- **Frontend** : **HTMX** pour les interactions serveur, **Alpine.js** pour l'état client, **Vanilla CSS**.
|
||||
- **Streaming** : **Plyr.io** pour une expérience de lecture fluide et moderne.
|
||||
|
||||
## 📁 Hébergeurs Supportés
|
||||
|
||||
| Type | Services Supportés |
|
||||
| :--- | :--- |
|
||||
| **Catalogues** | Anime-Sama, Neko-Sama, Anime-Ultime, Vostfree, French-Manga, FS7 |
|
||||
| **Players/Hosts** | VidMoly, DoodStream, 1fichier, Uptobox, SendVid, Sibnet, Lplayer, Uqload, Rapidfile, LuLuvid, Smoothpre, Vidzy |
|
||||
| **Players/Hosts** | VidMoly, DoodStream, 1fichier, Uptobox, SendVid, Sibnet, Lplayer, Uqload, Rapidfile, LuLuvid, Smoothpre, Vidzy, **OneUpload** |
|
||||
|
||||
## 📋 Configuration Requise
|
||||
## 🚀 Installation & Configuration
|
||||
|
||||
- **Python 3.11+**
|
||||
- **Node.js** (pour les tests frontend uniquement)
|
||||
- **Playwright** (pour l'extraction dynamique sur certains sites)
|
||||
|
||||
## 🚀 Installation Rapide
|
||||
### 1. Prérequis
|
||||
- Python 3.11+
|
||||
- Node.js (pour les tests optionnels)
|
||||
- Playwright (requis pour l'extraction de certains lecteurs comme VidMoly)
|
||||
|
||||
### 2. Installation
|
||||
```bash
|
||||
# Cloner le repository
|
||||
git clone https://git.lanro.eu/Roman/ohm_streaming.git
|
||||
cd ohm_streaming
|
||||
|
||||
# Environnement Python
|
||||
# Créer et activer l'environnement virtuel
|
||||
python3 -m venv venv
|
||||
source venv/bin/activate
|
||||
|
||||
# Installer les dépendances
|
||||
pip install -r requirements.txt
|
||||
|
||||
# Initialisation Playwright (requis pour VidMoly)
|
||||
# Initialisation Playwright
|
||||
playwright install chromium
|
||||
```
|
||||
|
||||
# Lancer l'application
|
||||
### 3. Configuration
|
||||
Créez un fichier `.env` à la racine du projet (voir `.env.example`).
|
||||
**Note importante sur la sécurité :** Générez une clé secrète JWT sécurisée.
|
||||
|
||||
```bash
|
||||
# Commande pour générer une clé secrète
|
||||
python3 -c "import secrets; print(secrets.token_urlsafe(32))"
|
||||
```
|
||||
|
||||
### 4. Lancement
|
||||
```bash
|
||||
# Lancer l'application (Port 3000 par défaut)
|
||||
uvicorn main:app --reload --host 0.0.0.0 --port 3000
|
||||
```
|
||||
Accès Web : `http://localhost:3000/web`
|
||||
@@ -76,52 +92,34 @@ pytest -m "unit" # Tests unitaires rapides
|
||||
|
||||
# Frontend (Vitest & Playwright)
|
||||
npm test # Tests unitaires JS
|
||||
npx playwright test # Tests E2E
|
||||
npx playwright test # Tests E2E complets
|
||||
```
|
||||
|
||||
## 🏗️ Structure du Projet
|
||||
|
||||
```
|
||||
Ohm_streaming/
|
||||
├── main.py # Point d'entrée & API FastAPI
|
||||
├── main.py # Point d'entrée & Middleware FastAPI
|
||||
├── app/
|
||||
│ ├── downloaders/ # Logique d'extraction (Scraping)
|
||||
│ │ ├── anime_sites/ # Catalogues Anime
|
||||
│ │ ├── series_sites/ # Catalogues Séries
|
||||
│ │ └── video_players/ # Extracteurs de liens directs
|
||||
│ ├── routers/ # Routes API modulaires (Auth, Watchlist, etc.)
|
||||
│ ├── downloaders/ # Logique d'extraction (Scraping 3-tier)
|
||||
│ ├── models/ # Modèles SQLModel & Pydantic
|
||||
│ ├── routers/ # Routes API modulaires
|
||||
│ ├── download_manager.py # Moteur de téléchargement asynchrone
|
||||
│ ├── watchlist.py # Logique métier du suivi
|
||||
│ └── scheduler.py # Planificateur de tâches
|
||||
├── static/ # Frontend (JS Vanilla, CSS)
|
||||
├── templates/ # Vues Jinja2
|
||||
└── config/ # Données persistantes (JSON)
|
||||
│ └── database.py # Configuration de la base de données
|
||||
├── alembic/ # Migrations de base de données
|
||||
├── static/ # Frontend (JS, CSS, Img)
|
||||
├── templates/ # Vues Jinja2 (avec HTMX & Alpine.js)
|
||||
└── downloads/ # Répertoire par défaut des médias
|
||||
```
|
||||
|
||||
## 🗺️ Plan d'Évolution Global (Modernisation)
|
||||
|
||||
### ✅ Phase 1 : Restructuration (Terminé)
|
||||
- Migration vers une architecture modulaire pour les downloaders.
|
||||
- Séparation stricte entre catalogues et hébergeurs vidéo.
|
||||
- Amélioration de la gestion des erreurs et des retries.
|
||||
|
||||
### ✅ Phase 2 : Consolidation & SQL (Terminé)
|
||||
- Migration complète des fichiers JSON vers **SQLModel** (SQLite).
|
||||
- Mise en place d'**Alembic** pour les migrations de base de données.
|
||||
- Centralisation des métadonnées et persistance robuste.
|
||||
|
||||
### 🏗️ Phase 3 : UX & Modernisation Frontend (En cours)
|
||||
- Adoption de **HTMX/Alpine.js** pour dynamiser l'interface.
|
||||
- Intégration du lecteur vidéo avancé **Plyr.io**.
|
||||
- Amélioration de la réactivité de la recherche et de la watchlist.
|
||||
|
||||
## 📝 Licence & Sécurité
|
||||
|
||||
- Ce projet est à usage **éducatif et personnel** uniquement.
|
||||
- Respectez les droits d'auteur et les conditions d'utilisation des sites sources.
|
||||
- Ne partagez jamais votre `JWT_SECRET_KEY` en production.
|
||||
- L'utilisation de ce logiciel est sous votre entière responsabilité.
|
||||
|
||||
---
|
||||
**Version actuelle : 2.3**
|
||||
**Version actuelle : 2.4**
|
||||
**Dernière mise à jour : Mars 2026**
|
||||
**Développé avec ❤️ pour la communauté anime**
|
||||
|
||||
Reference in New Issue
Block a user