9f85908ff3
- 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.
5.1 KiB
5.1 KiB
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