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 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.
|
||||
- **Providers Séries** : FS7 (French-Stream), Zone-Telechargement.
|
||||
- **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.
|
||||
- **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
|
||||
- **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.
|
||||
@@ -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é).
|
||||
- **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
|
||||
- **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.
|
||||
- **Progression Temps Réel** : Vitesse (Mo/s), pourcentage et estimation du temps restant.
|
||||
- **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
|
||||
|
||||
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.
|
||||
- **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.
|
||||
- **Authentification** : JWT via **python-jose** + **passlib/bcrypt**.
|
||||
|
||||
## 📁 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, **OneUpload** |
|
||||
| **Catalogues Anime** | Anime-Sama, Neko-Sama, Anime-Ultime, Vostfree, French-Manga |
|
||||
| **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
|
||||
|
||||
### 1. Prérequis
|
||||
- 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)
|
||||
|
||||
### 2. Installation
|
||||
@@ -62,26 +92,48 @@ source venv/bin/activate
|
||||
|
||||
# Installer les dépendances
|
||||
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
|
||||
```
|
||||
|
||||
### 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.
|
||||
Créez un fichier `.env` à la racine du projet à partir du modèle :
|
||||
|
||||
```bash
|
||||
cp .env.example .env
|
||||
```
|
||||
|
||||
**Générez une clé secrète JWT sécurisée** (obligatoire, min. 32 caractères) :
|
||||
|
||||
```bash
|
||||
# Commande pour générer une clé secrète
|
||||
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
|
||||
```bash
|
||||
# Lancer l'application (Port 3000 par défaut)
|
||||
source venv/bin/activate
|
||||
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é
|
||||
|
||||
@@ -91,28 +143,72 @@ pytest # Tous les tests
|
||||
pytest -m "unit" # Tests unitaires rapides
|
||||
|
||||
# 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
|
||||
```
|
||||
|
||||
## 🏗️ Structure du Projet
|
||||
|
||||
```
|
||||
Ohm_streaming/
|
||||
ohm_streaming/
|
||||
├── main.py # Point d'entrée & Middleware FastAPI
|
||||
├── 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
|
||||
│ ├── routers/ # Routes API modulaires
|
||||
│ ├── routers/ # Routes API modulaires (~40 endpoints)
|
||||
│ ├── download_manager.py # Moteur de téléchargement asynchrone
|
||||
│ ├── 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
|
||||
├── config/ # Fichiers de configuration (Sonarr, mappings)
|
||||
├── alembic/ # Migrations de base de données
|
||||
├── static/ # Frontend (JS, CSS, Img)
|
||||
├── static/ # Frontend (JS, CSS, Images)
|
||||
├── templates/ # Vues Jinja2 (avec HTMX & Alpine.js)
|
||||
├── tests/ # Tests backend
|
||||
├── scripts/ # Scripts utilitaires
|
||||
└── 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é
|
||||
|
||||
- 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é.
|
||||
|
||||
---
|
||||
**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**
|
||||
|
||||
Reference in New Issue
Block a user