Vue normale

Reçu avant avant-hier

CineSync : organiser ses librairies sans les arrs

Par :Aerya
5 octobre 2025 à 11:16

Les *arrs c’est du « chinois » pour vous ? Vous n’avez pas de machine assez puissante pour les faire tourner en sus d’un lecteur ? Vous voulez faire simple ?


CineSync, qui s’installe en Docker et peut tourner sur des machines peu puissantes avec 1 core et 1GB de RAM, permet, via une clé API (gratuite) TMDB, d’indexer et trier un dossier de fichiers en vrac (films et séries uniquement). Ça trie et organise via des symlinks (liens qui ne prennent aucune place) pour pouvoir ensuite profiter de ça via Plex/Jellyfin/Emby/Kodi ou un lecteur type VLC. Ce n’est pas un lecteur, juste un organiseur.

Pratique si vous avez accès à un FTP, un remote rClone, des APIs RealDebrid, AllDebrid ou TorBox, un montage NFS/sshFS… enfin n’importe quel espace de stockage avec des films et séries.

EDIT 06.10.25 : DjNiklos insiste à juste titre sur le fait qu’on peut combiner les dossiers sources en les séparant par des ,

Monitoring manuel ou automatique évidemment.

Je le teste avec mon montage AllDebrid de Decypharr, le dossier _ _ all _ _ où tous les fichiers sont en vrac. Le travail peut prendre un peu de temps selon la quantité de fichiers à traiter, les ressources allouées (cores/RAM) et les options demandées.

cinesync3

Et ça donne ce genre de tri (j’ai aucun contenu pour enfants mais ça les met à part également)

root@StreamBox:/mnt/Bibliothèques# ls CineSync/
4KMovies  4KShows  CineSync  Movies  Shows
cinesync4

Le dossier CineSync = Collections, quand on demande leur création

Y’a plus qu’à indexer ça avec son lecteur favoris ou y accéder avec VLC ou autre et c’est nickel !

🔄 Supervision et automatisation en temps réel

CineSync intègre des fonctions avancées de surveillance et d’automatisation en temps réel, assurant une bibliothèque multimédia toujours parfaitement organisée — sans aucune intervention manuelle.
Son interface web moderne offre un contrôle complet sur les paramètres d’automatisation et la supervision en direct de toutes les activités de traitement.


🧠 Système de surveillance intelligent

  • Détection instantanée : des algorithmes avancés repèrent immédiatement les nouveaux fichiers via les événements du système de fichiers.
  • Mode auto-traitement : activez ou désactivez le traitement automatique directement depuis l’interface web, pour un fonctionnement totalement mains libres.
  • Intégration streaming : les serveurs multimédias (Plex, Jellyfin, Emby) sont mis à jour en temps réel pour des bibliothèques toujours à jour.
  • Prévention des doublons : le système évite intelligemment le retraitement des mêmes contenus.

🤖 Flux de travail automatisés

  • Analyse initiale intelligente : un scan complet et une réorganisation de la bibliothèque au démarrage.
  • Surveillance continue : détection en temps réel des nouveaux fichiers, avec intervalles configurables.
  • Traitement en lot : gestion efficace de multiples fichiers grâce au traitement parallèle.
  • Récupération automatique : nouvelle tentative sur les opérations échouées, avec temporisation exponentielle.

📊 Tableau de bord en temps réel

  • Statistiques en direct : visualisez instantanément la progression et l’état de la bibliothèque.
  • Suivi des ajouts récents : traçabilité automatique des contenus récemment ajoutés.
  • File d’attente visible : surveillance graphique des opérations en cours et à venir.

La surveillance en temps réel de CineSync est désormais une fonctionnalité native des scripts et images Docker, assurant une intégration fluide dans votre flux de travail.
Grâce à elle, la gestion de votre médiathèque devient automatique et sans effort.


⚙ Automatisation personnalisable

  • Planification flexible : configurez les intervalles de surveillance et les horaires de traitement.
  • Règles spécifiques par contenu : appliquez des logiques différentes pour les films, séries, animés ou contenus jeunesse.
  • Nettoyage intelligent : suppression automatique des liens symboliques cassés et des entrées orphelines dans la base de données.

🔗 Intégration avec les serveurs multimédias

  • Jellyfin / Emby : actualisation instantanée via des liens symboliques compatibles inotify.
  • Plex : mise à jour automatique des bibliothèques grâce à l’API Plex.
  • Streaming direct : accès en temps réel aux contenus organisés par plusieurs méthodes.

Le système d’automatisation de CineSync transforme la gestion des médias d’une corvée manuelle en un processus fluide, intelligent et permanent.


🎯 Séparation intelligente des contenus

  • Contenu jeunesse : détection automatique des médias familiaux via les classifications TMDB (G, PG, TV-Y, TV-G, TV-PG) et les genres familiaux.
  • Organisation 4K : détection et séparation automatique des contenus UHD dans des dossiers dédiés.
  • Classification animés : gestion spécifique pour les animés, avec tri distinct entre films et séries.
  • Tri par résolution : classement intelligent selon la qualité vidéo (720p, 1080p, 4K, etc.).

📁 Options d’organisation flexibles

  • Structure CineSync : organisation simplifiée en dossiers Movies et Shows.
  • Préservation de la structure source : possibilité de conserver les arborescences d’origine.
  • Nommage personnalisé : configuration libre des noms de dossiers selon le type de contenu.
  • Regroupement par collections : organisation automatique des sagas et franchises dans des répertoires communs.

Ça s’installe simplement en Docker :

services:
  cinesync:
    image: sureshfizzy/cinesync:latest
    container_name: cinesync
    restart: unless-stopped
    environment:
      - PUID=0
      - PGID=0
    ports:
      - 8082:8082
      - 5173:5173
    volumes:
      - /home/home
      - /mnt:/mnt
      - /home/aerya/docker/cinesync/db:/app/db
networks: {}

Plutôt que de tout configurer via l’interface Web, on peut y adjoindre un .env. Fichier à placer dans le dossier /home/aerya/docker/cinesync/db dans mon cas, le montage local de /app/db. Le fichier de base est ici et il faut surtout y configurer la clé API TMDB et les dossiers source/destination.

# Directory Paths
# ========================================
# Source directory for input files
SOURCE_DIR="/mnt/decypharr/alldebrid/__all__"

# Destination directory for output files
DESTINATION_DIR="/mnt/Bibliothèques/CineSync"


