# 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). - **Métadonnées riches** : Synopsis, genres, notes, studio via intégration Kitsu. - **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. ### 📋 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. ### 🚀 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 & 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. ## 📁 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, **OneUpload** | ## 🚀 Installation & Configuration ### 1. Prérequis - Python 3.11+ - Node.js (pour les tests optionnels) - Playwright (requis pour l'extraction de certains lecteurs comme VidMoly) ### 2. Installation ```bash # 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 # Initialisation Playwright playwright install chromium ``` ### 3. Configuration Créez un fichier `.env` à la racine du projet (voir `.env.example`). **Note importante sur la sécurité :** Générez une clé secrète JWT sécurisée. ```bash # Commande pour générer une clé secrète python3 -c "import secrets; print(secrets.token_urlsafe(32))" ``` ### 4. Lancement ```bash # Lancer l'application (Port 3000 par défaut) 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 complets ``` ## 🏗️ Structure du Projet ``` Ohm_streaming/ ├── main.py # Point d'entrée & Middleware FastAPI ├── app/ │ ├── downloaders/ # Logique d'extraction (Scraping 3-tier) │ ├── models/ # Modèles SQLModel & Pydantic │ ├── routers/ # Routes API modulaires │ ├── download_manager.py # Moteur de téléchargement asynchrone │ ├── watchlist.py # Logique métier du suivi │ └── database.py # Configuration de la base de données ├── alembic/ # Migrations de base de données ├── static/ # Frontend (JS, CSS, Img) ├── templates/ # Vues Jinja2 (avec HTMX & Alpine.js) └── downloads/ # Répertoire par défaut des médias ``` ## 📝 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 : Mars 2026** **Développé avec ❤️ pour la communauté anime**