Vue lecture

ListSync : un bel outil avec WebUI pour gérer et connecter ses listes avec Overseerr/Jellyseerr

Quelles listes ? Quasi tout ce qui existe : IMDb, Trakt, MDBList, Letterboxd, Steven Lu


ListSync de Woahai321 permet de gérer de manière simple, complète et franchement belle, des listes de contenus multimédia à télécharger. Listes synchronisées avec Overseerr et/ou Jellyseerr pour automatiser les demandes et téléchargements via les *arrs.

L’application est développement très actif.

🔄 Synchronisation automatique

🎬 Prise en charge de plusieurs plateformes de watchlist

🖥 Compatible avec Overseerr et Jellyseerr

⚡ Installation simplifiée avec Docker

📊 Suivi en temps réel – Barres de progression et mises à jour instantanées

📋 Gestion intuitive des listes – Ajoutez, modifiez et organisez vos listes facilement

📈 Analyses complètes – Taux de réussite, indicateurs de performance et données historiques

⚙ Configuration via le web – Gérez tous les paramètres depuis le tableau de bord

🎨 Interface moderne et responsive – Parfaitement adaptée aux ordinateurs, tablettes et mobiles

🌙 Thèmes clair/sombre – Détection automatique des préférences système

Pour cet article, j’installe une instance locale. Mais selon les besoins, le compose et le .env ne sont pas les mêmes. Pour une utilisation/configuration plus poussée, je vous invite à suivre la documentation.

Je place le docker-compose.yml et le .env dans /home/aerya/docker/list-sync. Je n’indique aucune liste dans l’environnement, je ne me servirai que de l’interface Web.

J’utilise la version :main qui est la stable. J’ai ajouté la MàJ automatique du docker via un label Watchtower comme à mon habitude. Et j’ai mis en dur la timzeone mais ça marche aussi via le .env

Le compose

