From 42daab1e50fde292b30e1f6c100478b033abbe12 Mon Sep 17 00:00:00 2001 From: root Date: Sat, 28 Feb 2026 09:53:42 +0000 Subject: [PATCH] docs: update README with watchlist and series features --- README.md | 359 ++++++++++++++---------------------------------------- 1 file changed, 90 insertions(+), 269 deletions(-) diff --git a/README.md b/README.md index c94a991..b3bce5b 100644 --- a/README.md +++ b/README.md @@ -1,39 +1,58 @@ # Ohm Stream Downloader -**Application web complète pour télécharger des animes et fichiers depuis divers hébergeurs.** +**Application web complète pour télécharger des animes, séries TV et fichiers depuis divers hébergeurs.** -Interface moderne avec recherche d'anime, métadonnées enrichies, téléchargements parallèles et streaming vidéo. +Interface moderne avec recherche unifiée, watchlist automatique, métadonnées enrichies, téléchargements parallèles et streaming vidéo. ## ✨ Fonctionnalités -### 🎬 Recherche et Téléchargement d'Animes -- **Recherche unifiée** : Recherchez sur 4 providers simultanément (Anime-Sama, Neko-Sama, Anime-Ultime, Vostfree) -- **Métadonnées riches** : Synopsis, genres, notes, année de sortie, studio, nombre d'épisodes, statut +### 🎬 Recherche d'Animes & Séries TV +- **Recherche unifiée** : Recherchez animes et séries TV simultanément +- **Providers Anime** : Anime-Sama, Neko-Sama, Anime-Ultime, Vostfree, French-Manga +- **Providers Séries** : FS7 (French-Stream) +- **Métadonnées riches** : Synopsis, genres, notes, année de sortie, studio, nombre d'épisodes - **Téléchargement par épisode** : Sélectionnez et téléchargez des épisodes individuels - **Téléchargement de saison complète** : Téléchargez tous les épisodes d'un coup - **Streaming vidéo** : Regardez vos animes directement dans le navigateur - **Recherche floue** : Gestion des fautes de frappe et variations de noms +### 📋 Watchlist (Suivi Automatique) +- **Ajout à la watchlist** : Suivez vos animes préférés depuis la recherche +- **Téléchargement automatique** : Télécharge tous les épisodes dès le suivi +- **Vérification automatique** : Le planificateur vérifie les nouveaux épisodes automatiquement +- **Intervalle configurable** : Paramétrez la fréquence de vérification (1-168 heures) +- **Notifications** : Recevez des alertes pour les nouveaux épisodes +- **Filtres** : Visualisez tous / actifs / en pause / terminés +- **Contrôle granulaire** : Pausez, reprenez, vérifiez manuellement chaque anime + ### 📁 Hébergeurs de Fichiers Supportés - **1fichier** (1fichier.com, 1fichier.fr) - **Uptobox** (uptobox.com, uptobox.fr) - **Doodstream** (doodstream.com, dood.to, dood.lol, etc.) - **Rapidfile** (rapidfile.net, rapidfile.com) +- **Uqload** (uqload.co, uqload.io) +- **OneUpload** (oneupload.co) +- **SendVid** (sendvid.com) +- **VidZ** (vidzi.tv) ### 🎥 Hébergeurs Vidéo Supportés - **VidMoly** (vidmoly.to, vidmoly.com) - **SendVid** (sendvid.com) +- **DoodStream** (doodstream.com) +- **LPlayer** (lplayer.net) +- **VidZy** (vidzy.tv) ### 🚀 Gestion des Téléchargements -- **Téléchargements parallèles** : Jusqu'à 3 téléchargements simultanés +- **Téléchargements parallèles** : Hasta 5 téléchargements simultanés - **Pause/Reprise** : Contrôle total sur vos téléchargements - **Progression en temps réel** : Vitesse, progression, taille - **Reprise automatique** : Support des HTTP Range pour reprendre les téléchargements interrompus ### 🌐 Interface Web -- **Design moderne** : Interface sombre avec gradients et animations +- **Design moderne** : Interface sombre avec onglets +- **5 onglets** : Accueil, Recherche, Séries, Providers, Watchlist - **Responsive** : Fonctionne sur desktop et mobile -- **Mise à jour automatique** : Rafraîchissement chaque seconde +- **Mise à jour automatique** : Rafraîchissement automatique du contenu - **Métadonnées visuelles** : Affichage des informations anime avec icônes ### 🔌 API REST @@ -49,8 +68,8 @@ Interface moderne avec recherche d'anime, métadonnées enrichies, téléchargem ```bash # Cloner le repository -git clone https://github.com/votre-user/Ohm_streaming.git -cd Ohm_streaming +git clone https://git.lanro.eu/Roman/ohm_streaming.git +cd ohm_streaming # Créer l'environnement virtuel python3 -m venv venv @@ -69,26 +88,41 @@ Accédez à l'interface : http://localhost:3000/web ### Interface Web -1. **Onglet Recherche d'Anime** : - - Entrez le nom d'un anime (ex: "Naruto", "One Piece") +1. **Onglet Accueil** : + - Dernières sorties anime et séries populaires + - Recommandations personnalisées + +2. **Onglet Recherche** : + - Entrez le nom d'un anime (ex: "Naruto", "Frieren") - Sélectionnez la langue (VOSTFR ou VF) - - Cochez "Inclure les métadonnées" pour plus d'informations - Cliquez sur "Rechercher" - Sélectionnez un épisode et cliquez sur "Télécharger" - Ou utilisez "Toute la saison" pour tout télécharger + - Cliquez sur "➕ Suivre" pour ajouter à la watchlist -2. **Onglet Lien Direct** : - - Collez un lien de téléchargement direct - - Cliquez sur "Télécharger" +3. **Onglet Séries** : + - Recherchez des séries TV (Breaking Bad, Game of Thrones, etc.) + - Téléchargez des épisodes -3. **Onglet Providers** : - - Utilisez les onglets spécifiques à chaque provider - - Chaque onglet a ses propres options de recherche +4. **Onglet Providers** : + - Liste des hébergeurs de fichiers disponibles + +5. **Onglet Watchlist** : + - Visualisez vos animes suivis + - Contrôlez le planificateur automatique + - Paramétrez l'intervalle de vérification + - Filtrez par statut (tous, actifs, en pause, terminés) ### API Endpoints -#### Téléchargements +#### Authentication +| Méthode | Endpoint | Description | +|---------|----------|-------------| +| POST | `/api/auth/register` | Créer un compte | +| POST | `/api/auth/login` | Connexion (JWT) | +| GET | `/api/auth/me` | Profil utilisateur | +#### Téléchargements | Méthode | Endpoint | Description | |---------|----------|-------------| | POST | `/api/download` | Créer un nouveau téléchargement | @@ -100,55 +134,37 @@ Accédez à l'interface : http://localhost:3000/web | GET | `/api/download/{task_id}/file` | Télécharger le fichier terminé | #### Anime - | Méthode | Endpoint | Description | |---------|----------|-------------| -| GET | `/api/anime/search` | Rechercher un anime (paramètres: `q`, `lang`, `include_metadata`) | -| GET | `/api/anime/metadata` | Obtenir les métadonnées d'un anime (paramètre: `url`) | -| GET | `/api/anime/episodes` | Liste des épisodes d'un anime (paramètres: `url`, `lang`) | +| GET | `/api/anime/search` | Rechercher un anime | +| GET | `/api/anime/metadata` | Obtenir les métadonnées | +| GET | `/api/anime/episodes` | Liste des épisodes | | POST | `/api/anime/download` | Télécharger un épisode | | POST | `/api/anime/download-season` | Télécharger toute une saison | -#### Streaming Vidéo - +#### Watchlist | Méthode | Endpoint | Description | |---------|----------|-------------| -| GET | `/video/{task_id}` | Stream une vidéo (support Range/seeking) | -| GET | `/stream/{filename}` | Stream par nom de fichier | -| GET | `/player/{task_id}` | Lecteur vidéo pour un téléchargement | -| GET | `/watch/{filename}` | Lecteur vidéo par nom de fichier | - -#### Système - -| Méthode | Endpoint | Description | -|---------|----------|-------------| -| GET | `/` | Informations sur l'API | -| GET | `/api/providers` | Liste des providers supportés | -| GET | `/health` | Vérifier l'état du serveur | -| GET | `/web` | Interface web | +| GET | `/api/watchlist` | Liste des animes suivis | +| POST | `/api/watchlist` | Ajouter à la watchlist | +| DELETE | `/api/watchlist/{item_id}` | Supprimer de la watchlist | +| POST | `/api/watchlist/check-all` | Vérifier tous les animes | +| GET | `/api/watchlist/settings` | Paramètres | +| PUT | `/api/watchlist/settings` | Mettre à jour les paramètres | ### Exemples API -**Rechercher un anime avec métadonnées :** +**Rechercher un anime :** ```bash -curl "http://localhost:3000/api/anime/search?q=naruto&lang=vostfr&include_metadata=true" +curl "http://localhost:3000/api/anime/search?q=frieren&lang=vostfr" ``` -**Obtenir les épisodes d'un anime :** +**Ajouter à la watchlist :** ```bash -curl "http://localhost:3000/api/anime/episodes?url=https://anime-sama.si/catalogue/naruto/saison1/vostfr/&lang=vostfr" -``` - -**Télécharger une saison complète :** -```bash -curl -X POST "http://localhost:3000/api/anime/download-season?url=https://anime-sama.si/catalogue/naruto/saison1/vostfr/&lang=vostfr" -``` - -**Créer un téléchargement direct :** -```bash -curl -X POST http://localhost:3000/api/download \ +curl -X POST http://localhost:3000/api/watchlist \ + -H "Authorization: Bearer YOUR_TOKEN" \ -H "Content-Type: application/json" \ - -d '{"url": "https://1fichier.com/?xxxxx"}' + -d '{"anime_title": "Frieren", "anime_url": "https://anime-sama.si/catalogue/frieren/saison1/vostfr/", "provider_id": "animesama", "lang": "vostfr"}' ``` ## 🏗️ Structure du Projet @@ -158,223 +174,34 @@ Ohm_streaming/ ├── main.py # Application FastAPI & endpoints API ├── app/ │ ├── models/ # Modèles Pydantic -│ │ └── __init__.py # DownloadTask, AnimeMetadata, etc. │ ├── downloaders/ # Downloaders par provider -│ │ ├── base.py # Classe BaseDownloader -│ │ ├── animesama.py # Anime-Sama (avec métadonnées) -│ │ ├── animeultime.py # Anime-Ultime (avec métadonnées) -│ │ ├── nekosama.py # Neko-Sama (avec métadonnées) -│ │ ├── vostfree.py # Vostfree (avec métadonnées) -│ │ ├── unfichier.py # 1fichier -│ │ ├── uptobox.py # Uptobox -│ │ ├── doodstream.py # Doodstream -│ │ ├── rapidfile.py # Rapidfile -│ │ ├── vidmoly.py # VidMoly -│ │ ├── sendvid.py # SendVid -│ │ └── __init__.py # Registry des downloaders -│ ├── providers.py # Configuration des providers -│ └── download_manager.py # Gestionnaire de file d'attente -├── downloads/ # Fichiers téléchargés -├── templates/ -│ ├── index.html # Interface web principale -│ └── player.html # Lecteur vidéo -├── static/ # Fichiers statiques (CSS, JS, images) -└── requirements.txt # Dépendances Python +│ │ ├── anime_sites/ # Providers anime +│ │ └── series_sites/ # Providers séries +│ ├── providers.py # Configuration des providers +│ ├── download_manager.py # Gestionnaire de file d'attente +│ ├── watchlist.py # Gestion de la watchlist +│ ├── episode_checker.py # Vérification des nouveaux épisodes +│ └── auto_download_scheduler.py # Planificateur automatique +├── templates/ # Templates HTML +│ ├── index.html # Interface web principale +│ └── components/ # Composants réutilisables +├── static/ # Fichiers statiques (CSS, JS) +└── requirements.txt # Dépendances Python ``` ## ⚙️ Configuration -Modifiez ces paramètres dans `main.py` : +Les paramètres peuvent être configurés via variables d'environnement ou fichier `.env` : -```python -download_manager = DownloadManager( - download_dir="downloads", # Répertoire de stockage - max_parallel=3 # Téléchargements simultanés -) +``` +JWT_SECRET_KEY=votre-clé-secrète +DOWNLOAD_DIR=downloads +MAX_PARALLEL_DOWNLOADS=5 ``` ## 🔧 Ajouter un Provider -### Ajouter un Hébergeur de Fichiers - -1. Créez `app/downloaders/myhost.py` : -```python -from .base import BaseDownloader -from bs4 import BeautifulSoup - -class MyHostDownloader(BaseDownloader): - def can_handle(self, url: str) -> bool: - return "myhost.com" in url.lower() - - async def get_download_link(self, url: str) -> tuple[str, str]: - # Extraire le lien de téléchargement direct - response = await self.client.get(url) - soup = BeautifulSoup(response.text, 'lxml') - # ... logique d'extraction ... - return download_url, filename -``` - -2. Ajoutez-le dans `app/providers.py` : -```python -FILE_HOSTS = { - # ... - "myhost": { - "name": "MyHost", - "domains": ["myhost.com"], - "icon": "📁", - "color": "#4ecdc4" - } -} -``` - -### Ajouter un Provider Anime avec Métadonnées - -1. Créez le downloader avec les méthodes requises : -```python -class MyAnimeDownloader(BaseDownloader): - async def search_anime(self, query: str, lang: str = "vostfr", include_metadata: bool = False): - # Implémenter la recherche - - async def get_anime_metadata(self, anime_url: str) -> dict: - # Extraire: synopsis, genres, rating, release_year, studio, etc. - return { - 'synopsis': '...', - 'genres': ['Action', 'Aventure'], - 'rating': '8.5/10', - 'release_year': 2023, - 'studio': 'Studio Name', - # ... - } - - async def get_episodes(self, anime_url: str, lang: str = "vostfr"): - # Retourner la liste des épisodes -``` - -2. Enregistrez-le dans `app/providers.py` et `main.py` - -## 🗺️ Roadmap / Plans Futurs - -### Version 2.2 - Système de Favoris ✅ (Terminé) -- [x] **Favoris** : Sauvegarder les animes favoris avec métadonnées complètes -- [x] **API REST complète** : 6 endpoints pour gérer les favoris -- [x] **Tri et filtrage** : Par titre, rating, année, provider, genre -- [x] **Statistiques** : Distribution par provider et genre -- [x] **Stockage persistant** : Base JSON (favorites.json) - -### Version 2.3 - Base de Données & Authentification -- [ ] **SQLite avec SQLAlchemy** : Persistance complète des données -- [ ] **Système d'authentification local** : - - [ ] Inscription et connexion utilisateur - - [ ] Tokens JWT avec expiration (7 jours) - - [ ] Hachage de mot de passe bcrypt - - [ ] Préférences utilisateur personnalisables -- [ ] **Profils utilisateurs** : - - [ ] Table User : username, email, preferences, admin - - [ ] Historique de téléchargement par utilisateur - - [ ] Historique de visionnage (position, progression) - - [ ] Préférences : langue par défaut, thème, auto-download -- [ ] **Rétrocompatibilité** : Accès anonyme toujours possible - -**Nouveaux endpoints :** -- `POST /api/auth/register` - Inscription -- `POST /api/auth/login` - Connexion (JWT) -- `GET /api/auth/me` - Profil utilisateur -- `PUT /api/auth/me/preferences` - Préférences -- `GET /api/auth/me/download-history` - Historique -- `GET /api/auth/me/watch-history` - Visionnage - -### Version 2.4 - APIs Externes & Recommandations -- [ ] **Intégration Jikan API** (MyAnimeList) : - - [ ] Métadonnées enrichies (poster, notes, genres) - - [ ] Limitation de débit : 3 req/sec -- [ ] **Intégration AniList API** (GraphQL) : - - [ ] Recommandations basées sur l'historique - - [ ] Limitation de débit : 90 req/min -- [ ] **Système de cache** : - - [ ] Cache API dans la base de données - - [ ] TTL configurable (168h par défaut) - - [ ] Mécanisme de fallback (AniList → Jikan) -- [ ] **Enrichissement automatique** : - - [ ] Fusion des données providers + API externes - - [ [ ] Affichage des posters dans les résultats - -**Nouveaux endpoints :** -- `GET /api/anime/metadata?enrich=true` - Métadonnées enrichies -- `GET /api/recommendations` - Suggestions personnalisées - -### Version 2.5 - Webhooks & Automatisation ✅ (Terminé) -- [x] **Support Sonarr Webhook** : - - [x] `POST /api/webhook/sonarr` - Réception événements - - [x] Auto-téléchargement des nouveaux épisodes - - [x] Vérification HMAC SHA256 (optionnel) - - [x] Gestion des événements : Download, Rename, Delete -- [x] **Automatisations** : - - [x] Déclenchement automatique sur nouvel épisode - - [x] Analyse des infos épisodes depuis Sonarr - - [x] Mapping automatique vers les providers - - [x] Système de mapping series Sonarr → anime providers - - [x] Configuration API pour webhooks et mappings - -**Nouveaux endpoints :** -- `POST /api/webhook/sonarr` - Webhook principal Sonarr -- `POST /api/webhook/test/sonarr` - Test de payload -- `GET /api/sonarr/config` - Configuration webhook -- `PUT /api/sonarr/config` - Mise à jour configuration -- `GET /api/sonarr/mappings` - Liste des mappings -- `POST /api/sonarr/mappings` - Créer mapping -- `DELETE /api/sonarr/mappings/{id}` - Supprimer mapping -- `GET /api/sonarr/search` - Rechercher anime -- `GET /api/sonarr/episodes` - Liste épisodes -- `GET /api/sonarr/suggest` - Suggestions mappings -- `POST /api/sonarr/download` - Déclencher téléchargement manuel - -**Documentation :** Voir [docs/SONARR_INTEGRATION.md](docs/SONARR_INTEGRATION.md) - -### Version 2.6 - Gestion de Bibliothèque Avancée -- [ ] **Bibliothèque personnelle** : Gérer sa collection d'anime téléchargés -- [ ] **Statistiques détaillées** : - - [ ] Temps de visionnage total - - [ ] Espace disque utilisé - - [ ] Animes les plus regardés - - [ ] Graphiques de statistiques -- [ ] **Marquage d'épisodes** : - - [ ] Marquer épisodes comme vus/non vus - - [ ] Système de progression automatique - - [ ] Reprendre la lecture là où on s'est arrêté -- [ ] **Listes de lecture** : Créer des playlists personnalisées -- [ ] **Notes personnelles** : Noter les animes et laisser des commentaires - -### Version 2.7 - Qualité et Formats -- [ ] **Sélection de qualité** : Choisir entre 1080p, 720p, 480p -- [ ] **Conversion automatique** : Convertir en différents formats -- [ ] **Compression** : Réduire la taille des fichiers -- [ ] **Extraction de sous-titres** : Télécharger les subs automatiquement -- [ ] **Multi-audio** : Gérer les versions VF/VOSTFR - -### Version 3.0 - Fonctionnalités Sociales & Mobile -- [ ] **Fonctionnalités sociales** : - - [ ] Partage de listes avec amis - - [ ] Système de commentaires et avis - - [ ] Intégration Discord/Telegram (notifications) -- [ ] **Mobile & PWA** : - - [ ] Application mobile native iOS/Android - - [ ] Progressive Web App pour offline - - [ ] Chromecast/AirPlay support - - [ ] Interface optimisée mobile - -### Version 4.0 - Fonctionnalités Avancées -- [ ] **Sauvegarde cloud** : Sync avec Google Drive/Dropbox -- [ ] **Streaming distant** : Regarder partout -- [ ] **Multi-utilisateurs** : Profils et permissions -- [ ] **API publique** : API pour développeurs tiers -- [ ] **Plugins** : Système d'extensions - -### Améliorations Continues -- [ ] **Performance** : Optimisation du chargement et de l'interface -- [ ] **Accessibilité** : Support lecteur d'écran, clavier -- [ ] **Tests automatisés** : Suite de tests E2E -- [ ] **Documentation** : Guides d'utilisation et API -- [ ] **Internationalisation** : Support multilingue complet +Voir la documentation dans le code source pour ajouter de nouveaux providers. ## 🤝 Contribution @@ -394,15 +221,9 @@ Ce projet est à usage éducatif uniquement. Respectez les droits d'auteur et le Ce logiciel est destiné à un usage personnel et éducatif. Les utilisateurs sont responsables de vérifier qu'ils ont le droit de télécharger du contenu protégé par des droits d'auteur dans leur juridiction. -## 📧 Support - -Pour les bugs et suggestions : -- Ouvrez une issue sur GitHub -- Discutez avec la communauté - --- **Développé avec ❤️ pour la communauté anime** -*Version actuelle : 2.1* -*Dernière mise à jour : Janvier 2026* +*Version actuelle : 2.2* +*Dernière mise à jour : Février 2026*