# Ohm Stream Downloader **Application web complète pour télécharger des animes 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. ## ✨ 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 - **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 ### 📁 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) ### 🎥 Hébergeurs Vidéo Supportés - **VidMoly** (vidmoly.to, vidmoly.com) - **SendVid** (sendvid.com) ### 🚀 Gestion des Téléchargements - **Téléchargements parallèles** : Jusqu'à 3 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 - **Responsive** : Fonctionne sur desktop et mobile - **Mise à jour automatique** : Rafraîchissement chaque seconde - **Métadonnées visuelles** : Affichage des informations anime avec icônes ### 🔌 API REST - **Endpoints REST** : Intégration facile avec d'autres applications - **Documentation automatique** : Swagger UI disponible ## 📋 Configuration Requise - Python 3.8+ - pip ## 🚀 Installation ```bash # Cloner le repository git clone https://github.com/votre-user/Ohm_streaming.git cd Ohm_streaming # Créer l'environnement virtuel python3 -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate # Installer les dépendances pip install -r requirements.txt # Lancer le serveur de développement uvicorn main:app --reload --host 0.0.0.0 --port 3000 ``` Accédez à l'interface : http://localhost:3000/web ## 📖 Utilisation ### Interface Web 1. **Onglet Recherche d'Anime** : - Entrez le nom d'un anime (ex: "Naruto", "One Piece") - 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 2. **Onglet Lien Direct** : - Collez un lien de téléchargement direct - Cliquez sur "Télécharger" 3. **Onglet Providers** : - Utilisez les onglets spécifiques à chaque provider - Chaque onglet a ses propres options de recherche ### API Endpoints #### Téléchargements | Méthode | Endpoint | Description | |---------|----------|-------------| | POST | `/api/download` | Créer un nouveau téléchargement | | GET | `/api/downloads` | Lister tous les téléchargements | | GET | `/api/download/{task_id}` | Statut d'un téléchargement | | POST | `/api/download/{task_id}/pause` | Mettre en pause | | POST | `/api/download/{task_id}/resume` | Reprendre | | DELETE | `/api/download/{task_id}` | Annuler/Supprimer | | 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`) | | POST | `/api/anime/download` | Télécharger un épisode | | POST | `/api/anime/download-season` | Télécharger toute une saison | #### Streaming Vidéo | 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 | ### Exemples API **Rechercher un anime avec métadonnées :** ```bash curl "http://localhost:3000/api/anime/search?q=naruto&lang=vostfr&include_metadata=true" ``` **Obtenir les épisodes d'un anime :** ```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 \ -H "Content-Type: application/json" \ -d '{"url": "https://1fichier.com/?xxxxx"}' ``` ## 🏗️ Structure du Projet ``` 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 ``` ## ⚙️ Configuration Modifiez ces paramètres dans `main.py` : ```python download_manager = DownloadManager( download_dir="downloads", # Répertoire de stockage max_parallel=3 # Téléchargements simultanés ) ``` ## 🔧 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 - Améliorations des Métadonnées - [ ] **Affichage des posters** : Afficher les images de couverture dans les résultats de recherche - [ ] **Filtrage avancé** : Filtrer par genre, année, studio, statut - [ ] **Tri des résultats** : Par popularité, date, note - [ ] **Favoris** : Sauvegarder les animes favoris - [ ] **Historique** : Voir les animes récemment consultés ### Version 2.3 - Gestion de Bibliothèque - [ ] **Bibliothèque personnelle** : Gérer sa collection d'anime téléchargés - [ ] **Statistiques** : Temps de visionnage, espace disque utilisé - [ ] **Listes de lecture** : Créer des playlists personnalisées - [ ] **Marquage** : Marquer les épisodes comme vus/non vus - [ ] **Notes personnelles** : Noter les animes et laisser des commentaires ### Version 2.4 - 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 2.5 - Fonctionnalités Sociales - [ ] **Partage de listes** : Partager ses playlists avec amis - [ ] **Recommandations** : Suggestions basées sur l'historique - [ ] **Notes et avis** : Système de commentaires - [ ] **Intégration Discord/Telegram** : Notifications de nouveaux épisodes ### Version 2.6 - Mobile et Applications - [ ] **Application mobile** : App native iOS/Android - [ ] **PWA** : Progressive Web App pour offline - [ ] **Cast** : Chromecast/AirPlay support - [ ] **Download sur mobile** : Interface optimée mobile ### Version 3.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 ## 🤝 Contribution Les contributions sont les bienvenues ! 1. Fork le projet 2. Créez une branche (`git checkout -b feature/AmazingFeature`) 3. Commit (`git commit -m 'Add some AmazingFeature'`) 4. Push (`git push origin feature/AmazingFeature`) 5. Ouvrez une Pull Request ## 📝 Licence Ce projet est à usage éducatif uniquement. Respectez les droits d'auteur et les lois locales. ## ⚠️ Avertissement 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*