Addon Stremio de scraping FR, repris en main. L amont se surveille, il ne s applique plus tout seul.
  • Python 64%
  • HTML 31.7%
  • JavaScript 3.5%
  • Shell 0.8%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-10-13 08:52:07 +02:00
.github/workflows chore(deps): update docker/setup-buildx-action action to v4 2026-09-09 10:06:06 +02:00
scripts deployer : vérifier la place libre du LXC 112 avant la construction (FOXA-2360) 2026-09-27 10:41:00 +00:00
tests FOXA-2992 : le sink perdait toute ligne journalisee sans bind(context=…) 2026-10-06 04:28:24 +00:00
wastream FOXA-2992 : le sink perdait toute ligne journalisee sans bind(context=…) 2026-10-06 04:28:24 +00:00
.dockerignore fix: .dockerignore — les fichiers .env finissaient dans l'image 2026-08-06 14:01:01 +02:00
.env.example perf(sources): Tr4ker ne se paie plus deux fois, et la recherche a une échéance (FOXA-2584) 2026-09-29 08:42:14 +00:00
.gitignore feat: Lumio devient une source publique, chacun fournissant son manifest 2026-08-16 01:34:12 +02:00
CLAUDE.md FOXA-2992 : le recit dans JOURNAL.md, la reference portee a 34 suites / 552 2026-10-06 04:28:24 +00:00
docker-compose.yml Wacustom — fork WAStream : sources consolidées (Wawacity, Free-Telecharger, Movix, Torznab, Zilean, Nyaa) + torrents AllDebrid + matching anime 2026-07-18 18:42:00 +02:00
Dockerfile Image de base : retour à python:3.14-slim, Renovate borné sous 3.15 (FOXA-3230) 2026-10-13 06:51:21 +00:00
JOURNAL.md FOXA-2992 : le recit dans JOURNAL.md, la reference portee a 34 suites / 552 2026-10-06 04:28:24 +00:00
LICENSE rebase: repart de la base upstream WAStream 3.8.2 2026-08-15 21:12:51 +02:00
pyproject.toml FOXA-3065 : selectolax borné <1.0 (le backend Modest est retiré en 1.0, la collecte des tests échoue) 2026-10-06 03:10:38 +00:00
README.md test: preuve de bout en bout de la chaine de livraison 2026-09-07 22:45:18 +02:00
renovate.json Image de base : retour à python:3.14-slim, Renovate borné sous 3.15 (FOXA-3230) 2026-10-13 06:51:21 +00:00

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, infoHash direct, 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/instant ayant été retiré par AllDebrid, les torrents sont listés uncached avec 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, plages SxxExx-Exx, multi-épisodes, format 2x04, 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_task sans référence forte).
  • Plusieurs pannes silencieuses corrigées : filtres écartant des résultats sans trace, NameError latent 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

  1. Vous configurez une ou plusieurs sources via des variables d'environnement
  2. L'addon interroge ces sources quand Stremio demande les flux d'un titre donné
  3. L'addon convertit les liens de téléchargement direct obtenus en URLs lisibles via le service de débridage de votre choix
  4. 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.

  1. 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
  1. 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:
  1. Démarrer :
docker compose up -d
  1. 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

  1. Cloner le dépôt :
git clone https://github.com/dydy13014/wacustom.git
cd wacustom
  1. Installer les dépendances :
pip install .
  1. Configurer l'environnement :
cp .env.example .env
# Éditez .env selon vos besoins
  1. Démarrer l'application :
python -m wastream.main

Configuration

Ajouter à Stremio

  1. Accéder à http://localhost:7000 dans votre navigateur
  2. Configurer vos clés API de débridage et votre token TMDB
  3. Cliquer sur « Générer le lien »

L'addon apparaîtra dans votre liste d'addons Stremio.

Tableau de bord admin

  1. Définir ADMIN_PASSWORD dans votre fichier .env
  2. Accéder à http://localhost:7000/admin dans votre navigateur
  3. 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 admin
  • ADDON_PASSWORD - protéger votre addon par mot de passe
  • LOG_LEVEL - niveau de log (DEBUG, INFO, ERROR)
  • PROXY_URL - proxy HTTP pour l'accès aux sources
  • PASTEBIN_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.