Vue normale

UsenetStreamer : addon Stremio pour lier NZBdav et streamer depuis Usenet

Par : Aerya
12 novembre 2025 à 14:57

Je me suis récemment remis sur Stremio notamment en présentant les addons que j’utilise et pourquoi/comment avec leurs composes, sur GitHub, pour pouvoir le faire rapidement de votre côté soit en console soit via DockeGE ou équivalent.
Je viens de publier un article sur NZBdav, que j’utilise depuis des semaines, qui permet de streamer du contenu depuis Usenet.
Donc, en toute logique, voici comment lier les 2 🙂


Grâce au boulot de Sanket qui a créé UsenetStreamer, on peut ajouter NZBdav comme source de flux à Stremio, comme StreamFusion, Comet etc. Il suffit d’avoir également un moteur de recherche de .nzb (logique) tel que Prowlarr ou NZBhydra, je préfère ce dernier.

ATTENTION si vous gérez vos flux avec un cache, tel que Stream Prefetchers comme moi, ça va appeler un bon nombre de .nzb qui seront chargés dans NZBdav, parfois en échec car incompatibles avec du coup une nouvelle recherche.
Ce qui induit un grand nombre de hits et/ou téléchargements via Prowlarr/NZBHydra auprès des indexeurs Usenet dont les limites sont fonctions des dons ou abonnements. Il y a un risque de consommer inutilement ces quotas simplement du fait de la mise en cache des contenus des catalogues.

usenetstreamer4

Quand on ouvre la page d’un film ou d’un épisode de série, tout comme StreamFusion lance la recherche du média chez AllDebrid (dans ma config), UsenetStreamer va la lancer sur NZBhydra et afficher le retour sur Stremio.
Je passe StreamFusion et UsenetStreamer dans AIOStreamers pour modifier le rendu de la liste des releases ET filtrer l’affichage des rlz : 1080/1440/2160p, FRENCH/MULTI, j’exclus les mots complete.bluray et bluray (pour éviter d’avoir des .iso depuis mes indexeurs Usenet) et je tente de trouver le bon combo de filtre du nombre de résultats par addon et résolution pour avoir une liste courte de releases à lancer (sinon j’en ai par exemple eu 64 tout à l’heure ce qui est complètement inutile). – c’est encore perfectible –

On lance le film, ici depuis Usenet, NZBdav charge le .nzb et ça stream de suite dans Stremio. Il faut pour ça un .nzb compatible : sans archive (donc fichier posté sans compression). NZBdav prend en charge les mots de passe.

usenetstreamer7
usenetstreamer8
usenetstreamer6

Et si on tombe sur un .nzb non compatible, il suffit de changer de release puisqu’on en liste quelques-unes de différentes sources. On remarque au passage que cette vidéo est faite par l’IA…

usenetstreamer9
usenetstreamer10


EDIT 18.11.25 : Usenet-Streamer intègre maintenant parfaitement NZBHydra et permet également de trier les résultats par qualité puis taille ou langue puis qualité puis taille. On peut également filtrer sa langue préférée (1 seule) et définir -ou non- une taille maximale de release.

usenetstreamer17



Pour l’installer il faut suivre les recommandations du GitHub, voici à titre d’exemple mon setup avec NZBHydra. Je l’ai ajouté à ma stack sur GitHub.


services:
  stremio-usenetstreamer:
    container_name: stremio-usenetstreamer
    restart: always
    ports:
      - 32867:7000
    environment:
      INDEXER_MANAGER: nzbhydra
      INDEXER_MANAGER_URL: http://192.168.0.163:5076
      INDEXER_MANAGER_API_KEY: NBFQU9ECCN9PIBE6ES00HI1901
      # INDEXER_MANAGER_INDEXERS: xxx