Comme les *arrs quand ils travaillent sur les fichiers hébergés chez AllDebrid, accessibles dans /mnt/decypharr/alldebrid/_ _ all _ _, CineSync va les organiser et structurer localement via des symlinks dans /mnt/Bibliothèques/CineSync où Plex/Jellyfin/whatever pourra les indexer et lire.

cinesync
admin/admin si vous ne changez pas dans la config
cinesync1
si pas de .env, il faut tout configurer via la WebUI
cinesync2

Et il n’y qu’à le laisser travailler ensuite

cinesync5
cinesync4
cinesync6

On peut éditer chaque fiche de contenu indexé pour déplacer vers un autre dossier selon l’orga de chacun (moi je laisse CineSync faire par défaut) et/ou éditer les informations d’un média.

cinesync7
cinesync8
cinesync9

On peut suivre et éditer/corriger l’indexation

cinesync10
cinesync11

La configuration est entièrement éditable via la WebUI

cinesync12
cinesync13
cinesync14
cinesync15
cinesync16

Et il peut même se faire passer pour Radarr et Sonarr auprès de Bazarr pour la gestion automatisée des sous-titres !

cinesync17

C’est vraiment super bien fait et très pratique quand on récupère « juste » un accès à une API ou un montage rClone dont on ne maitrise pas le contenu…

Loading

Un nouveau souffle pour vos jaquettes : Aura et MediUX au service de Plex, Emby et Jellyfin

Par :Aerya
11 septembre 2025 à 15:48

Je zyeute MediUX depuis très longtemps mais le côté « Faut parcourir le site, télécharger le .zip, l’importer dans mon lecteur, l’appliquer » m’avait clairement rebuté dès les… 52 premières secondes.

L’équipe derrière MediUX propose l’outil Aura, encore en early stage donc on utilise tous une unique clé API de « test », qui permet de parcourir les sets liés à ses bibliothèques via une WebUI.

Ne reste qu’à choisir un set et l’appliquer de suite via un clic ou le prévoir pour une mise à jour automatique en cron. Et on peut en plus lui indiquer de surveiller les MàJ du set sélectionné pour les appliquer.

Si on peut l’intégrer à Kometa, en revanche pour Aphrodite il faut bien veiller à faire mouliner Aura puis ensuite Aphrodite pour les overlays. Comme vous le verrez plus bas, Aura se lance à minuit chaque jour alors qu’Aphrodite est lancé chaque heure. Au pire, il n’y a plus aucun overlay entre minuit et 1h du matin, « pas grave ».

Cet outil se destine aux amateurs de beaux visuels et de personnalisation.
Malgré un maximum d’automatisation, rien ne pourra remplacer l’action de parcourir ses contenus et,
pour chaque, de parcourir à leur tour les embellissements disponibles pour ensuite les appliquer.

Merci TiMac pour la belle découverte !

demo movie

🧩 Compatibilité multi-serveurs : fonctionne avec Plex, Emby et Jellyfin.

🖼 Navigation visuelle : prévisualisez les visuels dans une interface claire et organisée.

🔁 Mises à jour automatiques : enregistrez les ensembles d’images choisis et gardez-les synchronisés automatiquement.

🗄 Stockage local : possibilité d’enregistrer les images à côté de vos fichiers multimédias pour un accès facile.

📦 Support Docker : déploiement simple avec Docker ou docker-compose.

Le docker-compose est à récupérer localement et on peut l’éditer rapidement pour l’adapter

services:
  aura:
    image: ghcr.io/mediux-team/aura:latest
    container_name: aura
    restart: always
    ports:
      - 3064:3000 # Web UI PORT
      - 8888:8888 # API PORT
    volumes:
      - /home/aerya/docker/aura:/config
      - /mnt/Bibliothèques/:/data/media
    labels:
      - com.centurylinklabs.watchtower.enable=true


Avant de le lancer il convient de faire de même avec le fichier de configuration. Son remplissage est déterminant pour le fonctionnement d’Aura. Les paramètres ne sont en effet pour l’instant accessibles qu’en lecture seule via l’interface.
Vous pouvez vous aider de la documentation mais c’est pas compliqué.

Voici le mien pour Jellyfin, avec 2 bibliothèques, SANS authentification (derrière Authelia chez moi), avec notifications Discord. Si vous voulez utiliser un mot de passe, il devra être hashé.
Il faudra une clé API Jellyfin (ou un token Plex) et une clé API (pas le token) TMDB.
Le cron servira pour la MàJ auto (si sélectionnée) des sets, on voit ça plus bas.

# Configuration Sample - aura
# For full documentation, see: https://mediux-team.github.io/AURA/config

# This file should be located in /config on the docker container

# Auth - Configuration for authentication
# This is used to configure the authentication for the application.
#   Enable - Whether to enable authentication or not.
#   Password - The Argon2id hashed password for the user.
Auth:
    Enable: false
    Password: $argon2id$v=19$m=12,t=3,p=1$Z3k1YnkwZzh5OTAwMDAwMA$lJDoyKZy1BMifB1Mb2SWFQ
    
# CacheImages - Whether to cache images or not. Caching images can improve performance but will use more disk space.
CacheImages: true

# SaveImageNextToContent - Whether to save images next to the Media Server content or not.
#   If set to true, images will be saved in the same directory as the Media Server content.
#   If set to false, images will still be updated on the Media Server but will not be saved next to the content.
#   The benefit of this is that you have local images that are not dependent on the Media Server database in case of migration.
#   If you are using Emby or Jellyfin, this option being set does not matter. This is determined by Emby or Jellyfin.
#   If you are using Plex, this option will determine if the images are saved next to the content or not.
SaveImageNextToContent: false

# Logging - Configuration for logging
#   Level - The level of logging. Can be one of: TRACE, DEBUG, INFO, WARNING, ERROR
Logging:
    Level: DEBUG

# AutoDownload - Configuration for auto-downloading images
#   Enabled - Whether to enable auto-downloading of images or not.
#     You have the option when selecting a set to save it to the database.
#     This will look for updates to the set and download them automatically.
#   Cron - The cron schedule for auto-downloading images. This is a standard cron expression.
#     For example, "0 0 * * *" means every day at midnight
AutoDownload:
    Enabled: true
    Cron: "0 0 * * *"

