The Jinja2 namespace update was missing the _key mapping, causing 'str object has no attribute providers' error when rendering HTML search results.
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. Propulsée par FastAPI, SQLModel et une interface dynamique HTMX/Alpine.js.
✨ Fonctionnalités
🎬 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), 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.
- 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.
⭐ 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 :
- Backend : Python 3.11+, FastAPI pour l'API asynchrone.
- Base de Données : SQLModel (SQLAlchemy + Pydantic) avec SQLite.
- 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 | 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 uniquement)
- Playwright (requis pour l'extraction de certains lecteurs comme VidMoly)
2. Installation
# Cloner le repository
git clone https://git.lanro.eu/Roman/ohm_streaming.git
cd ohm_streaming
# Créer et activer l'environnement virtuel
python3 -m venv venv
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 (optionnel, pour l'extraction VidMoly)
playwright install chromium
3. Configuration
Créez un fichier .env à la racine du projet à partir du modèle :
cp .env.example .env
Générez une clé secrète JWT sécurisée (obligatoire, min. 32 caractères) :
python3 -c "import secrets; print(secrets.token_urlsafe(32))"
Editez le .env et ajoutez :
JWT_SECRET_KEY=<la_clé_générée_ci_dessus>
⚠️ Ne pas définir
CORS_ORIGINSdans le.envsi vous utilisez les valeurs par défaut (format JSON requis, les valeurs par défaut du code suffisent).
4. Lancement
# Lancer l'application (Port 3000 par défaut)
source venv/bin/activate
uvicorn main:app --reload --host 0.0.0.0 --port 3000
Ou via le script fourni :
./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é
# Backend (Pytest)
pytest # Tous les tests
pytest -m "unit" # Tests unitaires rapides
# Frontend (Vitest & Playwright)
npm install # Installer les dépendances dev
npm test # Tests unitaires JS (Vitest)
npx playwright test # Tests E2E complets
🏗️ Structure du Projet
ohm_streaming/
├── main.py # Point d'entrée & Middleware FastAPI
├── app/
│ ├── 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 (~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, 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.
- Respectez les droits d'auteur et les conditions d'utilisation des sites sources.
- L'utilisation de ce logiciel est sous votre entière responsabilité.
Version actuelle : 2.4 Dernière mise à jour : Avril 2026 Développé avec ❤️ pour la communauté anime