docs: Enhance README with comprehensive feature documentation
Add detailed documentation for: - Anime search and download features (4 providers) - File host and video host support - Download management and web interface - Complete API endpoints reference - Usage examples and configuration guide - Provider addition guide - Detailed roadmap for future versions Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering>
This commit is contained in:
@@ -1,18 +1,57 @@
|
|||||||
# Ohm Stream Downloader
|
# Ohm Stream Downloader
|
||||||
|
|
||||||
Web application pour télécharger des fichiers depuis divers hébergeurs (1fichier, Doodstream, Rapidfile, etc.).
|
**Application web complète pour télécharger des animes et fichiers depuis divers hébergeurs.**
|
||||||
|
|
||||||
## Fonctionnalités
|
Interface moderne avec recherche d'anime, métadonnées enrichies, téléchargements parallèles et streaming vidéo.
|
||||||
|
|
||||||
- **Multi-hébergeurs** : Support pour 1fichier, Doodstream, Rapidfile et plus
|
## ✨ 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
|
- **Téléchargements parallèles** : Jusqu'à 3 téléchargements simultanés
|
||||||
- **Pause/Reprise** : Mettez en pause et reprenez vos téléchargements
|
- **Pause/Reprise** : Contrôle total sur vos téléchargements
|
||||||
- **Interface web moderne** : Interface intuitive avec progression en temps réel
|
- **Progression en temps réel** : Vitesse, progression, taille
|
||||||
- **API REST** : Intégration facile avec d'autres applications
|
- **Reprise automatique** : Support des HTTP Range pour reprendre les téléchargements interrompus
|
||||||
|
|
||||||
## Installation
|
### 🌐 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
|
```bash
|
||||||
|
# Cloner le repository
|
||||||
|
git clone https://github.com/votre-user/Ohm_streaming.git
|
||||||
|
cd Ohm_streaming
|
||||||
|
|
||||||
# Créer l'environnement virtuel
|
# Créer l'environnement virtuel
|
||||||
python3 -m venv venv
|
python3 -m venv venv
|
||||||
source venv/bin/activate # Windows: venv\Scripts\activate
|
source venv/bin/activate # Windows: venv\Scripts\activate
|
||||||
@@ -20,48 +59,35 @@ source venv/bin/activate # Windows: venv\Scripts\activate
|
|||||||
# Installer les dépendances
|
# Installer les dépendances
|
||||||
pip install -r requirements.txt
|
pip install -r requirements.txt
|
||||||
|
|
||||||
# Lancer le serveur
|
# Lancer le serveur de développement
|
||||||
uvicorn main:app --reload --host 0.0.0.0 --port 8000
|
uvicorn main:app --reload --host 0.0.0.0 --port 3000
|
||||||
```
|
```
|
||||||
|
|
||||||
## Utilisation
|
Accédez à l'interface : http://localhost:3000/web
|
||||||
|
|
||||||
|
## 📖 Utilisation
|
||||||
|
|
||||||
### Interface Web
|
### Interface Web
|
||||||
|
|
||||||
Ouvrez votre navigateur sur : http://localhost:8000/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
|
||||||
|
|
||||||
Collez simplement un lien de téléchargement et cliquez sur "Télécharger".
|
2. **Onglet Lien Direct** :
|
||||||
|
- Collez un lien de téléchargement direct
|
||||||
|
- Cliquez sur "Télécharger"
|
||||||
|
|
||||||
### API
|
3. **Onglet Providers** :
|
||||||
|
- Utilisez les onglets spécifiques à chaque provider
|
||||||
|
- Chaque onglet a ses propres options de recherche
|
||||||
|
|
||||||
**Créer un téléchargement :**
|
### API Endpoints
|
||||||
```bash
|
|
||||||
curl -X POST http://localhost:8000/api/download \
|
|
||||||
-H "Content-Type: application/json" \
|
|
||||||
-d '{"url": "https://1fichier.com/?xxxxx"}'
|
|
||||||
```
|
|
||||||
|
|
||||||
**Lister les téléchargements :**
|
#### Téléchargements
|
||||||
```bash
|
|
||||||
curl http://localhost:8000/api/downloads
|
|
||||||
```
|
|
||||||
|
|
||||||
**Mettre en pause :**
|
|
||||||
```bash
|
|
||||||
curl -X POST http://localhost:8000/api/download/{task_id}/pause
|
|
||||||
```
|
|
||||||
|
|
||||||
**Reprendre :**
|
|
||||||
```bash
|
|
||||||
curl -X POST http://localhost:8000/api/download/{task_id}/resume
|
|
||||||
```
|
|
||||||
|
|
||||||
**Annuler :**
|
|
||||||
```bash
|
|
||||||
curl -X DELETE http://localhost:8000/api/download/{task_id}
|
|
||||||
```
|
|
||||||
|
|
||||||
## API Endpoints
|
|
||||||
|
|
||||||
| Méthode | Endpoint | Description |
|
| Méthode | Endpoint | Description |
|
||||||
|---------|----------|-------------|
|
|---------|----------|-------------|
|
||||||
@@ -72,35 +98,236 @@ curl -X DELETE http://localhost:8000/api/download/{task_id}
|
|||||||
| POST | `/api/download/{task_id}/resume` | Reprendre |
|
| POST | `/api/download/{task_id}/resume` | Reprendre |
|
||||||
| DELETE | `/api/download/{task_id}` | Annuler/Supprimer |
|
| DELETE | `/api/download/{task_id}` | Annuler/Supprimer |
|
||||||
| GET | `/api/download/{task_id}/file` | Télécharger le fichier terminé |
|
| 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 |
|
| GET | `/web` | Interface web |
|
||||||
|
|
||||||
## Structure du Projet
|
### 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/
|
Ohm_streaming/
|
||||||
├── main.py # Application FastAPI
|
├── main.py # Application FastAPI & endpoints API
|
||||||
├── app/
|
├── app/
|
||||||
│ ├── models/ # Modèles de données
|
│ ├── models/ # Modèles Pydantic
|
||||||
│ ├── downloaders/ # Extracteurs de liens par hébergeur
|
│ │ └── __init__.py # DownloadTask, AnimeMetadata, etc.
|
||||||
│ └── download_manager.py # Gestionnaire de téléchargements
|
│ ├── 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
|
├── downloads/ # Fichiers téléchargés
|
||||||
├── templates/
|
├── templates/
|
||||||
│ └── index.html # Interface web
|
│ ├── index.html # Interface web principale
|
||||||
└── static/ # Fichiers statiques
|
│ └── player.html # Lecteur vidéo
|
||||||
|
├── static/ # Fichiers statiques (CSS, JS, images)
|
||||||
|
└── requirements.txt # Dépendances Python
|
||||||
```
|
```
|
||||||
|
|
||||||
## Ajouter un Hébergeur
|
## ⚙️ Configuration
|
||||||
|
|
||||||
Pour ajouter le support d'un nouvel hébergeur :
|
Modifiez ces paramètres dans `main.py` :
|
||||||
|
|
||||||
1. Créez un fichier dans `app/downloaders/` (ex: `myhost.py`)
|
```python
|
||||||
2. Héritez de `BaseDownloader`
|
download_manager = DownloadManager(
|
||||||
3. Implémentez `can_handle(url)` et `get_download_link(url)`
|
download_dir="downloads", # Répertoire de stockage
|
||||||
4. Ajoutez le downloader dans `app/downloaders/__init__.py`
|
max_parallel=3 # Téléchargements simultanés
|
||||||
|
)
|
||||||
|
```
|
||||||
|
|
||||||
## Configuration
|
## 🔧 Ajouter un Provider
|
||||||
|
|
||||||
- `max_parallel` : Nombre maximum de téléchargements simultanés (défaut: 3)
|
### Ajouter un Hébergeur de Fichiers
|
||||||
- `download_dir` : Répertoire de stockage (défaut: "downloads")
|
|
||||||
|
|
||||||
Modifiez ces paramètres dans `main.py`.
|
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*
|
||||||
|
|||||||
Reference in New Issue
Block a user