Files
ohm_streaming/README.md
T
root a684237725
CI / Test (Python 3.11) (push) Has been cancelled
CI / Test (Python 3.12) (push) Has been cancelled
CI / Lint (push) Has been cancelled
CI / Type Check (push) Has been cancelled
CI / Summary (push) Has been cancelled
Phase 2 Complete: SQL migration with SQLModel and Alembic
2026-03-25 13:46:15 +00:00

128 lines
5.2 KiB
Markdown

# Ohm Stream Downloader
**Application web complète pour rechercher, streamer et télécharger des animes, séries TV et films.**
Interface moderne (SPA-like) avec recherche unifiée, watchlist automatique, métadonnées enrichies, téléchargements parallèles et intégration Sonarr.
## ✨ Fonctionnalités
### 🎬 Recherche & Streaming
- **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, studio via intégration Kitsu.
- **Streaming vidéo** : Lecteur intégré supportant divers hébergeurs.
- **Téléchargement flexible** : Épisode par épisode ou saison complète.
### 📋 Watchlist & Automatisation
- **Suivi intelligent** : Ajoutez des animes à votre watchlist pour ne rater aucun épisode.
- **Auto-Download** : Téléchargement automatique des nouveaux épisodes dès leur sortie.
- **Planificateur (Scheduler)** : Vérification périodique configurable (1h à 168h).
- **Filtres avancés** : Visualisation par statut (Actif, En pause, Terminé).
- **Intégration Sonarr** : Support des webhooks pour une automatisation complète du homelab.
### 🚀 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.
## 🏗️ Architecture (Three-Tier System)
L'application repose sur un système à trois couches pour une robustesse maximale :
1. **Catalogues (Anime/Series Sites)** : Extraction des listes d'épisodes et métadonnées.
2. **Players Vidéo (Video Players)** : Extraction des liens de téléchargement direct depuis les embeds (VidMoly, DoodStream, etc.).
3. **Manager (Download Manager)** : Orchestration asynchrone des transferts de fichiers.
## 📁 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 |
## 📋 Configuration Requise
- **Python 3.11+**
- **Node.js** (pour les tests frontend uniquement)
- **Playwright** (pour l'extraction dynamique sur certains sites)
## 🚀 Installation Rapide
```bash
# Cloner le repository
git clone https://git.lanro.eu/Roman/ohm_streaming.git
cd ohm_streaming
# Environnement Python
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
# Initialisation Playwright (requis pour VidMoly)
playwright install chromium
# Lancer l'application
uvicorn main:app --reload --host 0.0.0.0 --port 3000
```
Accès Web : `http://localhost:3000/web`
## 🧪 Tests & Qualité
```bash
# Backend (Pytest)
pytest # Tous les tests
pytest -m "unit" # Tests unitaires rapides
# Frontend (Vitest & Playwright)
npm test # Tests unitaires JS
npx playwright test # Tests E2E
```
## 🏗️ Structure du Projet
```
Ohm_streaming/
├── main.py # Point d'entrée & API FastAPI
├── app/
│ ├── downloaders/ # Logique d'extraction (Scraping)
│ │ ├── anime_sites/ # Catalogues Anime
│ │ ├── series_sites/ # Catalogues Séries
│ │ └── video_players/ # Extracteurs de liens directs
│ ├── routers/ # Routes API modulaires (Auth, Watchlist, etc.)
│ ├── download_manager.py # Moteur de téléchargement asynchrone
│ ├── watchlist.py # Logique métier du suivi
│ └── scheduler.py # Planificateur de tâches
├── static/ # Frontend (JS Vanilla, CSS)
├── templates/ # Vues Jinja2
└── config/ # Données persistantes (JSON)
```
## 🗺️ Plan d'Évolution Global (Modernisation)
### ✅ Phase 1 : Restructuration (Terminé)
- Migration vers une architecture modulaire pour les downloaders.
- Séparation stricte entre catalogues et hébergeurs vidéo.
- Amélioration de la gestion des erreurs et des retries.
### ✅ Phase 2 : Consolidation & SQL (Terminé)
- Migration complète des fichiers JSON vers **SQLModel** (SQLite).
- Mise en place d'**Alembic** pour les migrations de base de données.
- Centralisation des métadonnées et persistance robuste.
### 🏗️ Phase 3 : UX & Modernisation Frontend (En cours)
- Adoption de **HTMX/Alpine.js** pour dynamiser l'interface.
- Intégration du lecteur vidéo avancé **Plyr.io**.
- Amélioration de la réactivité de la recherche et de la watchlist.
## 📝 Licence & Sécurité
- Ce projet est à usage **éducatif et personnel** uniquement.
- Respectez les droits d'auteur et les conditions d'utilisation des sites sources.
- Ne partagez jamais votre `JWT_SECRET_KEY` en production.
---
**Version actuelle : 2.3**
**Dernière mise à jour : Mars 2026**
**Développé avec ❤️ pour la communauté anime**