• Docker
  • Maintien d'une image docker rutorrent pour la communauté mondedie

Magicalex
du coup je suis un peu perdu sur le role de --def ut_dir="${TORRENT_PATH}" et --def ut_title="${TORRENT_NAME}"
Le but de ces options n est il pas de traiter le fichier renseigne par ${TORRENT_PATH} et ${TORRENT_NAME} ???

Je prends en exemple ce petit script que je me suis fait:

#!/bin/bash
echo "chemin du fichier à renommer:"
read TORRENT_PATH
/home/.filebot/filebot.sh --lang fr -script fn:amc --output "/home/Media" --action symlink --conflict override -non-strict --def tmdbTV=y unsorted=y "ut_dir=$TORRENT_PATH"

La variable $TORRENT_PATH renseigne bien filebot sur le fichier a traiter et il ne traite que celui la et aucunement les autres du repertoire ( et pas de fichier qui inventorie les fichiers a exclure).

    christophebe Pour que le script soit dans un PATH et que l'on puisse exécuter le script comme une commande normale.

    Je vois pas trop ce que tu veux personnaliser dans les deux scripts.

    christophebe du coup je suis un peu perdu sur le role de --def ut_dir="${TORRENT_PATH}" et --def ut_title="${TORRENT_NAME}"
    Le but de ces options n est il pas de traiter le fichier renseigne par ${TORRENT_PATH} et ${TORRENT_NAME} ???

    Non, je t'invite à lire le script pour plus d'info sur comment fonctionne le script de filebot. Il semblerait que ut_title ne soit là que pour les notifications.

    christophebe La variable $TORRENT_PATH renseigne bien filebot sur le fichier a traiter et il ne traite que celui la et aucunement les autres du repertoire ( et pas de fichier qui inventorie les fichiers a exclure).

    Non plus, elle renseigne sur le dossier à traiter.

      Magicalex
      Desole, j insiste mais apres tests (via mon petit script, via le container de xataz):
      la variable $TORRENT_PATH renseigne bien filebot sur le fichier a traiter (que ce soit un fichier ou un repertoire) et il ne traite que celui la et aucunement les autres du repertoires ou fichiers.
      Donc dans ton script postdl, tes variables ne sont pas interpretees et donc ne sont pas utiles.

        christophebe Et bien non. Ce n'est que des dossiers qui sont passés en paramètre. Le nom de la variable est très explicite. ut_dir dir pour directory

        Si tu lances le script
        docker exec -it rutorrent postdl /data/downloads nimportequoi.mkv

        Tu verras que le script amc va check tous les fichiers si tu as supprimé le cache avant.

        Hello,
        Aller on poursuit le sujet de bon matin et de bonne humeur.
        Etant arrivé tôt au boulot, j'ai fouiné sur le site de filebot et suis allé à la pêche aux infos.
        J'ai trouvé un topic qui aborde le point ut_dir et surtout avec une réponse de Rednoah le concepteur de filebot:
        Discussion sur le forum filebot

        qBT will replace %F with the input folder/file of the completed download and call FileBot on that:

        --def "ut_dir=%F"_

        If you pass your entire Downloads folder as input folder every time, then you will end up processing incomplete downloads A, B and C after D is finished and triggers filebot.

        Du coup voilà ce que je comprends:
        rtorrent renvoie le nom du torrent que l'on stocke dans la variable TORRENT_PATH
        ensuite on lance filebot avec en paramètre ut_dir=$TORRENT_PATH
        Alors filebot est censé traiter uniquement le torrent qui vient de se terminer.
        Cela permet d'éviter le traitement de fichiers qui seraient encore en cours de téléchargement.

        Ce que j'ai pu retester ce matin sur le container de la communauté, c'est que le paramètre ut_dir ne s'applique pas et donc systématiquement tout le répertoire downloads est retraité (en excluant tous les torrents référencés dans le fichier amc_exclude).
        En soit ce n'est pas bien grave, même dans le cas suivant:
        imaginons que l'on lance 2 downloads, 1 se finit rapidement , le 2ieme prend 1 journée
        lorsque le 1ier se finit, filebot traite alors le torrent 1 (celui fini) et le torrent 2 (celui en cours de download)
        et il vient ensuite renseigné ces 2 torrents dans le fichier amc_exclude.
        Le 2ieme torrent se finit plus tard, filebot se lance mais comme le torrent 2 est référencé dans amc_exclude , aucune action n'est effectuée.
        la problématique que je vois c'est que l'on crée un symlink sur un fichier non fini et donc si tu es un peu impatient et que tu veux accéder au fichier via ton symlink tu vas avoir une mauvaise surprise.

        Du coup j'ai regardé le script postdl (je suis très loin d'être un expert et mes compétences en scripting sont très limitées) pour essayer de voir pourquoi le paramètre ut_dir ne s'applique pas.

        le début me semble bon:

        TORRENT_PATH="$1"

        par contre ici j'ai quelques doutes:

        --def ut_dir="${TORRENT_PATH}"

        est ce que ce ne devrait pas plutot être:

        --def ut_dir=$TORRENT_PATH
        ou

        --def "ut_dir=$TORRENT_PATH"

        Après comme je le disais je ne suis pas très doué et ne sais pas si les {....} ou mettre les "..." à cet endroit impactent ou pas. Mais c'est la seule dfférence que je vois avec le script de xataz (pour lequel je trouve le résultat souhaité et expliqué par Rednoah).

        a+

          christophebe alors "${TORRENT_PATH}" passe bien. C'est la syntaxe qui est recommandé.

          Tu accordes trop de valeur à la variable TORRENT_PATH. Cette variable provient de la commande $d.directory= via xmlrpc.
          Et la commande d.directory me renvoie la plupart du temps le dossier /data/downloads

          Pour faire ce que tu veux il faudrait concaténer les variables et donc avoir le dossier du torrent en particulier, il faudrait faire ça.

          FULL_PATH="${TORRENT_PATH}/${TORRENT_NAME}"

          Le problème avec cette solution c'est que ça ne renvoie pas toujours un dossier mais aussi parfois un fichier.
          Et si on donne un fichier à filebot il plante. Donc on revient au problème initiale.

          Donc le mieux que l'on pourrait éventuellement faire serait de passer le dossier du torrent quand il existe.

          #!/usr/bin/env sh
          
          TORRENT_PATH="${1}"
          TORRENT_NAME="${2}"
          
          if [ -d "${TORRENT_PATH}/${TORRENT_NAME}" ]; then
            FULL_PATH="${TORRENT_PATH}/${TORRENT_NAME}"
          else
            FULL_PATH="${TORRENT_PATH}"
          fi
          
          /filebot/filebot.sh \
            --lang "${FILEBOT_LANG}" \
            -script fn:amc \
            --output "/data/media" \
            --action "${FILEBOT_RENAME_METHOD}" \
            --conflict "${FILEBOT_CONFLICT}" \
            -non-strict \
            --log-file /tmp/filebot-amc.log \
            --def @/filebot/args_amc.txt \
            --def ut_dir="${FULL_PATH}" \
            --def ut_title="${TORRENT_NAME}" 2>> /tmp/filebot-error.log

          Mais sinon mon script fonctionne exactement de la même manière que celui de xataz.

          Ok, j'ai bien pris note.
          Un grand merci d'avoir creusé le sujet et d'avoir pris le temps de éclairer.

          a+

          Chris.

            christophebe Donc au final ça ne change pas grand chose si on passe que cette variable à filebot TORRENT_PATH
            Le principale c'est que avec cette variable filebot se débrouille toujours.

            popov_2 Je demandais sur quel machine tu veux l'installer pas l'architecture. je me doute bien que c'est aarch64. C'est pas grave normalement tu peux réessayer ça fonctionne.

            spider1163 Cyprien J'ai poussé une modification. Maintenant on peut ajouter une authentification basic.
            Je vous invite à lire le readme pour mettre en place l'authentification. https://github.com/mondediefr/docker-rutorrent#add-http-authentication
            J'ai mis dans l'image un petit utilitaire pour générer un fichier avec le mot de passe gen-http-passwd

            Parfait @Magicalex ! Merci ! Par contre c'est possible de faire un ajout de ligne avec ">>" au lieu de ">" lors de l'ajout d'un utilisateur via openssl ?
            echo "${username}:${passwd}" >> /config/nginx/passwd/rutorrent_passwd

            Ça permet d'avoir plusieurs accès pour la même instance: ça peut paraître inutile mais j'ai pas forcément envie de partager mon mot de passe avec quelqu'un d'autre XD.

              Cyprien J'ai fait une petite maj hier soir et je viens de pousser un fix.

              Maintenant le script gen-http-passwd peut créer un mot de passe pour un utilisateur mais on peut aussi changer un mot de passe pour un utilisateur qui existe déjà.

                5 jours plus tard

                Magicalex Hello,
                encore l'emmerdeur et je pense que tu dois te dire qu'est ce qu'il me les casse avec son filebot et le traitement des fichiers.
                J'ai poursuivi mon investigation car je ne comprenais pas pourquoi le container de xataz ne se comportait pas de la meme maniere que le tien au niveau du script postdl.
                Et je pense avoir trouve la difference qui explique le comportement different: les variables renvoyees par rtorrent au script.
                Xataz recupere les variables d.get_base_path ,d.get_name, d.get_custom1 -> transforme en d.base_path d.name et d.custom1 depuis la verison 0.9.2
                de ton cote tu recuperes d.directory ,d.name
                On oublie la variable custom qui est pour le label.
                On va faire un focus sur la variable d.base_path qui te renvoie lorsque le telechargement est fini le chemin complet du fichier ou repertoire telecharge (media/downloads/fichier.mkv ou media/downloads/repertoirefilm/) la ou d.directory te renvoie le repertoire media/downloads/
                Du coup en ajoutant au script filebot ut_kind=multi, filebot traite ut_dir comme un repertoire ou fichier et du coup il ne s occupe que du fichier/repertoire concerne et non plus du repertoire media/downloads au complet (si on efface amc_exclude... evidemment).
                J'ai teste et du coup c est 100% fonctionnel.
                Voila la difference entre l'implementation de xataz et la tienne. Apres tout depend de ton cas d'usage, l'important est la finalite et souvent peu importe le moyen. Mais bon je voulais comprendre pourquoi cela fonctionnait differemment.

                desole pour l'absence des accents, je suis sur un clavier qwerty aujourd'hui

                Merci encore pour le boulot fourni

                a+

                  Du coup pour mon usage, j'ai modifie .rtorrent.rc afin de recuperer le chemin complet du fichier et son label. Je me suis cree un script postdl plus pousse avec utilisation des labels: en fonction des labels execution d'une action qui peut etre lancer filebot (pour series et films) , une autre action pour les ebooks, et encore une autre pour les applications.
                  Bref hyper content du fonctionnement et un grand merci pour le boulot.

                  christophebe Salut,

                  Effectivement tu as raison. Je viens de tester de mon coté. En réalité j'ai confondu d.directory_base (qui pose des problèmes quand un torrent est à l'arrêt) et d.base_path

                  Je vais modifier ça sur le prochain commit. Merci pour les investigations 🙂

                  Pour info, je bidouille pas mal buildx de docker en ce moment. Je vais pouvoir vous sortir bientôt plusieurs architectures.
                  A savoir linux/386, linux/amd64, linux/arm/v7, linux/arm64/v8 pour les tag latest et filebot.

                    Encore une petite question.
                    J'ai viré le container de xataz pour passer sur celui là.
                    Juste une interrogation concernant son intégration avec radarr ou sonarr.
                    Je dois surement mal m'y prendre mais impossible de refaire communiquer sonarr avec rtorrent.
                    D'où ma question est ce un souci de plugin (que je dois rajouter) ou moi qui configure mal.
                    lorsque j'utilisais le container de xataz, voici la conf que j'avais sur sonarr:
                    dans host, je mettais le nom de mon container (rtorrent)
                    dans port: 8080
                    dans Url path: RPC2
                    et hop ca roulait, aucune modif/paramétrage côté rtorrent
                    mais la impossible de le faire marcher.
                    une idée?
                    merci

                      christophebe question peut être bête mais tu mets bien un link du container rtorrent dans le container sonarr ? Après je sais pas si y a besoin de configurer NGINX dans le container rtorrent pour rediriger l'url RPC2. Je donne just edes piste je connais pas bien cela.