Vue normale

Reçu aujourd’hui — 27 août 2025

Swaparr : dégager les Torrents bloqués des *arrs (stalled)

Par :Aerya
27 août 2025 à 07:13


Utilisateurs de qBittorrent, combien de fois avons-nous vu un .torrent marqué « stalled » ? Un téléchargement bloqué pour X raison et Sonarr ou Radarr qui attend… attend… encore et toujours…

Les *arrs n’ont pas d’outil de détection des téléchargements bloqués.

Swaparr comble cette lacune, très simplement.


Pour lancer le Docker, on met les instances qu’on souhaite, je teste avec les 2 que j’ai. J’ai mis les IP:port mais on peut mettre une URL sans le backslash de fin

services:
  radarr:
    image: ghcr.io/thijmengthn/swaparr:latest
    container_name: swaparr-radarr
    restart: unless-stopped
    environment:
      - BASEURL=http://192.168.0.163:7878
      - APIKEY=xxx        
      - PLATFORM=radarr
      - MAX_STRIKES=3
      - SCAN_INTERVAL=10m
      - MAX_DOWNLOAD_TIME=
      - IGNORE_ABOVE_SIZE=25GB
      - REMOVE_FROM_CLIENT=true
      - DRY_RUN=false
  sonarr:
    image: ghcr.io/thijmengthn/swaparr:latest
    container_name: swaparr-sonarr
    restart: unless-stopped
    environment:
      - BASEURL=http://192.168.0.163:8989
      - APIKEY=xxx         
      - PLATFORM=sonarr
      - MAX_STRIKES=3
      - SCAN_INTERVAL=10m  
      - MAX_DOWNLOAD_TIME=2h  
      - IGNORE_ABOVE_SIZE=25GB
      - REMOVE_FROM_CLIENT=true
      - DRY_RUN=false

J’ai tout laissé par défaut mais on peut régler les variables

NameDefaultDescription
BASEURLhttp://127.0.0.1:7878The URL of a radarr, sonarr or other starr instance.
APIKEY7f3a8..cbc07The API key of a radarr, sonarr or other starr instance.
PLATFORMradarrIndicates the type of starr platform, either radarr, sonarr, lidarr, readarr or whisparr.
MAX_STRIKES3Maximum number of strikes a download can accumulate before it is removed.
SCAN_INTERVAL10mHow often Swaparr checks for stalled downloads.
MAX_DOWNLOAD_TIME2hMaximum allowed download time before it’s considered stalled.
IGNORE_ABOVE_SIZE25GBFiles larger than this size will be ignored and not monitored.
REMOVE_FROM_CLIENTtrueRemove from both queue and download client (default) OR false only the queue of a starr instance.
DRY_RUNfalseSandbox mode; try Swaparr without it performing destructive actions on your instances.

Swaparr gère les clients de téléchargement BitTorrent liés aux *arrs, toute les 10 minutes avec cette configuration.
Et l’instance *arr pourra donc aller chercher un autre .torrent

aerya@StreamBox:~$ sudo docker logs swaparr-radarr

 ── Swaparr ───── 

╭─╮ Platform: radarr
│ │ Max strikes: 3
│ │ Scan interval: 10m
│ │ Max download time: 2h
│ │ Ignore above size: 25GB
╰─╯ Remove from client: true

╭─╮ Be part of Swaparr's journey ⭐ Star us on GitHub!
╰─╯ Your support strengthens the open-source community.

 ──────────────── 


╭──────────────────────────────────────────────────────────────────────────╮
│                            No downloads found                            │
╰──────────────────────────────────────────────────────────────────────────╯

 ─ Checking again in 10m..


╭──────────────────────────────────────────────────────────────────────────╮
│                            No downloads found                            │
╰──────────────────────────────────────────────────────────────────────────╯

 ─ Checking again in 10m..


╭──────────────────────────────────────────────────────────────────────────╮
│                            No downloads found                            │
╰──────────────────────────────────────────────────────────────────────────╯

 ─ Checking again in 10m..

Loading

SeasonArr : remplacer des épisodes manquants dans Sonarr par des packs de saisons

Par :Aerya
27 août 2025 à 06:29

Sonarr est conçu pour chercher automatiquement des épisodes et non des packs. Il peut arriver qu’il manque au moins 1 épisode de saison et c’est… pénible de devoir aller chercher ça à la main.
d3v1l1989 a créé SeasonArr qui règle ce problème en permettant de chercher un pack de saison puis remplacer les épisodes déjà télécharger. Cet outil, en 1 clic, remplace la recherche interactive de Sonarr.

Mon setup *arrs/Plex étant tout frais, pour ces séries d’articles, il ne me manque rien en dehors d’épisodes non parus en MULTi/VF donc mes screen ne seront pas révélateurs. « pas de bol »

Il faut préalablement créer une clé JWT soit en console si nodejs est installé (sudo apt install nodejs) soit via ce site par exemple.

node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"

Le Docker

services:
  seasonarr:
    image: ghcr.io/d3v1l1989/seasonarr:latest
    container_name: seasonarr
    restart: unless-stopped
    hostname: seasonarr
    ports:
      - 3027:8000
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Paris
      - DATABASE_URL=sqlite:///./data/seasonarr.db
      - JWT_SECRET_KEY=032cb57bd9a0ed97c62a46518aaa3cf2ba9d256da92e17e75e75d282ad5cda87
    volumes:
      - /home/aerya/docker/seasonarr:/app/data
      - /etc/localtime:/etc/localtime:ro


Une fois le compte créé on peut lier une ou plusieurs instances Sonarr


seasonarr1

Seasonarr indexe alors les séries et on peut lister celles où il manque des épisodes. Comme indiqué plus haut, mon exemple n’est pas révélateur puisqu’il me manque seulement ces 2 épisodes qui existent en VOSTFR mais non en MULTi/VF comme je les veux.

seasonarr2

Mais si pour une série il manque des épisodes dans des saisons « parues », on peut alors cliquer sur Season It! et Seasonarr se servira des indexeurs de l’instance Sonarr pour aller chercher des packs complets et remplacer tous les épisodes individuels complétés et manquant pour les saisons sélectionnées.
On peut le faire par saison ou pour la série complète.

seasonarr3

Il n’y a pas d’automatisation du process vu que ce n’est à faire qu’une fois de temps en temps, en théorie.
Les options sont sommaires mais suffisantes.

seasonarr4

Je viens de faire le test avec Got, je n’ai pas demandé à Sonarr de chercher les épisodes pour passer directement par Seasonarr

seasonarr11

Après avoir cliqué sur Season It! (global, pas apr saison), Sonarr s’est bien mis en recherche

seasonarr12

Et ça a suivi

seasonarr13

Loading

❌