services:
  listsync-full:
    image: ghcr.io/woahai321/list-sync:main
    container_name: listsync
    ports:
      # Frontend (Next.js Dashboard) 
      - "3222:3222"
      # Backend API (FastAPI)
      - "4222:4222"
    environment:
      # Timezone Configuration (set to Europe/London for BST/GMT, change as needed)
      - TZ=Europe/Paris
      
      # Overseerr Configuration 
      - OVERSEERR_URL=${OVERSEERR_URL}
      - OVERSEERR_API_KEY=${OVERSEERR_API_KEY}
      - OVERSEERR_USER_ID=${OVERSEERR_USER_ID:-1}
      - SYNC_INTERVAL=${SYNC_INTERVAL:-24}
      - AUTOMATED_MODE=true
      - OVERSEERR_4K=${OVERSEERR_4K:-false}
      
      # List Configuration (comma-separated)
      - IMDB_LISTS=${IMDB_LISTS}
      - TRAKT_LISTS=${TRAKT_LISTS}
      - LETTERBOXD_LISTS=${LETTERBOXD_LISTS}
      - MDBLIST_LISTS=${MDBLIST_LISTS}
      - STEVENLU_LISTS=${STEVENLU_LISTS}
      - TRAKT_SPECIAL_LISTS=${TRAKT_SPECIAL_LISTS}
      - TRAKT_SPECIAL_ITEMS_LIMIT=${TRAKT_SPECIAL_ITEMS_LIMIT}      

      # Optional Discord webhook
      #- DISCORD_WEBHOOK_URL=${DISCORD_WEBHOOK_URL}
      
      # Internal API URL for frontend
      - NEXT_PUBLIC_API_URL=${NEXT_PUBLIC_API_URL:-http://0.0.0.0:4222/api}
      
      # Docker-specific settings
      - RUNNING_IN_DOCKER=true
      - NO_SANDBOX=1
      - DISPLAY=:99
    volumes:
      # Persist data directory
      - /home/aerya/docker/list-sync/data:/usr/src/app/data
      # Mount environment file
      - /home/aerya/docker/list-sync/.env:/usr/src/app/.env
      # Optional: Mount logs for debugging
      - /home/aerya/docker/list-sync/logs:/var/log/supervisor
    restart: always
    labels:
      - com.centurylinklabs.watchtower.enable=true
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:4222/api/system/health", "&&", "curl", "-f", "http://localhost:3222"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 60s
    # Note: Complete ListSync application with:
    # - Core sync service (python -m list_sync)
    # - FastAPI backend (port 4222)
    # - Next.js frontend (port 3222)
    # All managed by supervisor for reliability 


Et le .env avec les variables. Donc me concernant uniquement l’URL d’Overseerr et ma clé API. Je ferai le reste depuis la WebUI.

#=======================================================================
# ListSync Full Local Deployment Environment Configuration
# This file contains all variables needed for complete local deployment
# Copy this to .env and configure your values
#=======================================================================

# === Core Required Configuration ===
# Your Overseerr/Jellyseerr API key (REQUIRED)
OVERSEERR_API_KEY=xxxMQ==

# Your Overseerr/Jellyseerr URL (REQUIRED)
OVERSEERR_URL=https://demande.domain.tld

# === Optional Discord Notifications ===
# Discord webhook URL for notifications (leave blank to disable)
DISCORD_WEBHOOK_URL=

# Timezone (set to your local timezone)
TZ=UTC+2

#=======================================================================

# === Local Development Domains ===
# Frontend domain (Next.js Dashboard) 
FRONTEND_DOMAIN=http://localhost:3222
# Backend API domain (FastAPI Server)
BACKEND_DOMAIN=http://localhost:4222

# === API Configuration ===
# This will be used by the frontend to call the API
NEXT_PUBLIC_API_URL=http://localhost:4222/api

# === CORS Configuration ===
# Allow frontend domain to access backend API
CORS_ALLOWED_ORIGINS=http://localhost:3222,http://0.0.0.0:3222,http://127.0.0.1:3222

#=======================================================================

# === List Configuration ===
# Configure which lists to sync (comma-separated)

# IMDb Lists (examples: "top", "popular", or specific list IDs)
IMDB_LISTS=

# Trakt Lists (specific list IDs)
TRAKT_LISTS=

# Trakt Special Lists (trending, collected, watched)
TRAKT_SPECIAL_LISTS=
TRAKT_SPECIAL_ITEMS_LIMIT=20

# Letterboxd Lists
LETTERBOXD_LISTS=

# MDBList Lists
MDBLIST_LISTS=

# Steven Lu Lists
STEVENLU_LISTS=

# === Sync Configuration ===
# User ID in Overseerr (usually 1 for admin)
OVERSEERR_USER_ID=1

# Sync interval in hours (24 = once per day)
SYNC_INTERVAL=24

# Enable automated mode (true/false)
AUTOMATED_MODE=true

# Enable 4K requests (true/false)
OVERSEERR_4K=false

#=======================================================================
# NOTE: This is the FULL LOCAL DEPLOYMENT configuration
# - Web UI will be available at http://localhost:3222
# - API server will run at http://localhost:4222
# - Core sync functionality will run automatically
# - All services managed by Docker Compose
#======================================================================= 

listsync2

Les options sont sommaires mais suffisantes

listsync3

Je peux ajouter une liste de test. Attention, les listes peuvent être pratiques mais risquent également d’ajouter un paquet de fichiers en téléchargement d’un coup voire lors d’une mise à jour (toutes les 24h ici).
Je teste ça avec Decypharr et le cache d’AllDebrid donc je ne crains rien (hormis indexer des trucs qui ne m’intéressent pas plus que ça) mais il faut faire attention si on télécharge réellement des .torrents, encore plus sur des trackers privés. Idem avec des indexeurs Usenet où on est parfois limité en API hit ou téléchargement, c’est un coup à tuer le quota mensuel en 3 minutes.

listsync13

J’utilise une top liste du super MDBList.com. Une petite « liste « Top Movies of the week » de 10 items pour tester.

listsync4

Et je l’exécute maintenant, je vais attendre 24h pour terminer ce tuto

listsync7

Et là… entre l’ajout à Overseerr, l’envoie à Radarr, la rechercher sur Prowlarr, le DL simulé par Decypharr (donc la recherche dans le cache d’AllDebrid), la validation dans Radarr, l’ajout dans Plex et la mise à jour des jaquettes par Kometa, ça a pris environ 3 minutes. LA VACHE !
J’en avais déjà certains, quand même.

listsync6
listsync8
listsync9
listsync10

Oui. Alors là on visualise bien pourquoi je ne suis pas fan des listes « des autres » pour ma consommation personnelle. Je vais clairement virer Dragons, Elio, KPop et Bad Guys… Chacun ses goûts.
En revanche, pour partager ça avec d’autres, c’est pratique de prendre des listes Netflix, Disney, Apple, HBO etc, surtout avec des jaquettes et collections par Kometa. Mais je ne m’aventure pas sur ce terrain là, mon plaisir est de découvrir, tester et partager des « retex ».

listsync11

De retour sur SyncList, on peut visualiser l’état des synchronisations et les déclencher manuellement (global ici ou par liste sur l’onglet Lists)

listsync14

Et on profite de quelques stats

listsync15

Un bel outil pour qui aime les listes.

Loading

  •  

SuggestArr : recommandations de contenus avec intégration Plex/Emby/Jellyfin/Overseerr/jellyseerr


J’avais complètement zappé de présenter le fabuleux SugestArr il y a quelques mois, remédions à ça de suite !

On ajoute tous les contenus découverts sur le Web, sur IMDB, TMDB, Trakt, par des connaissances, via des forums, via Overseerr ou Jellyseerr…

Cet outil de guiseppe99barchetta devrait vous ravir puisqu’il permet d’avoir des recommandations personnalisées et est, je trouve, relativement complet :

  • Prise en charge multi-médias : compatible avec Jellyfin, Plex et Emby pour récupérer le contenu.
  • Intégration TMDb : recherche de films et séries similaires via TMDb.
  • Requêtes automatisées : envoie des demandes de téléchargement pour les contenus recommandés vers Jellyseer ou Overseerr.
  • Interface web : interface conviviale pour la configuration et la gestion.
  • Journaux en temps réel : visualiser et filtrer les logs en direct (ex. INFO, ERROR, DEBUG).
  • Sélection des utilisateurs : possibilité de choisir quels utilisateurs peuvent initier des requêtes, avec gestion et validation des contenus demandés automatiquement.
  • Gestion des tâches cron : modification du planning des cron jobs directement depuis l’interface web.
  • Pré-validation de configuration : vérifie automatiquement les clés API et les URLs lors de l’installation.
  • Filtrage de contenu : exclut les demandes de contenus déjà disponibles sur les plateformes de streaming dans votre pays.
  • Support de bases de données externes : possibilité d’utiliser PostgreSQL ou MySQL en plus de SQLite pour plus de performance et d’évolutivité.

Y’a pas d’application AndroidTV/smarthone mais c’est responsive et on peut automatiser les ajouts.

Pour l’utiliser il faut une clé API TMDB et évidemment une ou des instances Plex/Emby/Jellyfin et Oberseerr/Jellyseerr.

services:
  suggestarr:
    image: ciuse99/suggestarr:latest
    container_name: SuggestArr
    restart: always
    ports:
      - 5000:5000
    volumes:
      - /mnt/user/appdata/suggestarr:/app/config/config_files
    labels:
      - com.centurylinklabs.watchtower.enable=true


Une fois lancé, on se connecte avec notre lecteur favori, on ajoute une clé TMDB

suggestarr1

Dans le cas de Plex, ça liste les serveurs disponibles (pour faire simple j’ai sélectionné un local) et ça en détaille les librairies et utilisateurs. On peut aussi mettre une URL directement

suggestarr9

On enchaine avec Overseerr ou Jellyseerr

suggestarr8

Je reste sur du SQLite. Si vous voulez une BDD robuste à part, il faut revoir le docker-compose pour l’ajouter

suggestarr4

Configuration rapide :

  • Note minimale sur TMDB et nombre minimum d’avis,
  • Je n’inclus pas le contenu sans note
    J’exclus le contenu déjà téléchargé et/ou vu
  • Je n’exclus aucun genre ni aucun service (Disney+, Netflix, Youtube, Canal+…)
  • Je sélectionne English pour la langue originale des contenus que je veux en recommandation. Je ne suis absolument pas fan de Plus belle la vie et autres trucs français. Je préfère les séries US notamment. Précision : ça ne limite pas aux contenus produits en langue anglais mais ça la priorise
  • Et je souhaite des recommandations de contenus produits à partir des années 90
suggestarr5
  • Pour chaque film en historique de lecture je veux 8 suggestions, 5 pour chaque série,
  • Suggestarr me fera des recommandations par rapport aux 5 derniers contenus lus,
  • Le Search Size définissant combien de suggestions en tout je demande (si j’ai bien pigé ?)
    Et le cron, pour l’exécution. J’ai changé après la capture, j’ai mis toutes les 6h (0 */6 * * *)
suggestarr6

Et la récap de fin avant le 1er lancement

suggestarr10

Et ça ajoute les recommandations dans Overseerr ou Jellyseerr selon votre configuration. Attention du coup si, comme moi, tout est automatiquement validé, ça peut vite accroître les bibliothèques !
Mon setup étant tout récent je n’ai hélas pas de screen à vous montrer mais vous pouvez voir ce que ça donne avec la fin de cette vidéo YouTube avec UNRAiD.

Loading

  •