9f85908ff336d369e682b3773e0a031975bbba52
- Modernized the frontend with HTMX for server-driven UI and Alpine.js for client state. - Refactored anime, player, and recommendation logic into modular routers. - Updated README.md to reflect the latest project state and technologies (v2.4). - Added Plyr.io for an improved streaming experience. - Improved project structure with componentized templates. - Added Playwright and Vitest configuration for frontend testing.
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
# 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.
# Commande pour générer une clé secrète
python3 -c "import secrets; print(secrets.token_urlsafe(32))"
4. Lancement
# 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é
# 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
Description
Languages
Python
75.8%
HTML
10.6%
JavaScript
8.7%
TypeScript
2.5%
CSS
2.3%