From c0f9c0c1c40ddb80292cf55ec0bbb6863bcf5006 Mon Sep 17 00:00:00 2001 From: root Date: Thu, 2 Apr 2026 21:50:01 +0000 Subject: [PATCH] =?UTF-8?q?docs:=20mise=20=C3=A0=20jour=20compl=C3=A8te=20?= =?UTF-8?q?du=20README?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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) --- README.md | 131 +++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 114 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 9c791b3..53feb8b 100644 --- a/README.md +++ b/README.md @@ -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= +``` + +> ⚠️ **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**