- Python 64%
- HTML 31.7%
- JavaScript 3.5%
- Shell 0.8%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
|
||
| .github/workflows | ||
| scripts | ||
| tests | ||
| wastream | ||
| .dockerignore | ||
| .env.example | ||
| .gitignore | ||
| CLAUDE.md | ||
| docker-compose.yml | ||
| Dockerfile | ||
| JOURNAL.md | ||
| LICENSE | ||
| pyproject.toml | ||
| README.md | ||
| renovate.json | ||
Wacustom
Fork de WAStream (10ho / spel, MIT). Wacustom regroupe plusieurs sources francophones et internationales dans un seul addon, pensé pour être branché comme source unique dans un agrégateur (AIOStreams) plutôt que d'empiler plusieurs conteneurs.
Ce que ce fork ajoute par rapport à WAStream
Sources
- Consolidation en un seul addon : Wawacity, Free-Telecharger, Movix, Webshare, Zone-Telechargement, trackers Torznab (YggReborn, Tr4ker, Torr9, C411, V3X), Zilean et Nyaa — évite de maintenir 4-5 conteneurs séparés.
- Scraper Nyaa (flux RSS,
infoHashdirect, sans clé API) : anime via Kitsu, et contenu live action japonais. La recherche essaie aussi les titres alternatifs TMDB — Nyaa n'indexe quasiment jamais un titre français, mais répond sur le titre international (cas réel : « Comme les grands » → 0 résultat, « Old Enough » → 3). - Scraper UNIT3D natif (Gemini, Generation-Free) et scraper Zilean (index DMM public).
- Aligné sur WAStream 3.8.2 : le fork repart de la base upstream et y réapplique ses correctifs, plutôt que de porter les nouveautés une par une (Turbobit, lecture résiliente et scraper Pastebin, autrefois portés à la main, sont désormais natifs).
Débridage
- Torrents AllDebrid : flux
magnet → upload → ready → files → unlock. L'endpoint/magnet/instantayant été retiré par AllDebrid, les torrents sont listésuncachedavec débridage à la demande. - Détection proactive du statut des hébergeurs AllDebrid (statut serveur + quota restant, un quota critique étant traité comme indisponible).
- Correction : Premiumize écartait silencieusement tous les résultats torrent.
Pertinence des résultats
- Matching d'épisodes robuste (
episode_matches) : numérotation absolue, mappings de saisons, plagesSxxExx-Exx, multi-épisodes, format2x04, packs de saison. - Filtre anti-poison : écarte les torrents dont la taille est incohérente avec la résolution annoncée (cas réels : « 1080p BluRay » à 698 Mo, « 1080p » à 231 Go). Désactivé hors films, un épisode pouvant légitimement peser 20× moins.
- Packs de saison retrouvés sur Torznab : requête construite en saison seule, certains trackers ne remontant pas un pack si la requête contient un numéro d'épisode.
- Dédoublonnage interne entre sous-sources, complémentaire à celui d'AIOStreams.
- Corrections de détection de langue (un titre japonais romanisé comme « Kimi No Na Wa » matchait « no » = norvégien) et de pertinence (les accents et apostrophes rejetaient de vrais résultats : « Charlie's Angels », « Amélie »).
Fiabilité
- Ne plus interroger les sources hors ligne + seconde chance sur Torznab.
- Correction d'un verrou de scrape plus long que le délai du client appelant, qui renvoyait zéro flux alors que le scraping aboutissait.
- Correction d'une tâche de fond annulable par le ramasse-miettes (
asyncio.create_tasksans référence forte). - Plusieurs pannes silencieuses corrigées : filtres écartant des résultats sans trace,
NameErrorlatent sur les séries Kitsu sans épisode.
Sécurité
- Limitation des tentatives sur les routes vérifiant un mot de passe (10 échecs / 10 min par IP).
- Durcissement du chiffrement et du hachage.
.dockerignore: sans lui, les fichiers.env(donc les clés API en clair) finissaient dans les images construites localement.- Retrait des URLs de trackers privés codées en dur dans les valeurs par défaut.
Qualité de code
- 156 tests (
pytest), ciblés sur les fonctions ayant déjà produit un bug réel — chaque test verrouille une régression précise :pip install -e ".[test]" && pytest - Intégration continue : image multi-architecture (
amd64/arm64) publiée automatiquement sur GHCR à chaque push.
Addon Stremio non officiel qui transforme des liens de téléchargement direct (DDL) en URLs lisibles en streaming via des services de débridage
⚠️ Avertissement important
Wacustom est un utilitaire générique de résolution de liens. C'est un outil technique qui prend un lien de téléchargement direct en entrée et renvoie une URL lisible en streaming en sortie, en utilisant un service de débridage comme intermédiaire.
Cet outil n'héberge, ne distribue, ne fournit et ne promeut aucun contenu. Il est agnostique quant au contenu par conception : il se contente de traiter le lien que l'utilisateur configure.
Cas d'usage légitimes :
- Lire ses propres sauvegardes personnelles stockées sur des hébergeurs de fichiers
- Accéder à du contenu du domaine public ou sous licence Creative Commons
- Stockage auto-hébergé et gestion de fichiers personnels
- Distribution de logiciels open source via DDL
- Tout contenu auquel l'utilisateur a légalement le droit d'accéder
En utilisant cet outil, vous acceptez que :
- Vous êtes seul responsable de vous assurer que vous avez le droit légal d'accéder au contenu traité
- Vous devez respecter toutes les lois applicables sur le droit d'auteur dans votre juridiction
- Vous devez respecter les conditions d'utilisation des sources et services que vous configurez
- Le développeur décline toute responsabilité en cas de mauvais usage de cet outil
À propos
Wacustom est un addon Stremio qui convertit des liens de téléchargement direct en contenu lisible instantanément via des services de débridage. Il fournit un pipeline générique et configurable de scraping et de résolution, adaptable à n'importe quelle source DDL via des variables d'environnement.
Fonctionnement
- Vous configurez une ou plusieurs sources via des variables d'environnement
- L'addon interroge ces sources quand Stremio demande les flux d'un titre donné
- L'addon convertit les liens de téléchargement direct obtenus en URLs lisibles via le service de débridage de votre choix
- Stremio lit le flux obtenu
Ce que fait Wacustom
- Scraping générique de sources : interface de scraper configurable, compatible avec n'importe quelle source compatible
- Intégration débridage : résout les DDL en URLs lisibles via les services de débridage
- Cache intelligent : système de cache avec verrouillage distribué pour des performances optimales
- Vérification de disponibilité instantanée : vérifie la disponibilité du lien avant lecture
- Filtrage avancé : filtre par qualité, langue, taille, etc.
- Support multi-langue : gère plusieurs pistes audio et langues de sous-titres
- Enrichissement des métadonnées : intègre TMDB et Kitsu pour des métadonnées complètes
Fonctionnalités
Types de contenu supportés
- Films / Séries / Anime
Services de débridage supportés
- AllDebrid - support multi-hébergeurs
- TorBox - support multi-hébergeurs
- Premiumize - support multi-hébergeurs
- 1Fichier - 1Fichier premium direct
- NZBDav - Usenet via SABnzbd + WebDAV
Fonctions intelligentes
- Vérification de cache instantanée - vérifie la disponibilité avant conversion
- Traitement round-robin - algorithme optimisé de vérification des liens
- Filtrage par qualité - filtre par résolution (4K, 1080p, 720p, etc.)
- Filtrage par langue - support multi-langue et sous-titres
- Filtrage par taille - filtre par taille de fichier
- Dédoublonnage - masque les résultats identiques provenant d'hébergeurs différents
- Protection par mot de passe - protection optionnelle de l'addon par mot de passe
- Support base de données - SQLite ou PostgreSQL
- Scraper Pastebin - import automatique de liens depuis des URLs de paste externes, planifié
- Cache des réponses HTTP - mise en cache optionnelle basée sur les ETag pour les réponses de flux
- Intégration Kitsu - métadonnées anime via l'API Kitsu avec mapping des chaînes de saisons
Tableau de bord admin
- Statistiques - utilisateurs, recherches, flux, stats de cache
- Logs en direct - visualiseur de logs en temps réel avec filtrage
- État des sources - surveille la santé des sources et du proxy
- Infos système - utilisation RAM/CPU, état de la base de données
- Gestion des liens morts - ajouter/supprimer des liens morts
- WASource - ajouter des liens personnalisés compatibles avec tous les services de débridage
- Système distant - partager les liens morts, le cache et les liens personnalisés entre instances
- Scraper Pastebin - état et stats des tâches d'import automatique
Installation
Pour la configuration de l'environnement, voir
.env.example
Docker Compose (recommandé)
Une image est publiée automatiquement (multi-arch amd64/arm64) sur GitHub Container Registry à chaque push sur main : ghcr.io/dydy13014/wacustom:latest. Pas besoin de cloner ni de builder pour l'utiliser.
- Récupérer la config d'exemple :
curl -O https://raw.githubusercontent.com/dydy13014/wacustom/main/.env.example
cp .env.example wacustom.env
# Éditez wacustom.env selon vos besoins
docker-compose.yml:
services:
wacustom:
image: ghcr.io/dydy13014/wacustom:latest
container_name: wacustom
env_file:
- wacustom.env
volumes:
- wacustom-data:/app/data
ports:
- "7000:7000"
restart: unless-stopped
volumes:
wacustom-data:
- Démarrer :
docker compose up -d
- Consulter les logs :
docker compose logs -f wacustom
Build local (alternative)
Pour modifier le code ou builder vous-même l'image :
git clone https://github.com/dydy13014/wacustom.git
cd wacustom
cp .env.example wacustom.env
# Éditez wacustom.env selon vos besoins
docker compose up -d --build
(le docker-compose.yml du dépôt utilise build: . au lieu de l'image publiée)
Installation manuelle
Prérequis
- Python 3.11 ou supérieur
- Git
Étapes
- Cloner le dépôt :
git clone https://github.com/dydy13014/wacustom.git
cd wacustom
- Installer les dépendances :
pip install .
- Configurer l'environnement :
cp .env.example .env
# Éditez .env selon vos besoins
- Démarrer l'application :
python -m wastream.main
Configuration
Ajouter à Stremio
- Accéder à
http://localhost:7000dans votre navigateur - Configurer vos clés API de débridage et votre token TMDB
- Cliquer sur « Générer le lien »
L'addon apparaîtra dans votre liste d'addons Stremio.
Tableau de bord admin
- Définir
ADMIN_PASSWORDdans votre fichier.env - Accéder à
http://localhost:7000/admindans votre navigateur - Se connecter avec votre mot de passe admin
Variables d'environnement
Voir .env.example pour toutes les options de configuration disponibles.
Requis :
SECRET_KEY- clé de chiffrement des configs utilisateur (min. 32 caractères) - générer avec :openssl rand -hex 32- Au moins une URL de source doit être configurée (voir
.env.example) - Clé API de débridage - configurée via l'interface web
- Token API TMDB - configuré via l'interface web
Optionnels :
ADMIN_PASSWORD- mot de passe du tableau adminADDON_PASSWORD- protéger votre addon par mot de passeLOG_LEVEL- niveau de log (DEBUG, INFO, ERROR)PROXY_URL- proxy HTTP pour l'accès aux sourcesPASTEBIN_SCRAPER_URLS- liste JSON d'URLs de paste pour l'import automatique- Et bien d'autres… (voir
.env.example)
Dépannage
Debug
# Vérification de santé
curl http://localhost:7000/health
# Logs Docker
docker compose logs -f wacustom
# Activer le mode debug
LOG_LEVEL=DEBUG python -m wastream.main
Licence
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.
Clause de non-responsabilité
Wacustom est un projet non officiel, développé de manière indépendante.
- Non affilié à Stremio ni à aucun fournisseur de source/service
- Fourni « tel quel », sans aucune garantie d'aucune sorte
- Aucun contenu n'est hébergé, distribué ou promu par ce projet
- Le développeur décline toute responsabilité quant à l'usage que les utilisateurs font de cet outil
C'est un outil technique aux usages légitimes. Il est de la seule responsabilité de l'utilisateur de s'assurer que son usage respecte les lois sur le droit d'auteur, les conditions d'utilisation et les réglementations applicables dans sa juridiction. Le développeur n'approuve, ne soutient ni ne cautionne aucun usage illégal de ce logiciel.
Si vous êtes un ayant droit et pensez que cet outil est utilisé de manière abusive, notez que ce dépôt ne contient qu'un utilitaire générique de résolution de liens et n'héberge, ne lie ni ne référence aucun contenu protégé spécifique. Toute demande de retrait doit être adressée aux sources réelles du contenu contrefaisant, et non à cet outil technique.