Par défaut une fois les téléchargements terminés Transmission partage indéfiniment le fichier.

Pour changer ce comportement il faut utiliser les paramètres ratio-limit (= valeur numérique) et ratio-limit-enabled (= true). Dés lors Transmission partagera jusqu’à ce que le ratio téléchargement / partage défini dans ratio-limit soit atteint. Ensuite le fichier sera mis en état arrêté mais restera dans Transmission.

Le script ci-dessous (remove_completed_torrents.sh qui n’est pas de moi voir les sources) à exécuter à intervalle régulier via une tache Cron vérifie l’état des fichiers/torrents et pour ceux qui sont stoppés (dont le ratio de partage est atteint) les déplace dans un autre répertoire (complete dans mon cas, voir mon arborescence de fichier) et les supprime de Transmission

#!/bin/sh
# script to check for complete torrents in transmission folder, then stop and move them
 
AUTH="--netrc=$HOME/.netrc"
 
# either hard-code the MOVEDIR variable here
MOVEDIR=/data/downloads/torrents/complete # the folder to move completed downloads to
# or set MOVEDIR using the first command-line argument
# MOVEDIR=%1
 
# use transmission-remote to get torrent list from transmission-remote list
# use sed to delete first / last line of output, and remove leading spaces
# use cut to get first field from each line
TORRENTLIST=`transmission-remote --list | sed -e '1d;$d;s/^ *//' | cut --only-delimited --delimiter=" " --fields=1`
 
# for each torrent in the list
for TORRENTID in $TORRENTLIST
    do
    echo "* * * * * Operations on torrent ID $TORRENTID starting. * * * * *"
 
    # check if torrent download is completed
    DL_COMPLETED=`transmission-remote $AUTH --torrent $TORRENTID --info | grep "Percent Done: 100%"`
 
    # check torrent’s current state is Stopped, Finished, or Idle
    STATE_STOPPED=`transmission-remote --torrent $TORRENTID --info | grep "State: Finished"`
 
    # if the torrent is Stopped, Finished, or Idle after downloading 100%
    if [ "$DL_COMPLETED" != "" ] && [ "$STATE_STOPPED" != "" ]; then
        # move the files and remove the torrent from Transmission
        echo "Torrent #$TORRENTID is completed."
        echo "Moving downloaded file(s) to $MOVEDIR."
        transmission-remote --torrent $TORRENTID --move $MOVEDIR
        echo "Removing torrent from list."
        transmission-remote --torrent $TORRENTID --remove
    else
        echo "Torrent #$TORRENTID is not completed. Ignoring."
    fi
    echo "* * * * * Operations on torrent ID $TORRENTID completed. * * * * *"
done

Ce script utilise la commande transmission-remote du paquet transmission-cli à installer si ce n’est déjà fait.

Pour certaines opérations transmission-remote à besoin d’informations de connexion (login / mot de passe), plutôt que d’utiliser l’option –auth j’ai préféré utiliser l’option –netrc, il faut donc créer un fichier .netrc dans le home de votre utilisateur (ou si vous souhaitez le mettre ailleurs il faudra modifier la variable AUTH) et y mettre les informations suivantes :

machine localhost login [votre login] password [votre mot de passe]

Du Fait des information sensible de ce fichier on le protégera en faisant un :

chmod 600 ~/.netrc

 

Lorsque l’on exécute le script on aura ce genre de sortie :

./bin/remove_complet_torrent.sh
 * * * * * Operations on torrent ID 1 starting. * * * * *
 Torrent #1 is completed.
 Moving downloaded file(s) to /data/downloads/torrents/complete.
 localhost:9091 responded: "success"
 Removing torrent from list.
 localhost:9091 responded: "success"
 * * * * * Operations on torrent ID 1 completed. * * * * *

 

Rque : dans le script d’origine les fichiers étaient déplacés dès lors que leur statut était stopped ou idle ou finished. J’ai supprimé les 2 premiers statuts sinon les fichiers étaient enlevés alors que le ratio de partage n’était pas atteint…

 

Sources :

Les commentaires sont fermés.