# ne fonctionne pas chez moi, du coup je n'ai activé que l'indexeur que je sais le plus compatible avec NZBdav
      ADDON_SHARED_SECRET: blahbluhbloh
      NZBDAV_URL: http://192.168.0.163:3029
      NZBDAV_API_KEY: 8bc33968842a4257891521d29ba0fb36
      NZBDAV_WEBDAV_URL: http://192.168.0.163:3029
      NZBDAV_WEBDAV_USER: xxx
      NZBDAV_WEBDAV_PASS: xxx
      NZBDAV_CATEGORY: Stremio
      ADDON_BASE_URL: https://stremio-usenetstreamer.xxx.xxx
    image: ghcr.io/sanket9225/usenetstreamer:latest
    labels:
      - com.centurylinklabs.watchtower.enable=true
  nzbhydra2:
    image: lscr.io/linuxserver/nzbhydra2:dev
    container_name: nzbhydra2
    restart: always
    network_mode: container:gluetun-airvpn
    environment:
      TZ: Europe/Paris
      PUID: 0
      PGID: 0
    volumes:
      - /home/aerya/docker/nzbhydra2/data:/config
    labels:
      - com.centurylinklabs.watchtower.enable=true


L’URL de mon addon pour l’ajouter à Stremio sera donc https://stremio-usenetstreamer.xxx.xxx/blahbluhbloh/manifest.json

Bon… j’ai commencé la rédaction ce matin, il est 16h, et entre temps il a publié une version :dev, qui n’a rien à voir ^^
Exit la configuration via les variables, c’est passé en format WebUI !
C’est bogué pour utiliser NZBHydra, il faut passer par Prowlarr, voici le nouveau compose

services:
  stremio-usenetstreamer:
    container_name: stremio-usenetstreamer
    restart: always
    ports:
      - 32867:7000
    environment:
      ADDON_SHARED_SECRET: blahbluhbloh
    image: ghcr.io/sanket9225/usenetstreamer:dev
    labels:
      - com.centurylinklabs.watchtower.enable=true

Je n’active pas le health check, NZBdav s’en occupant déjà avec sa fonction Repair.

usenetstreamer16


Pour vous donner une idée, voici les médias que j’ai lancés dans Stremio pour ce test

usenetstreamer12

Et les stats de NZBHydra pour l’unique indexeur utilisé

usenetstreamer11

Il me semble dangereux d’utiliser une mise en cache pour UsenetStreamers. Étant seul, ou au pire 2 avec Madame, sur Stremio, je peux aisément me passer du cache. Si vous faites de la revente du partage en famille ou entre amis, ça peut être plus compliqué. Et pourtant je pense qu’en terme de qualité de service, le cache peut avoir son intérêt. À creuser !

Loading

NZB Dav : streamer depuis Usenet

Par : Aerya
12 novembre 2025 à 10:28


Déjà fan du streaming dans Plex/Jellyfin depuis des .torrents via Decypharr (pour lequel je propose le compagnon de seed DecypharrSeed), j’avais à l’époque testé Decypharr-Usenet qui donnait des résultats corrects. Le streaming depuis Usenet est prégnant depuis plusieurs mois, divers projets se succèdent et, pour moi, le plus abouti est NZBdav (trouvant AltMount trop… instable).


Il faut évidemment un accès à Usenet via un FAU (je suis chez Eweka, lien sans sponsoring) et un indexeur de .nzbs qui référence des .nzb compatibles (sans archive).

Il agit comme un client de téléchargement SABnzbd pour les *arrs, à la manière de Decypharr, et s’il tombe sur un .nzb non compatible, il remonte alors le fichier en erreur à Radarr/Sonarr qui cherche une source alternative.

Ça s’installe en 2-2 avec Docker, voici mon exemple de compose avec le montage rClone dans lequel peuvent aller lire Plex/Emby/Jellyfin/Radarr/Sonarr/whatever.

Le rclone.conf est à créer selon les directives.

