docs: mise à jour complète du README
- Ajout provider Zone-Telechargement (séries) - Section Authentification (JWT, refresh tokens) - Section Favoris & Recommandations - Section Paramètres (désactivation providers, UI settings, Sonarr) - Tableau état des providers (vérifié Avril 2026) - Tableau des endpoints API principaux (~40 endpoints) - Section Problèmes Connus (Smoothpre, Sibnet, Anime-Ultime, watchlist_settings) - Dépendance manquante: pydantic[email] - Avertissement CORS_ORIGINS dans .env - Structure détaillée des downloaders - Points d'accès documentés (web, docs, login)
This commit is contained in:
@@ -9,11 +9,15 @@ Interface moderne (SPA-like) avec recherche unifiée, watchlist automatique, mé
|
|||||||
### 🎬 Recherche & Streaming
|
### 🎬 Recherche & Streaming
|
||||||
- **Recherche unifiée** : Recherchez animes et séries TV simultanément via plusieurs sources.
|
- **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 Anime** : Anime-Sama, Neko-Sama, Anime-Ultime, Vostfree, French-Manga.
|
||||||
- **Providers Séries** : FS7 (French-Stream).
|
- **Providers Séries** : FS7 (French-Stream), Zone-Telechargement.
|
||||||
- **Métadonnées riches** : Synopsis, genres, notes, studio via intégration Kitsu.
|
- **Métadonnées riches** : Synopsis, genres, notes, studio via intégration Kitsu/MAL.
|
||||||
- **Streaming vidéo** : Lecteur **Plyr.io** intégré supportant plus de 15 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.
|
- **Téléchargement flexible** : Épisode par épisode ou saison complète.
|
||||||
|
|
||||||
|
### 🔐 Authentification
|
||||||
|
- **Inscription / Connexion** : Système JWT avec tokens d'accès et de refresh.
|
||||||
|
- **Sécurité** : Clé secrète configurable, tokens expirables (24h access, 30j refresh).
|
||||||
|
|
||||||
### 📋 Watchlist & Automatisation
|
### 📋 Watchlist & Automatisation
|
||||||
- **Suivi intelligent** : Ajoutez des titres à votre watchlist pour ne rater aucun épisode.
|
- **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.
|
- **Auto-Download** : Téléchargement automatique des nouveaux épisodes dès leur parution.
|
||||||
@@ -21,12 +25,22 @@ Interface moderne (SPA-like) avec recherche unifiée, watchlist automatique, mé
|
|||||||
- **Filtres avancés** : Visualisation par statut (Actif, En pause, Terminé).
|
- **Filtres avancés** : Visualisation par statut (Actif, En pause, Terminé).
|
||||||
- **Intégration Sonarr** : Support des webhooks pour une automatisation complète du homelab.
|
- **Intégration Sonarr** : Support des webhooks pour une automatisation complète du homelab.
|
||||||
|
|
||||||
|
### ⭐ Favoris & Recommandations
|
||||||
|
- **Favoris** : Sauvegardez vos animes préférés avec tri et filtres.
|
||||||
|
- **Recommandations** : Suggestions basées sur les tendances et sorties récentes.
|
||||||
|
- **Sorties saisonnières** : Suivi des sorties anime (top, latest, seasonal).
|
||||||
|
|
||||||
### 🚀 Gestionnaire de Téléchargements
|
### 🚀 Gestionnaire de Téléchargements
|
||||||
- **Multi-threading** : Jusqu'à 5 téléchargements simultanés avec gestion de file d'attente.
|
- **Multi-threading** : Jusqu'à 5 téléchargements simultanés avec gestion de file d'attente.
|
||||||
- **Pause/Reprise** : Support du protocole HTTP Range pour reprendre les téléchargements interrompus.
|
- **Pause/Reprise** : Support du protocole HTTP Range pour reprendre les téléchargements interrompus.
|
||||||
- **Progression Temps Réel** : Vitesse (Mo/s), pourcentage et estimation du temps restant.
|
- **Progression Temps Réel** : Vitesse (Mo/s), pourcentage et estimation du temps restant.
|
||||||
- **Sanitisation** : Nettoyage automatique des noms de fichiers pour une compatibilité maximale.
|
- **Sanitisation** : Nettoyage automatique des noms de fichiers pour une compatibilité maximale.
|
||||||
|
|
||||||
|
### ⚙️ Paramètres
|
||||||
|
- **Désactivation de providers** : Activez/désactivez les sources individuellement.
|
||||||
|
- **UI Settings** : Configuration de l'interface utilisateur.
|
||||||
|
- **Sonarr Config** : Configuration de l'intégration Sonarr avec mapping de séries.
|
||||||
|
|
||||||
## 🏗️ Architecture & Stack Technique
|
## 🏗️ Architecture & Stack Technique
|
||||||
|
|
||||||
L'application repose sur une architecture moderne et robuste :
|
L'application repose sur une architecture moderne et robuste :
|
||||||
@@ -35,19 +49,35 @@ L'application repose sur une architecture moderne et robuste :
|
|||||||
- **Migrations** : **Alembic** pour la gestion évolutive du schéma de données.
|
- **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**.
|
- **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.
|
- **Streaming** : **Plyr.io** pour une expérience de lecture fluide et moderne.
|
||||||
|
- **Authentification** : JWT via **python-jose** + **passlib/bcrypt**.
|
||||||
|
|
||||||
## 📁 Hébergeurs Supportés
|
## 📁 Hébergeurs Supportés
|
||||||
|
|
||||||
| Type | Services Supportés |
|
| Type | Services Supportés |
|
||||||
| :--- | :--- |
|
| :--- | :--- |
|
||||||
| **Catalogues** | Anime-Sama, Neko-Sama, Anime-Ultime, Vostfree, French-Manga, FS7 |
|
| **Catalogues Anime** | Anime-Sama, Neko-Sama, Anime-Ultime, Vostfree, French-Manga |
|
||||||
| **Players/Hosts** | VidMoly, DoodStream, 1fichier, Uptobox, SendVid, Sibnet, Lplayer, Uqload, Rapidfile, LuLuvid, Smoothpre, Vidzy, **OneUpload** |
|
| **Catalogues Séries** | FS7 (French-Stream), Zone-Telechargement |
|
||||||
|
| **Players/Hosts** | VidMoly, DoodStream, 1fichier, Uptobox, SendVid, Sibnet, Lplayer, Uqload, Rapidfile, LuLuvid, Smoothpre, Vidzy, OneUpload |
|
||||||
|
|
||||||
|
## 📊 État des Providers
|
||||||
|
|
||||||
|
| Provider | Type | Status |
|
||||||
|
| :--- | :--- | :--- |
|
||||||
|
| Anime-Sama | Anime | ✅ UP |
|
||||||
|
| Neko-Sama | Anime | ✅ UP |
|
||||||
|
| Anime-Ultime | Anime | ✅ UP |
|
||||||
|
| Vostfree | Anime | ✅ UP |
|
||||||
|
| French-Manga | Anime | ✅ UP |
|
||||||
|
| FS7 | Séries | ✅ UP |
|
||||||
|
| Zone-Telechargement | Séries | ✅ UP |
|
||||||
|
|
||||||
|
> Dernière vérification : Avril 2026
|
||||||
|
|
||||||
## 🚀 Installation & Configuration
|
## 🚀 Installation & Configuration
|
||||||
|
|
||||||
### 1. Prérequis
|
### 1. Prérequis
|
||||||
- Python 3.11+
|
- Python 3.11+
|
||||||
- Node.js (pour les tests optionnels)
|
- Node.js (pour les tests optionnels uniquement)
|
||||||
- Playwright (requis pour l'extraction de certains lecteurs comme VidMoly)
|
- Playwright (requis pour l'extraction de certains lecteurs comme VidMoly)
|
||||||
|
|
||||||
### 2. Installation
|
### 2. Installation
|
||||||
@@ -62,26 +92,48 @@ source venv/bin/activate
|
|||||||
|
|
||||||
# Installer les dépendances
|
# Installer les dépendances
|
||||||
pip install -r requirements.txt
|
pip install -r requirements.txt
|
||||||
|
pip install pydantic[email] # Requis pour la validation des emails
|
||||||
|
|
||||||
# Initialisation Playwright
|
# Initialisation Playwright (optionnel, pour l'extraction VidMoly)
|
||||||
playwright install chromium
|
playwright install chromium
|
||||||
```
|
```
|
||||||
|
|
||||||
### 3. Configuration
|
### 3. Configuration
|
||||||
Créez un fichier `.env` à la racine du projet (voir `.env.example`).
|
Créez un fichier `.env` à la racine du projet à partir du modèle :
|
||||||
**Note importante sur la sécurité :** Générez une clé secrète JWT sécurisée.
|
|
||||||
|
```bash
|
||||||
|
cp .env.example .env
|
||||||
|
```
|
||||||
|
|
||||||
|
**Générez une clé secrète JWT sécurisée** (obligatoire, min. 32 caractères) :
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Commande pour générer une clé secrète
|
|
||||||
python3 -c "import secrets; print(secrets.token_urlsafe(32))"
|
python3 -c "import secrets; print(secrets.token_urlsafe(32))"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Editez le `.env` et ajoutez :
|
||||||
|
```env
|
||||||
|
JWT_SECRET_KEY=<la_clé_générée_ci_dessus>
|
||||||
|
```
|
||||||
|
|
||||||
|
> ⚠️ **Ne pas** définir `CORS_ORIGINS` dans le `.env` si vous utilisez les valeurs par défaut (format JSON requis, les valeurs par défaut du code suffisent).
|
||||||
|
|
||||||
### 4. Lancement
|
### 4. Lancement
|
||||||
```bash
|
```bash
|
||||||
# Lancer l'application (Port 3000 par défaut)
|
# Lancer l'application (Port 3000 par défaut)
|
||||||
|
source venv/bin/activate
|
||||||
uvicorn main:app --reload --host 0.0.0.0 --port 3000
|
uvicorn main:app --reload --host 0.0.0.0 --port 3000
|
||||||
```
|
```
|
||||||
Accès Web : `http://localhost:3000/web`
|
|
||||||
|
Ou via le script fourni :
|
||||||
|
```bash
|
||||||
|
./run_app.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
**Points d'accès :**
|
||||||
|
- Interface web : `http://localhost:3000/web`
|
||||||
|
- Documentation API : `http://localhost:3000/docs`
|
||||||
|
- Page de connexion : `http://localhost:3000/login`
|
||||||
|
|
||||||
## 🧪 Tests & Qualité
|
## 🧪 Tests & Qualité
|
||||||
|
|
||||||
@@ -91,28 +143,72 @@ pytest # Tous les tests
|
|||||||
pytest -m "unit" # Tests unitaires rapides
|
pytest -m "unit" # Tests unitaires rapides
|
||||||
|
|
||||||
# Frontend (Vitest & Playwright)
|
# Frontend (Vitest & Playwright)
|
||||||
npm test # Tests unitaires JS
|
npm install # Installer les dépendances dev
|
||||||
|
npm test # Tests unitaires JS (Vitest)
|
||||||
npx playwright test # Tests E2E complets
|
npx playwright test # Tests E2E complets
|
||||||
```
|
```
|
||||||
|
|
||||||
## 🏗️ Structure du Projet
|
## 🏗️ Structure du Projet
|
||||||
|
|
||||||
```
|
```
|
||||||
Ohm_streaming/
|
ohm_streaming/
|
||||||
├── main.py # Point d'entrée & Middleware FastAPI
|
├── main.py # Point d'entrée & Middleware FastAPI
|
||||||
├── app/
|
├── app/
|
||||||
│ ├── downloaders/ # Logique d'extraction (Scraping 3-tier)
|
│ ├── downloaders/ # Logique d'extraction (Scraping multi-tier)
|
||||||
|
│ │ ├── anime_sama.py # Downloader Anime-Sama
|
||||||
|
│ │ ├── anime_ultime.py # Downloader Anime-Ultime
|
||||||
|
│ │ ├── neko_sama.py # Downloader Neko-Sama
|
||||||
|
│ │ ├── vostfree.py # Downloader Vostfree
|
||||||
|
│ │ ├── french_manga.py # Downloader French-Manga
|
||||||
|
│ │ ├── fs7.py # Downloader FS7
|
||||||
|
│ │ └── zone_telechargement.py # Downloader Zone-TG
|
||||||
│ ├── models/ # Modèles SQLModel & Pydantic
|
│ ├── models/ # Modèles SQLModel & Pydantic
|
||||||
│ ├── routers/ # Routes API modulaires
|
│ ├── routers/ # Routes API modulaires (~40 endpoints)
|
||||||
│ ├── download_manager.py # Moteur de téléchargement asynchrone
|
│ ├── download_manager.py # Moteur de téléchargement asynchrone
|
||||||
│ ├── watchlist.py # Logique métier du suivi
|
│ ├── watchlist.py # Logique métier du suivi
|
||||||
|
│ ├── episode_checker.py # Vérification automatique de nouveaux épisodes
|
||||||
|
│ ├── auto_download_scheduler.py # Planificateur de téléchargements
|
||||||
|
│ ├── sonarr_handler.py # Intégration Sonarr
|
||||||
|
│ ├── metadata_enrichment.py # Enrichissement des métadonnées (Kitsu/MAL)
|
||||||
|
│ ├── recommendations.py # Système de recommandations
|
||||||
|
│ ├── providers_manager.py # Gestion des providers (health check, activation)
|
||||||
│ └── database.py # Configuration de la base de données
|
│ └── database.py # Configuration de la base de données
|
||||||
|
├── config/ # Fichiers de configuration (Sonarr, mappings)
|
||||||
├── alembic/ # Migrations de base de données
|
├── alembic/ # Migrations de base de données
|
||||||
├── static/ # Frontend (JS, CSS, Img)
|
├── static/ # Frontend (JS, CSS, Images)
|
||||||
├── templates/ # Vues Jinja2 (avec HTMX & Alpine.js)
|
├── templates/ # Vues Jinja2 (avec HTMX & Alpine.js)
|
||||||
|
├── tests/ # Tests backend
|
||||||
|
├── scripts/ # Scripts utilitaires
|
||||||
└── downloads/ # Répertoire par défaut des médias
|
└── downloads/ # Répertoire par défaut des médias
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## 🔧 Endpoints API Principaux
|
||||||
|
|
||||||
|
| Endpoint | Méthode | Description |
|
||||||
|
| :--- | :--- | :--- |
|
||||||
|
| `/api/auth/register` | POST | Création de compte |
|
||||||
|
| `/api/auth/login` | POST | Connexion (JWT) |
|
||||||
|
| `/api/auth/me` | GET | Profil utilisateur |
|
||||||
|
| `/api/anime/search?q=` | GET | Recherche multi-providers |
|
||||||
|
| `/api/series/search?q=` | GET | Recherche séries |
|
||||||
|
| `/api/anime/seasons?url=` | GET | Liste des saisons |
|
||||||
|
| `/api/anime/episodes?url=` | GET | Liste des épisodes |
|
||||||
|
| `/api/anime/download?url=` | POST | Lancer un téléchargement |
|
||||||
|
| `/api/anime/download-season?url=` | POST | Télécharger une saison complète |
|
||||||
|
| `/api/downloads` | GET | Liste des téléchargements |
|
||||||
|
| `/api/favorites` | GET | Liste des favoris |
|
||||||
|
| `/api/watchlist` | GET | Liste de la watchlist |
|
||||||
|
| `/api/providers/health` | GET | État des providers |
|
||||||
|
| `/api/settings` | GET | Configuration |
|
||||||
|
| `/api/sonarr/config` | GET/POST | Configuration Sonarr |
|
||||||
|
|
||||||
|
## 🐛 Problèmes Connus
|
||||||
|
|
||||||
|
- **Smoothpre** : L'extracteur de liens vidéo peut échouer si la structure de la page change côté serveur.
|
||||||
|
- **Sibnet filename** : Le nom de fichier généré peut contenir des caractères invalides issus de l'URL (à corriger dans la sanitisation du DownloadManager).
|
||||||
|
- **Anime-Ultime download** : La méthode `get_download_link()` a une incompatibilité de signature lors de l'appel par le routeur de téléchargement.
|
||||||
|
- **Table watchlist_settings** : La table SQLite n'est pas créée automatiquement au premier lancement (affiche un warning dans les logs mais n'empêche pas le fonctionnement).
|
||||||
|
|
||||||
## 📝 Licence & Sécurité
|
## 📝 Licence & Sécurité
|
||||||
|
|
||||||
- Ce projet est à usage **éducatif et personnel** uniquement.
|
- Ce projet est à usage **éducatif et personnel** uniquement.
|
||||||
@@ -120,6 +216,7 @@ Ohm_streaming/
|
|||||||
- L'utilisation de ce logiciel est sous votre entière responsabilité.
|
- L'utilisation de ce logiciel est sous votre entière responsabilité.
|
||||||
|
|
||||||
---
|
---
|
||||||
**Version actuelle : 2.4**
|
|
||||||
**Dernière mise à jour : Mars 2026**
|
**Version actuelle : 2.4**
|
||||||
|
**Dernière mise à jour : Avril 2026**
|
||||||
**Développé avec ❤️ pour la communauté anime**
|
**Développé avec ❤️ pour la communauté anime**
|
||||||
|
|||||||
Reference in New Issue
Block a user