root 9f9df600c1 fix: boutons telechargement fonctionnels + refonte UI downloads (#17, #8)
- Route GET /api/downloads/video/{task_id} pour streamer les videos
- Route POST /api/downloads/{task_id}/retry pour relancer les failed
- Route POST /api/downloads/cancel-all pour annuler tous les actifs
- Barre de progression animee (shimmer + pulse)
- Indicateurs visuels par status (bordures colorees)
- Bouton Retry pour telechargements echoues/annules
- Actions groupees (Nettoyer termines, Tout annuler)
- Compteur de telechargements actifs
- hx-on::after-request pour refresh auto

Closes #17, Closes #8
2026-04-02 22:35:49 +00:00

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_ORIGINS dans le .env si 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

S
Description
No description provided
Readme 8.2 MiB
Languages
Python 75.8%
HTML 10.6%
JavaScript 8.7%
TypeScript 2.5%
CSS 2.3%