services:
  rclone-nzbdav:
    image: rclone/rclone:latest
    container_name: rclone-nzbdav
    restart: always
    cap_add:
      - SYS_ADMIN
    devices:
      - /dev/fuse
    security_opt:
      - apparmor:unconfined
    volumes:
      - /root/.config/rclone/rclone.conf:/config/rclone/rclone.conf:ro
      - /mnt/nzbdav:/mnt/nzbdav:rshared
      - /mnt/Data/rCloneCache:/mnt/Data/rCloneCache
    command: >
      mount nzb-dav: /mnt/nzbdav --vfs-cache-mode=full --buffer-size=1024
      --dir-cache-time=1s --links --use-cookies --allow-other
      --vfs-cache-max-size=5G --vfs-cache-max-age=180m --allow-non-empty
      --cache-dir /mnt/Data/rCloneCache
    logging:
      driver: json-file
      options:
        max-size: 10m
        max-file: "3"
  nzbdav:
    image: ghcr.io/nzbdav-dev/nzbdav:latest
    container_name: nzbdav
    restart: always
    depends_on:
      - rclone-nzbdav
    environment:
      - PUID=0
      - PGID=0
      - TZ=Europe/Paris
    ports:
      - 3029:3000
    volumes:
      - /mnt/nzbdav:/mnt/nzbdav:rshared
      - /home/aerya/docker/nzbdav:/config
    labels:
      - com.centurylinklabs.watchtower.enable=true


Sur l’accueil sont listés les derniers .nzb chargés, leur état et leur catégorie (« Stremio » c’est pour un artricle à venir). Pour Radarr et Sonarr on verra leurs catégories Movies et Shows.

nzbdav1

On peut parcourir le WEBdav qui est monté par rClone, selon ma configuration, dans /mnt/nzbdav

nzbdav2
nzbdav3
nzbdav4

Côté serveur, c’est bien un montage rClone

aerya@StreamBox:~$ df -H
Filesystem           Size  Used Avail Use% Mounted on
tmpfs                824M  5.6M  818M   1% /run
/dev/sdb2            251G  105G  134G  44% /
tmpfs                4.2G     0  4.2G   0% /dev/shm
tmpfs                5.3M  8.2k  5.3M   1% /run/lock
/dev/sda1            472G   54G  394G  12% /mnt/Data
tmpfs                824M  2.7M  821M   1% /run/user/1000
/dev/sdb2            251G  105G  134G  44% /mnt/decypharr/qbit
nzb-dav:             1.2P     0  1.2P   0% /mnt/nzbdav
decypharr-alldebrid  1.2P     0  1.2P   0% /mnt/decypharr/alldebrid