# Notifications - Configuration for notifications
#   Enabled - Whether to enable notifications or not.
#   Providers - A list of notification providers to use. Currently supported providers are:
#     - Discord
#     - Pushover
# You can set multiple providers at the same time. aura will send notifications to all. You also have the option to enable each provider. This gives you flexability to turn off the ones that you don't want to use. 
# When provider is Discord, you must set the Webhook URL
# When provider is Pushover, you must set the Token and UserKey
# Sample: 
#   - Provider: "Pushover"
#     Enabled: true
#     Pushover:
#         Token: your_pushover_token
#         UserKey: your_pushover_user_key
#   - Provider: "Discord"
#     Enabled: true
#     Discord:
#         Webhook: your_discord_webhook_url
Notifications:
    Enabled: true
    Providers: 
      - Provider: "Discord"
        Enabled: true
        Discord:
            Webhook: "https://canary.discord.com/api/webhooks/xxx"
      - Provider: "Pushover"
        Enabled: false
        Pushover:
            Token: your_pushover_api_token
            UserKey: your_pushover_user_key

# MediaServer - Configuration for your Media Server
#   Type - The type of Media Server. This can be one of: Plex, Jellyfin, Emby
#   URL - The URL of the Media Server. This should be the IP:Port of the Media Server or your Media Server reverse proxy domain.
#   Token - The token for the Media Server. This can be found in the Media Server web interface.
#   Libraries - A list of libraries to scan for images. Each library should have the following fields:
#     - Name: The name of the library to scan for content. Please note that this application will only work on Movies and Series libraries.
#   SeasonNamingConvention - The season naming convention for Plex. This is a Plex exclusive requirement. This can be one of: 1 or 2. This will default to 2
#     1 - Season 1  (non-padded)
#     2 - Season 01 (padded)
MediaServer:
    Type: "Jellyfin" # The type of Media Server. This can be one of: Plex, Jellyfin, Emby
    URL: https://jelly.domaine.tld:443
    Token: xxx
    Libraries:
        - Name: "Films"
        - Name: "Séries"
#        - Name: "4K Movies"
#        - Name: "4K Series"
#    SeasonNamingConvention: 1 # This is a Plex exclusive requirement. This is the season naming convention for Plex. This can be one of: 1 or 2

# Kometa - Configuration for Kometa
#   RemoveLabels - Whether to remove labels or not. This will remove all specific labels from the Media Server Item.
#   Labels - A list of labels to add to the Media Server Item. This will be used to identify the item in the Media Server.
#   This is also a Plex exclusive requirement. This will only work on Plex.
Kometa:
    RemoveLabels: false
    Labels:
        - "Overlay"


# TMDB - Configuration for TMDB (The Movie Database) This is not used yet.
#   ApiKey - The API key for TMDB. This can be obtained by creating an account on TMDB and generating an API key.
TMDB:
    ApiKey: xxx

# Mediux - Configuration for Mediux
#   Token - The token for Mediux. This can be obtained by creating an account on Mediux and generating a static token.
# !!!! NOTE: This is not yet available to the public. It is currently in development and will be available in the future.
#       If you would like to test this app, you will need a MedUX. You can contact us on Discord to get access.
#   DownloadQuality: The quality of the images to download. Options are: "original" or "optimized"
Mediux:
    Token: N_l1upAQrVJ05J6Fwjz89HEoo348l1u-
    DownloadQuality: "optimized"

Une fois lancé ça indexe nos contenus globaux ou par bibliothèque, avec un minimum de tri. Et ça ffiche les posters actuels. Aphrodite n’est pas encore passé mettre des overlays.

aura2

De là on peut sélectionner 1 film ou 1 série et parcourir les sets MediUX tout en visualisant le poster actuel. En l’occurrence, pour Carnivàle j’ai le choix entre 3 sets. C’est pas foufou MAIS des gens ont pris le temps de les réaliser et partager sur MediUX alors merci à eux.

aura3
aura4

Aura indique si c’est ou non déjà en base de données

aura5

Tout est expliqué et détaillé dans la documentation (en anglais, mais on est en 2025, donc go les d’jeuns ! – je suis de 73- ).

La sélection d’un set de série offre plusieurs choix :
– Poster : l’affiche de la série
– Backdrop : l’image d’arrière plan si vous avez activé l’option dans Plex/.Jellyfin
– Season poster : les affiches des saisons
– Auto DL : vérifiera périodiquement les nouvelles mises à jour de cet ensemble. C’est utile si vous souhaitez télécharger et appliquer automatiquement les nouvelles titlecards ajoutées lors de futures mises à jour de cet ensemble. C’est à ça que cert le cron entré dans la configuration.

  • – Future updates ONLY : ne téléchargera rien pour le moment. C’est utile si vous avez déjà téléchargé l’ensemble et que vous souhaitez uniquement appliquer les mises à jour futures. Par exemple uniquement 1x par jour.

    Notez qu’il n’y a pas toujours de backdrop de proposé.
aura6
aura7

Et je constate la mise à jour dans la foulée sur Jellyfin

aura8

On peut parcourir les sets proposés par un utilisateur par rapport à nos contenus indexés par Aura, pratique si on apprécie son travail et qu’on veut en profiter pour d’autres séries ou films.

aura9

Il y a une option Kometa, pour conserver ou non les overlays après la MàJ d’une affiche. Je n’ai pas testé.
On peut déjà utiliser des sets MediUX via Kometa mais ça semble vraiment fastidieux. Aura est encore tout jeune mais il y a fort à parier qu’il y aura une bonne intégration à/de Kometa dans le futur.

Loading

Recommendarr : recommandations Plex/Jellyfin/arrs par l’IA

Par :Aerya
10 septembre 2025 à 16:16


Ok, y’a déjà whatmille solutions de recommandations et découverte de contenus : les listes prises à droite à gauche et ajoutées aux arrs ou à ListSync, Overseerr/Jellyseerr, Suggestarr etc BAH EN VOICI UNE DE PLUS !

Recommendarr de fingerthief permet d’avoir des recommandations faites par une IA à partir des contenus vus sous Plex/Jellyfin, Trakt, Tautulli (eh non ! pas encore mort) et de ceux indexés par Radarr et Sonarr.
Attention, tous les synopsis etc sont en anglais.

Quand je parle d’IA, c’est vaste et comprend l’autohébergé (j’ai testé avec OpenAI) :

Services d’IA compatibles