root@StreamBox:/home/aerya# tree /mnt/nzbdav/
/mnt/nzbdav/
├── completed-symlinks
│   ├── movies
│   ├── Stremio_MOVIE
│   │   ├── A.House.of.Dynamite.2025.MULTi.VF2.HDR.DV.2160p.WEB.H265-SUPPLY
│   │   │   └── A.House.of.Dynamite.2025.MULTi.VF2.HDR.DV.2160p.WEB.H265-SUPPLY.mkv -> /mnt/nzbdav/.ids/5/6/f/7/9/56f79c37-8539-439f-a2a4-2734e4973994
│   │   ├── Road.House.2024.MULTi.HDR.2160p.WEB.H265-UKDHD
│   │   │   └── extracted
│   │   │       └── Road.House.2024.MULTi.HDR.2160p.WEB.H265-UKDHD.mkv -> /mnt/nzbdav/.ids/1/2/0/1/6/120164fd-4fe9-4b84-8475-9f70fb86d89c
│   │   ├── Road.House.2024.MULTi.VF2.SDR.2160p.WEB.H265-FW
│   │   │   └── extracted
│   │   │       └── Road.House.2024.MULTi.VF2.SDR.2160p.WEB.H265-FW.mkv -> /mnt/nzbdav/.ids/b/2/6/6/b/b266b988-9958-465a-ae32-30e5d5a61fcc
│   │   ├── The.Woman.in.Cabin.10.2025.MULTi.DV.2160p.WEB.H265-LOST
│   │   │   └── The.Woman.in.Cabin.10.2025.MULTI.DV.2160p.WEB.H265-LOST.mkv -> /mnt/nzbdav/.ids/e/a/2/1/e/ea21eb64-df23-40ad-87fe-bc56a29f974f
│   │   └── Weapons.2025.MULTi.VFF.VFQ.CUSTOM.Hybrid.2160p.Bluray.REMUX.DV.HDR10P.HEVC-BDHD
│   │       └── Weapons.2025.Multi.VFF.VFQ.Custom.Hybrid.2160p.Bluray.Remux.DV.HDR10P.HEVC-BDHD.mkv -> /mnt/nzbdav/.ids/d/f/9/f/5/df9f5587-1a15-4a58-aa77-6eacdc76b72b
│   ├── Stremio_TV
│   │   └── My.Hero.Academia.The.Movie.Youre.Next.2024.FRENCH.1080p.WEB.x264-SUPPLY
│   │       └── My.Hero.Academia.The.Movie.Youre.Next.2024.FRENCH.1080p.WEB.x264-SUPPLY.mkv -> /mnt/nzbdav/.ids/f/a/2/4/4/fa2441b5-48e2-4d0d-b336-747a6cf3b0bd
│   └── uncategorized
├── content
│   ├── Stremio_MOVIE
│   │   ├── A.House.of.Dynamite.2025.MULTi.VF2.HDR.DV.2160p.WEB.H265-SUPPLY
│   │   │   └── A.House.of.Dynamite.2025.MULTi.VF2.HDR.DV.2160p.WEB.H265-SUPPLY.mkv
│   │   ├── Road.House.2024.MULTi.HDR.2160p.WEB.H265-UKDHD
│   │   │   └── extracted
│   │   │       └── Road.House.2024.MULTi.HDR.2160p.WEB.H265-UKDHD.mkv
│   │   ├── Road.House.2024.MULTi.VF2.SDR.2160p.WEB.H265-FW
│   │   │   └── extracted
│   │   │       └── Road.House.2024.MULTi.VF2.SDR.2160p.WEB.H265-FW.mkv
│   │   ├── The.Woman.in.Cabin.10.2025.MULTi.DV.2160p.WEB.H265-LOST
│   │   │   └── The.Woman.in.Cabin.10.2025.MULTI.DV.2160p.WEB.H265-LOST.mkv
│   │   └── Weapons.2025.MULTi.VFF.VFQ.CUSTOM.Hybrid.2160p.Bluray.REMUX.DV.HDR10P.HEVC-BDHD
│   │       └── Weapons.2025.Multi.VFF.VFQ.Custom.Hybrid.2160p.Bluray.Remux.DV.HDR10P.HEVC-BDHD.mkv
│   ├── Stremio_TV
│   │   └── My.Hero.Academia.The.Movie.Youre.Next.2024.FRENCH.1080p.WEB.x264-SUPPLY
│   │       └── My.Hero.Academia.The.Movie.Youre.Next.2024.FRENCH.1080p.WEB.x264-SUPPLY.mkv
│   └── uncategorized
│       ├── Attentat.du.Bataclan.ils.ont.donne.l.assaut.2025.DOC.FRENCH.720p.WEB.H264-THESYNDiCATE
│       │   └── Attentat.du.Bataclan.ils.ont.donne.l.assaut.2025.DOC.FRENCH.720p.WEB.H264-THESYNDiCATE.mkv
│       ├── Internet.un.geant.tres.vulnerable.2025.DOC.VFF.WEB.1080p.H264.AAC-NoX
│       │   └── extracted
│       │       └── Internet.un.geant.tres.vulnerable.2025.DOC.VFF.WEB.1080p.H264.AAC-NoX.mkv
│       └── The.Lost.Leonardo.2021.DOC.VOSTFR.1080p.BluRay.HDLight.H264.AC3.5.1-ARTHECL0WN
│           └── The.Lost.Leonardo.2021.DOC.VOSTFR.1080p.BluRay.HDLight.H264.AC3.5.1-ARTHECL0WN.mkv
└── nzbs

Les arrs (ou CineSync) viennent taper dans /mnt/nzbdav/content/xxx pour organiser/copier/symlinker les fichiers dans des bibliothèques lisibles dans Plex/Jellyfin.


NZBdav possède également une option de réparation (quand c’est possible, via les .par2)

nzbdav5

Loading

❌