Vous pouvez utiliser n’importe lequel de ces services avec une API compatible OpenAI :

  • OpenAI : URL par défaut (https://api.openai.com/v1) avec votre clé API OpenAI
  • LM Studio : URL locale (ex. http://localhost:1234/v1) exécutant des modèles sur votre ordinateur
  • Ollama : URL locale (ex. http://localhost:11434/v1) pour des modèles hébergés en local
  • Anthropic Claude : API d’Anthropic avec l’URL de base appropriée
  • Auto-hébergé : votre propre serveur d’API LLM compatible avec OpenAI
  • Mistral, Groq, Cohere : la plupart des fournisseurs d’IA avec des endpoints compatibles OpenAI


Honnêtement, vu que je passe 90% de mon temps à tester des trucs plutôt qu’à profiter de mon setup, les recommandations que j’ai sont certes logiques (plus que celles de TMDB, en bas des fiches du moins) mais je ne sais pas si elles reflètent vraiment la qualité de cet outil. Ce dont je ne doute pas.

L’installation est simple puisque tout se configure via la WebUI

services:
  recommendarr:
    container_name: recommendarr
    restart: always
    ports:
      - 3080:3000
    volumes:
      - /home/aerya/docker/recommendarr:/app/server/data
    image: tannermiddleton/recommendarr:latest
    labels:
      - com.centurylinklabs.watchtower.enable=true

Et ensuite on peut connecter ses outils/comptes. Dans mon cas Trakt, TMDB, Jellyfin et Radarr/Sonarr. Je pense que ça venait de mon navigateur mais impossible d’accéder à la configuration en cliquant sur un autre bouton que Configure AI Service ou le menu des paramètres.

recommendarr1


Pour l’IA j’ai utilisé mon compte OpenAI avec le modèle gpt-5-chat-latest (pas comme sur le screen). Choix complètement fait au pifomètre, je suis preneur de conseils.

recommendarr2

Et ensuite…. magie…. Ou presque. L’IA ne fera qu’aller chercher des contenus par rapport à notre demande. Il faut donc paramétrer la demande. Au moins le nombre de recommandations.

recommendarr4

Dans la partie IA, en sus du modèle à choisir et son degré de précision, on peut demander à ce que Recommandarr utilise un sous-ensemble de la bibliothèque afin de réduire l’utilisation de jetons tout en fournissant des recommandations pertinentes.

recommendarr5

On sélectionne la catégorie visée (films/séries) et le nombre de recommandations souhaitées.

recommendarr6


Puis on peut affiner la recherche en sélectionnant des genres.

recommendarr7

Puis sélectionner un prompt pré-défini ou en créer

recommendarr8
Style « Vibe »

Se concentre sur l’atmosphère émotionnelle et l’expérience sensorielle du contenu de votre bibliothèque. Les recommandations privilégient la correspondance avec le ressenti et l’ambiance de vos films/séries préférés plutôt que le simple genre ou la similarité de l’intrigue.
Idéal pour : Trouver du contenu qui évoque la même sensation, capturant des tons et atmosphères spécifiques.


Style analytique

Procède à une analyse détaillée des structures narratives, des motifs thématiques et des techniques formelles. Les recommandations reposent sur une analyse en profondeur des éléments cinématographiques et télévisuels qui relient les œuvres à un niveau plus substantiel.
Idéal pour : Une exploration intellectuelle et la découverte de contenus partageant une approche artistique ou une profondeur thématique similaire.


Style créatif

Dépasse les catégorisations classiques pour trouver des liens inattendus entre les œuvres. Met en avant les parcours émotionnels, la vision artistique et les approches narratives originales.
Idéal pour : Découvrir des recommandations surprenantes, qui peuvent sembler éloignées au premier abord mais partagent une même essence créative.


Style technique

Se focalise sur l’artisanat de la production, les techniques de réalisation et l’exécution technique. Analyse les méthodes de mise en scène, la cinématographie, les styles de montage et les éléments de production.
Idéal pour : L’appréciation des aspects techniques et la recherche de contenus offrant une qualité de production ou une innovation technique similaire.


Comme souvent on peut sélectionner la langue préférée du contenu (séries plutôt en langue française etc). On pourra aussi de temps en temps rescanner les bibliothèques.

recommendarr9

Et enfin, découvrir les reco. À noter qu’on ne peut pas les ajouter à Radarr/Sonarr directement, sans passer par Overseerr/Jellyseerr/whatever.

Voici par exemple pour les films

recommendarr10
recommendarr11
recommendarr12
recommendarr13

Évidemment, avec Decypharr, ça tombe en quelques secondes.

recommendarr14

Et pour les séries, on peut évidemment sélectionner les saisons

recommendarr15

C’est sympa à tester, on peut y créer plusieurs utilisateurs donc c’est intéressant mais avec un LLM autohébergé ça doit consommer pas mal de ressources. Avec OpenAI ça ne consomme en revanche rien que le serveur donc je vais le garder dans un coin mais je doute l’utiliser tous les jours, avec tout le reste…

recommendarr16


L’idéal serait de couler ça à Overseerr/Jellyseerr…

Loading

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

Par :Aerya
27 août 2025 à 09:02


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

Personnaliser les affiches et collections de Plex avec Kometa

Par :Aerya
27 août 2025 à 04:46

J’aime bien avoir une idée des notes IMDB/TMDB des contenus répertoriés par Plex. Kometa, un script Python empaqueté dans un Docker pour plus de simplicité, permet de m’auditer les jaquettes des contenus indexés et créer celles de collections et playlists.
On peut presque faire la même chose sur Emby/Jellyfin, avec Posterizarr qui fonctionne aussi pour Plex)

kometa1
kometa2

On peut y mettre les infos qu’on souhaite, à l’endroit qu’on veut et créer/afficher ou non les listes par diffuseur etc. Tout est configurable, pour peu qu’on prenne le temps de lire la documentation.

Je partage ma configuration actuelle, qu’il faudrait encore peaufiner, et vous pouvez en trouver d’autres ici ou .

kometa3

Voici un Docker qui fonctionne très bien. Au besoin, pour UNRAiD, Synology, QNAP, Kubernetes, la doc est complète.

services:
  kometa:
    image: kometateam/kometa:develop
    container_name: kometa
    restart: always
    environment:
      - TZ=Europe/Paris
      - KOMETA_CONFIG=/config/config.yml
      - KOMETA_RUN=true
      - KOMETA_TIMES=00:00,06:00,12:00,18:00
    volumes:
      - /home/aerya/docker/kometa/config:/config
      - /home/aerya/docker/kometa/assets:/assets
    labels:
      - com.centurylinklabs.watchtower.enable=true

KOMETA_TIMES = les heures où Kometa doit mouliner

Et voici mon config.yml
Il faut le domaine Plex + token, les clés API TMDB, FanART et MDBlist. Je voulais tester les playlists, pas encore pris le temps…

Attention, dans la partie « libraries » les noms des librairies doivent être ceux de Plex, ici Films et Séries TV

plex:
  url: https://plex.domain.tld
  token: xxx
  timeout: 120
  verify_ssl: true

  db_cache:
  clean_bundles: false
  empty_trash: true
  optimize: true
tmdb:
  apikey: xxx
  language: fr-FR
  region: FR

  cache_expiration: 60
imdb:
  cache_expiration: 30

mdblist:
  apikey: xxx

  cache_expiration: 60
fanart:
  apikey: xxx

settings:
  run_order:
  - operations
  - metadata
  - overlays
  - collections
  asset_directory:
  - /assets
  
  overlay_artwork_filetype: jpg
  overlay_artwork_quality: 100
  show_unmanaged: true
  show_unconfigured: true
  show_missing: true

  cache: true
  cache_expiration: 60
  asset_folders: true
  asset_depth: 0
  create_asset_folders: false
  prioritize_assets: false
  dimensional_asset_rename: false
  download_url_assets: false
  show_missing_assets: true
  show_missing_season_assets: false
  show_missing_episode_assets: false
  show_asset_not_needed: true
  sync_mode: append
  default_collection_order:
  minimum_items: 1
  item_refresh_delay: 0
  delete_below_minimum: false
  delete_not_scheduled: false
  run_again_delay: 0
  missing_only_released: false
  only_filter_missing: false
  show_filtered: false
  show_unfiltered: false
  show_options: false
  save_report: false
  tvdb_language: default
  ignore_ids:
  ignore_imdb_ids:
  playlist_sync_to_users:
  playlist_exclude_users:
  playlist_report: true
  custom_repo:

libraries:
  Films:
    collection_files:
    - default: streaming
      template_variables:
        region: FR
        language: fr
        sep_style: gray
        visible_library_netflix: true
        visible_library_amazon: true
        visible_library_disney: true
        visible_library_appletv: true
        visible_library_paramount: true
        visible_library_max: true

    overlay_files:
    - default: ratings
      template_variables:
        rating1: critic
        rating1_image: imdb
        rating2: audience
        rating2_image: tmdb
        rating3: user
        rating3_image: imdb
    - default: resolution
      template_variables:
        use_edition: false
    - default: streaming
      template_variables:
        region: FR

    operations:
      assets_for_all: true
      mass_audience_rating_update: tmdb
      mass_user_rating_update: imdb

  Séries TV:
    collection_files:
    - default: streaming
      template_variables:
        region: FR
        language: fr
        sep_style: gray
        visible_library_netflix: true
        visible_library_amazon: true
        visible_library_disney: true
        visible_library_appletv: true
        visible_library_paramount: true
        visible_library_max: true
    overlay_files:
    - default: ratings
      template_variables:
        builder_level: show
        rating1: critic
        rating1_image: imdb
        rating2: audience
        rating2_image: tmdb
        rating3: user
        rating3_image: imdb
    - default: resolution
      template_variables:
        builder_level: show
        use_edition: false
    - default: streaming
      template_variables:
        region: FR
    operations:
      assets_for_all: true
      mass_audience_rating_update: tmdb
      mass_user_rating_update: imdb

collections_streaming.yml

collections:

  "Netflix • Films & Séries":
    tmdb_watch_provider: Netflix
    tmdb_region: FR
    summary: "Titres disponibles sur Netflix (France)."
    sync_mode: sync
    collection_order: alpha
    visible_home: true
    visible_shared: true
    build_collection: true
    url_poster: /assets/Streaming/Netflix/poster.jpg

  "Prime Video • Films & Séries":
    tmdb_watch_provider: Amazon Prime Video
    tmdb_region: FR
    summary: "Titres disponibles sur Amazon Prime Video (France)."
    sync_mode: sync
    collection_order: alpha
    visible_home: true
    visible_shared: true
    build_collection: true
    url_poster: /assets/Streaming/PrimeVideo/poster.jpg

  "Disney+ • Films & Séries":
    tmdb_watch_provider: Disney Plus
    tmdb_region: FR
    summary: "Titres disponibles sur Disney+ (France)."
    sync_mode: sync
    collection_order: alpha
    visible_home: true
    visible_shared: true
    build_collection: true
    url_poster: /assets/Streaming/DisneyPlus/poster.jpg

  "Apple TV+ • Films & Séries":
    tmdb_watch_provider: Apple TV+
    tmdb_region: FR
    summary: "Titres disponibles sur Apple TV+ (France)."
    sync_mode: sync
    collection_order: alpha
    visible_home: true
    visible_shared: true
    build_collection: true
    url_poster: /assets/Streaming/AppleTVPlus/poster.jpg

  # (Optionnel) Réseaux pour séries — utile pour “Originals”
  "Netflix • Séries (Network)":
    tmdb_network: Netflix
    summary: "Séries produites/diffusées par Netflix."
    sync_mode: sync
    collection_order: alpha
    visible_home: false
    visible_shared: true
    url_poster: /assets/Networks/Netflix/poster.jpg

  "Apple TV+ • Séries (Network)":
    tmdb_network: Apple TV+
    summary: "Séries Apple Originals."
    sync_mode: sync
    collection_order: alpha
    visible_home: false
    visible_shared: true
    url_poster: /assets/Networks/AppleTVPlus/poster.jpg

overlays.yml

overlays:

  ratings:
    template: rating
    default:
      rating1: imdb
      rating2: tmdb
      position: top_right
      font: Roboto-Bold
      font_size: 62
    operations:
      delete_overlays: false

  resolution:
    template: resolution
    default:
      position: bottom_left
      font: Roboto-Bold
      font_size: 70
    operations:
      delete_overlays: false

  streaming:
    template: streaming
    default:
      position: bottom_right
      region: FR
      style: logo
      allow_multiple: true
      font: Roboto-Bold
      font_size: 50
    template_variables:
      include:
        - Netflix
        - Amazon Prime Video
        - Disney Plus
        - Apple TV+
        - Canal+
        - Paramount+
        - OCS
    operations:
      delete_overlays: false

Si après un test, vous voulez que Plex revienne par défaut, Kometa propose un outil de reset.

kometa4

Loading

Streaming à la carte sans stockage local : Decypharr, débrideurs et torrenting

Par :Aerya
25 août 2025 à 17:53

Je continue mon tour d’horizon des solutions de streaming à la carte, légales ou non selon les pays, et qui permet de se créer et maintenir une bibliothèque multimédia sans stockage local.

Je n’aborderai pas publiquement les solutions de streaming depuis des .nzb directement.

Sur le même principe que Stremio, Vortex, ou RDT-Client/Zurg, ou encore DebridMediaManager, on peut utiliser Decypharr pour simuler un client BitTorrent (qBittorrent) et streaming le contenu de .torrent depuis des débrideurs, dont TorBox.

Je vais détailler ici l’installation manuelle de Decypharr, Prowlarr et Radarr/Sonarr/Plex mais tout est notamment inclus dans le script SSDv2 (avec une grosse et belle nouveauté à venir).

J’en profite pour remercier Laster13 et Teal-C pour leurs réponses à mes questions.

La dernière mouture de Decypharr embarque rClone et sa configuration sera automatisée. Mes tests sont réalisés avec Prowlarr et des indexeurs FR publics dont YGG via « api.eu », le débrideur AllDebrid ; et je ne « tape » que dans le contenu en cache chez AD (donc aucun téléchargement).
Verdict : RàS pour les films, quelques saisons de séries manquantes uniquement dans le cache, OK avec le téléchargement.

Le plus important est de bien comprendre que si on demande aux *arrs d’organiser les bibliothèques dans /mnt/Bibliothèques, ils ne vont y mettre que des symlinks vers le montage rClone d’AllDebrid (/mnt/decypharr).
Les *arrs, pour traiter les fichiers, tout comme Plex (ou autre) pour leur lecture, doivent avoir accès à ce montage rClone.
C’est pourquoi il est impératif de monter ce dossier en volume pour chaque Docker devant y avoir accès.

Arborescence du test :

aerya@StreamBox:/$ tree -L 2 /mnt/
/mnt/
├── Bibliothèques
│   ├── Films
│   └── Séries
├── Data
│   ├── lost+found
│   ├── quotaless
│   └── rCloneCache
└── decypharr
    ├── alldebrid
    └── qbit
        ├── radarr
        └── sonarr

Bibliothèques : dossier racine pour les *arrs
Data/rCloneCache : j’avais déjà le dossier pour autre chose, j’utilise le même

decypharr/alldebrid : montage de mon compte AD
decypharr/qbit : dossier de téléchargement (simulé) des fichiers. Les sous-dossiers radarr/sonarr seront ajoutés automatiquement lors de la configuration de Decypharr (tags)

Il faut installer et lancer Decypharr avant le reste vu que tout dépend ensuite du montage du débrideur et des symlinks. Idem s’il faut relancer le Docker Decypharr, il faut relancer les autres ensuite.

services:
  decypharr:
    image: cy01/blackhole:latest
    container_name: decypharr
    restart: always
    cap_add:
      - SYS_ADMIN
    security_opt:
      - apparmor:unconfined
    ports:
      - 8282:8282
    volumes:
      - /mnt:/mnt:rshared
      - /mnt/decypharr/qbit:/mnt/decypharr/qbit
      - /home/aerya/docker/decypharr/configs/:/app
    environment:
      - TZ=Europe/Paris
      - PUID=0
      - PGID=0
    devices:
      - /dev/fuse:/dev/fuse:rwm
    labels:
      - com.centurylinklabs.watchtower.enable=true

/mnt/decypharr/qbit devant être commun aux *arrs et Plex, on y montera /mnt:/mnt dans chaque ainsi que /mnt/decypharr/qbit:/mnt/decypharr/qbit dans les *arrs qui sauront directement où aller chercher les fichiers à traiter.

La configuration n’est pas vraiment expliquée dans la doc, la mienne n’est peut-être pas optimale mais fonctionne.

Je n’ai rien modifié dans l’onglet général. J’ai testé les notifications Discord (attention on voit la passkey des trackers utilisés) mais y’a vraiment pas d’intérêt si on ne fait qu’utilise le cache du débrideur (pas de téléchargement).

decypharr1

Pour la partie débrideur, on fait notre choix, on colle une clé API (ou plusieurs) et j’ai configuré le montage dans

/mnt/decypharr/alldebrid/__all__


On peut ajouter plusieurs débrideurs. On pourra les attribuer à un *arr lié à Decypharr et même les sélectionner lors de l’ajout manuel d’un .torrent

J’utilise le WebDav et je NE COCHE PAS la case Download Uncached pour qu’il ne télécharge aucun fichier (sur AD) mais n’utilise que son cache.
Je fais ça parce que je voulais tester le cache d’AD et ne voulais pas télécharger des fichiers sans les partager. On peut tout à fait faire les 2 mais attention, il n’y aura pas de seed (donc ratio 0). A ne pas faire chez les Tier 1 sous peine de voir son compte banni !
Certains ont créé des scripts qui captent les .torrent utilisés pour les mettre en seed depuis un client local ou sur un serveur. Dans ce cas, Decypharr est utilisable sans crainte sur les trackers privés.

decypharr2

Configuration du client qBittorrent émulé. Je met le chemin qui correspond au volume local dont je parlais au début

/mnt/decypharr/qbit
decypharr3

On peut ajouter les *arrs soit depuis Decypharr soit depuis les *arrs eux-mêmes. Je n’ai qu’AD en débrideur j’ai donc laissé la sélection auto mais on peut choisir.
Par exemple Radarr sur AD et Sonarr sur RD ou Sonarr4K sur TB etc. Selon les goût de chacun. Ce qui est certain, c’est que le cache de contenu MULTi/FRENCH est évidemment plus important sur AD et RD que sur TB, principalement utilisé par les anglophones pour Stremio.

decypharr4

Le Repair est le contrôle et la réparation des symlinks. Qui peuvent être cassés si le contenu lié est effacé du débrideur. Dans ce cas, selon la config, ça peut soit rechercher sur le débrideur (si le fichier a été renommé, vu que ça fonctionne avec le hash et non le nom) soit ça ira chercher un autre .torrent via les *arrs.
Pour l’instant je laisse l’option par défaut à savoir « per torrent » mais il est peut-être préférable d’utiliser « per file ». Dans le cas d’un .torrent de saison complètement, que ça ne recherche que l’épisode manquant (du cache) plutôt que de tout relancer.
Je l’ai mis en autotmatique, toutes les 24h.

decypharr5


Et enfin la partie rClone. Le monte globalement dans /mnt/decypharr et souhaite utiliser un cache (100Go) dans un dossier (et disque) qui me sert déjà à ça : /mnt/Data/rCloneCache
On peut sans doute améliorer cette configuration mais Plex lit un fichier de 94Go sans broncher…


decypharr6

Avec le mode de téléchargement activé, voici le rendu. PausedUP signifie que le .torrent est complété (et de fait plus en seed).

decypharr7

Je ne montre que l’exemple de configuration de Radarr. Pour Sonarr c’est la même logique. Chez moi c’est derrière un VPN pour des interrogations de sources hors Prowlarr et NZBHydra, il n’y a donc pas de port de publié.
Je retire tous les volumes par défaut pour ne monter que /mnt/decypharr/qbit:/mnt/decypharr/qbit et /mnt:/mnt

services:
  radarr:
    container_name: radarr
    restart: always
    network_mode: container:gluetun-mullvad
    environment:
      - TZ=Europe/Paris
      - PUID=0
      - PGID=0
    volumes:
      - /home/aerya/docker/radarr:/config
      - /mnt/decypharr/qbit:/mnt/decypharr/qbit
      - /mnt:/mnt
    labels:
      - com.centurylinklabs.watchtower.enable=true
    image: linuxserver/radarr:nightly

Configuration du dossier racine : /mnt/Bibliothèques/Films

radarr1

Configuration du client de téléchargement si on n’a pas ajouté Radarr depuis Decypharr. Il faut sélectionner qBittorrent

radarr2

Et dans l’adresse il faut mettre l’URL (ou l’IP) de Decypharr et le port (et SSL si vous utilisez une URL et un reverse proxy).
Le nom d’utilisateur et le mot de passe sont l’URL de Radarr et sa clé API.
La catégorie : radarr (et donc sonarr pour Sonarr ofc!)

Ne surtout pas cocher la case Sequential Order (sinon ça DL localement)

radarr3

Et comme le même chemin/volume est monté dans chaque Docker, il n’y a aucun Remote Path Mapping à mettre

radarr4

Lors de l’ajout d’un film, la complétion est quasi instantanée pour peu que le fichier cherché soit déjà dans le cache d’AllDebrid. Si vous activez le téléchargement des fichiers non encore en cache, ça peut prendre quelques minutes.


radarr5

En regardant de plus près, on voit bien que c’est un symlink vers le cache d’AllDebrid

aerya@StreamBox:/mnt/Bibliothèques/Films$ ls -l Alien\ -\ Romulus\ \(2024\)/
total 4
lrwxrwxrwx 1 root root 208 Aug 25 18:55 Alien.Romulus.2024.MULTi.VFF.2160p.UHD.BluRay.REMUX.DV.HDR.HEVC.TrueHD.7.1.Atmos-ONLY.mkv -> /mnt/decypharr/alldebrid/__all__/Alien.Romulus.2024.MULTi.VFF.2160p.UHD.BluRay.REMUX.DV.HDR.HEVC.TrueHD.7.1.Atmos-ONLY/Alien.Romulus.2024.MULTi.VFF.2160p.UHD.BluRay.REMUX.DV.HDR.HEVC.TrueHD.7.1.Atmos-ONLY.mkv
ncdu 1.19 ~ Use the arrow keys to navigate, press ? for help
--- /mnt/Bibliothèques/Films/Alien - Romulus (2024)- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@   4.0 KiB [###################################################]  Alien.Romulus.2024.MULTi.VFF.2160p.UHD.BluRay.REMUX.DV.HDR.HEVC.TrueHD.7.1.Atmos-ONLY.mkv


Plus globalement, tous les fichiers sont bien chez AllDebrid, monté via WebDav/rClone et je n’ai localement que des symlinks qui ne prennent aucune place.
En théorie, on pourrait se faire cette installation sur une Carte MicroSD de quelques Go 🙂

ncdu 1.19 ~ Use the arrow keys to navigate, press ? for help
--- /mnt ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
   15.9 TiB [###################################################] /decypharr
    4.0 MiB [                                                   ] /Bibliothèques

Pour terminer, la configuration de Plex. Toujours avec /mnt:/mnt de monté pour garantir l’accès aux symlinks.

services:
  pms-docker:
    container_name: plex
    restart: always
    ports:
      - 32400:32400/tcp
      - 33401:33401/tcp
      - 3005:3005/tcp
      - 8324:8324/tcp
      - 32469:32469/tcp
      - 1900:1900/udp
      - 32410:32410/udp
      - 32412:32412/udp
      - 32413:32413/udp
      - 32414:32414/udp
    environment:
      - PLEX_UID=0
      - PLEX_GID=0
      - TZ=Europe/Paris
      - PLEX_CLAIM=claim-xxx
      - ADVERTISE_IP=http://192.168.0.163:32400/
    hostname: plex.xxx.xxx
    volumes:
      - /home/aerya/docker/plex:/config
      - /mnt:/mnt
      - type: tmpfs
        target: /transcode
        tmpfs:
          size: 4g
    labels:
      - com.centurylinklabs.watchtower.enable=true
    image: plexinc/pms-docker:latest
plex1
plex2

Loading

Plex : synchronisation avec Trakt.tv et notifications Discord

Par :Aerya
17 août 2025 à 09:26


Il y a quelques années, j’utilisais un plugin pour Plex pour synchroniser les visionnages. L’intérêt étant surtout de pouvoir ajouter/retirer des contenus, voire réinstaller un serveur Plex, tout en ne perdant pas le chemin parcouru 🙂

Avec l’évolution de Plex, il faut passer par un script Python, empaqueté dans un Docker pour plus de simplicité : PlexTraktSync, de Taxel. Alors que pour Jellyfin, on utilise toujours le plugin qui va bien.

On peut synchroniser de Plex vers Trakt et/ou Trakt vers Plex, par bibliothèque et utilisateur.


Voici un exemple d’installation et de configuration, sans prise en compte de Watchlists (que je n’ai pas vu qu’ici on passe par Overseerr uniquement).
Il faut une application Trakt.tv vérifiée (gratuit) pour récupérer ses clés d’accès. Et si vous voulez les notifications Discord, l’OS hôte (mon script est externe) doit avoir curl et jq.

Installation du Docker. Ofelia étant un cron qui permet de lancer la synchronisation selon nos préférences, je le lance toutes les 6h (0 */6 * * *). Pour paramétrer, aidez-vous de Cron Guru au besoin.

services:
  plextraktsync:
    image: ghcr.io/taxel/plextraktsync:latest
    container_name: plextraktsync
    restart: always
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Paris
    volumes:
      - /home/aerya/docker/plextraktsync/config:/app/config
    command: watch
    labels:
      - ofelia.enabled=true
      - ofelia.job-exec.sync.schedule=0 */6 * * *
      - ofelia.job-exec.sync.command=plextraktsync sync
      - ofelia.job-exec.sync.no-overlap=true
  ofelia:
    image: mcuadros/ofelia:latest
    container_name: ofelia
    restart: always
    command: daemon --docker
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
networks: {}


En suivant le ReadMe, lancer le Docker la 1ère fois créera le fichier de configuration config.yml. Mais on peut aussi l’éditer à la main, tout comme servers.yml.
Pour sélectionner le serveur, utiliser les flèches du clavier.

copie d'écran 20250817 093155

Je me suis trompé de serveur, j’ai édité la conf à la main ensuite, du coup il cherchait à valider un SSL alors que j’avais mis un serveur en IP locale. Il faut lui laisser un peu le temps mais ensuite c’est bon.

copie d'écran 20250817 093537

Si ce n’est pas déjà fait, il explique la marche à suivre pour se faire une application Trakt.tv

copie d'écran 20250817 093633

Quand je vois SickGear dans mes applications… ça rappelle de sacrés souvenirs ! 🙂

copie d'écran 20250817 093811

copie d'écran 20250817 093954

copie d'écran 20250817 094025
copie d'écran 20250817 094120

Il convient tout de même d’éditer un peu la configuration à la main, notamment si on veut exclure des bibliothèques ou watchlists. Ici c’est basique, je n’ai qu’un utilisateur et synchronise tout mais pour aller plus dans le détail je vous recommande de suivre son ReadMe.
C’est config.yml dans /home/aerya/docker/plextraktsync/config

cache:
  path: $PTS_CACHE_DIR/trakt_cache

# You may want to use per server libraries config instead:
# - https://github.com/Taxel/PlexTraktSync#libraries
excluded-libraries:
  - Private

config:
  dotenv_override: true

plex:
  timeout: 30

logging:
  append: true
  # Whether to show timestamps in console messages
  console_time: false
  debug: false
  filename: plextraktsync.log
  # Additional logger names to apply filtering
  filter_loggers:
  #    - plexapi
  #    - requests_cache.backends
  #    - requests_cache.backends.base
  #    - requests_cache.backends.sqlite
  #    - requests_cache.policy.actions
  #    - requests_cache.session
  #    - trakt.core
  #    - urllib3.connectionpool
  filter:
#    # Filter out all messages with level WARNING
#    - level: WARNING
#    # Filter out message with level WARNING and containing a text
#    - level: WARNING
#      message: "not found on Trakt"
#    - message: "because provider local has no external Id"
#    - message: "because provider none has no external Id"
#    - message: "Retry using search for specific Plex Episode"
#    # Filter out messages by requests_cache
#    - name: requests_cache.backends
#    - name: requests_cache.backends.base
#    - name: requests_cache.backends.sqlite
#    - name: requests_cache.policy.actions
#    - name: requests_cache.session

# settings for 'sync' command
sync:
  # Setting for whether ratings from one platform should have priority.
  # Valid values are trakt, plex or none. (default: plex)
  # none - No rating priority. Existing ratings are not overwritten.
  # trakt - Trakt ratings have priority. Existing Plex ratings are overwritten.
  # plex - Plex ratings have priority. Existing Trakt ratings are overwritten.
  rating_priority: plex

  plex_to_trakt:
    collection: false
    # Clear collected state of items not present in Plex
    clear_collected: false
    ratings: true
    watched_status: true
    # If plex_to_trakt watchlist=false and trakt_to_plex watchlist=true
    # the Plex watchlist will be overwritten by Trakt watchlist
    watchlist: false
  trakt_to_plex:
    liked_lists: true
    ratings: true
    watched_status: true
    # If trakt_to_plex watchlist=false and plex_to_trakt watchlist=true
    # the Trakt watchlist will be overwritten by Plex watchlist
    watchlist: false
    # If you prefer to fetch trakt watchlist as a playlist instead of
    # plex watchlist, toggle this to true (is read only if watchlist=true)
    watchlist_as_playlist: false
    # Sync Play Progress from Trakt to Plex
    playback_status: false

# Configuration for liked lists
liked_lists:
  # Whether to keep watched items in the list
  keep_watched: true

# Configuration override for specific lists
#liked_list:
#  "Saw Collection":
#    keep_watched: true

# settings for 'watch' command
watch:
  add_collection: false
  remove_collection: false
  # what video watched percentage (0 to 100) triggers the watched status
  scrobble_threshold: 80
  # true to scrobble only what's watched by you, false for all your PMS users
  username_filter: true
  # Show the progress bar of played media in terminal
  media_progressbar: true
  # Clients to ignore when listening Play events
  ignore_clients: ~

xbmc-providers:
  movies: imdb
  shows: tvdb

De même, on peut venir éditer le fichier du ou des serveurs Plex à synchroniser : servers.yml

servers:
  default:
    token: null
    urls:
    - null
    - null
    id: null
    config: null
  plex.domain.tld:
    token: xxxx
    urls:
    - https://plex.domain.tld
#    - http://192.168.0.139:32400
    id: xxxx
    config: null

Et donc, toutes les 6h, le Docker se lance et synchronise Plex et Trakt.tv pour mettre à jour les films et séries lus/non lus.
La 1ère fois peut prendre un peu de temps selon le nombre de fichiers.

Je voulais les notifications sur Discord, j’ai donc créé un script qui lance le Docker et envoie la récap en notification :

copie d'écran 20250817 110857

Nécessite curl et jq. Pour l’icône, ici comme pour Heimdall, j’utilise dashboardicons.com
Et il faut retirer Ofelia et les labels inhérents
du compose plus haut puisque c’est maintenant l’hôte, via crontab par exemple, qui va exécuter le script qui va lui-même lancer le Docker de plextraktsync.

Le compose devient

services:
  plextraktsync:
    image: ghcr.io/taxel/plextraktsync:latest
    container_name: plextraktsync
    restart: always
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Paris
    volumes:
      - /home/aerya/docker/plextraktsync/config:/app/config
    command: watch

Et mon script

#!/bin/bash
set -euo pipefail

WEBHOOK_URL="https://discord.com/api/webhooks/xxxx"

TMP_LOG="$(mktemp)"
docker compose exec plextraktsync plextraktsync sync 2>&1 | tee "$TMP_LOG"
RESULT=$?

# récupère les 20 dernières lignes
LOG_TAIL="$(tail -n 20 "$TMP_LOG" | jq -Rs .)"

PAYLOAD=$(jq -n --arg res "$RESULT" --arg logs "$LOG_TAIL" '
  {content: "Résultat sync : \($res)\n```\n\($logs | fromjson)\n```"}
')

curl -sS -X POST -H "Content-Type: application/json" \
  -d "$PAYLOAD" "$WEBHOOK_URL"

copie d'écran 20250817 112459


Je l’ai donc mis en cron, toutes les 6h :

0 */6 * * * bash /home/aerya/docker/plextraktsync/config/plextraktsyncdiscord.sh


Loading

❌