My Own Memory Hole
Blog♯torrent

Transmission sur NAS D-Link DNS-320 avec fun_plug

Si je gère toujours mes téléchargements de torrents sur mon NAS « augmenté » de fun_plug, je n'utilise plus rTorrent en daemon mais Transmission. Plusieurs raisons à ce changement : la plus importantes étant la non disponibilité de certaines dépendances du fait de la disparition de plusieurs dépôts pour fun_plug ; et puis, rTorrent présentait certaines limitations, notamment l'absence de file d'attente...

Installation

L'installation de Transmission ne peut se faire par le biais de slacker, l'outil de gestion de paquets de fun_plug, encore une fois pour des questions de dépendances non satisfaites...
Il faut commencer par installer Optware, qui fournit de nombreux logiciels :

$ wget http://wolf-u.li/u/233 -O /ffp/start/optware.sh
$ chmod a+x /ffp/start/optware.sh
$ /ffp/start/optware.sh start

L'on dispose alors de la commande ipkg 

# ipkg update
# ipkg list
# ipkg list transmission
# ipkg install transmission

Préparation

On commence par créer les répertoires de téléchargement et de configuration&nbp;:

# mkdir -p /mnt/HD/HD_b2/torrent/{.transmission,complete,incomplete}

Ensuite, pour bénéficier du script de lancement de transmission-daemon, nous installons puis désinstallons dans la foulée via slacker le paquet transmission :

# slacker -a transmission
# slacker -r transmission

Puis on édite le fichier /ffp/start/transmission.sh en modifiant les chemins des exécutables (qui se trouvent dans /opt/bin) et des fichiers de configuration de Transmission :

# nano /ffp/start/transmission.sh 

Voici mon script :

#!/ffp/bin/sh

# PROVIDE: Transmission

. /ffp/etc/ffp.subr

TRANSMISSION_HOME=/mnt/HD/HD_b2/torrent/.transmission

name="transmission-daemon"
command="/opt/bin/$name"
start_cmd="transmission_start"
stop_cmd="transmission_stop"
status_cmd="transmission_status"
user=root
su_cmd="/ffp/bin/su"

transmission_start()
{
   if [ ! -d ${TRANSMISSION_HOME} ]; then
      $su_cmd $user -c "mkdir ${TRANSMISSION_HOME}"
   fi
   echo "Starting $name"
      $su_cmd $user -c "$command -g ${TRANSMISSION_HOME} -e ${TRANSMISSION_HOME}/$name.log"
}

transmission_stop()
{
   echo "Stopping $name"
      /ffp/bin/killall -SIGINT $name
}

transmission_status()
{
   _pids=$(pidof $name)
   if test -n "$_pids"; then
      echo "$name is running, pid:"
      pidof $name
   else
      echo "$name not running"
   fi
}

run_rc_command "$1"

On le rend exécutable :

# chmod a+x /ffp/start/transmission.sh

Premier lancement

Afin de générer le fichier de configuration, il convient de lancer une première fois transmission-daemon avec les arguments suivants :

  • -g : le chemin vers le répertoire de configuration et autres fichiers générés par Transmission ;
  • -w : le répertoire où seront stockés les fichiers téléchargés ;
  • -T : je n'ai pas besoin d'authentification puisque je me limite à mon réseau local (option -a).
# /opt/bin/transmission-daemon -f -g /mnt/HD/HD_b2/torrent/.transmission -w /mnt/HD/HD_b2/torrent/complete -T -a 127.0.0.1,192.168.1.*

On peut interrompre le daemon (Ctrl+C) puis éditer le fichier de configuration qui a été créé :

# nano /mnt/HD/HD_b2/torrent/.transmission/settings.json 

Ensuite, on peut lancer Transmission simplement avec :

# /ffp/start/transmission.sh

Références :

Téléchargez les torrents de YIFY / YTS en ligne de commande

Grâce à un petit utilitaire en Python, yifi, initialement écrit par vitamin c / akhilmaskerie, il est possible de découvrir les dernières releases proposées par YIFY / YTS, de faire des recherches et surtout de télécharger les fichiers .torrent ou .magnet pour les télécharger ensuite avec votre client Bittorent préféré (dans mon cas désormais, transmission-daemon tourne sur mon NAS en remplacement de rtorrent).

J'ai forké son dépôt afin de faire un peu de ménage, de renommer l'ensemble de yifi en yify et surtout de permettre de retrouver l'identifiant IMDB des films, afin de faciliter la recherche des sous-titres avec le module NodeJS getsubtitle.

Pour l'installer :

sudo pip3 install git+https://github.com/bricebou/yify

Nous avons désormais accès à la commande yify qui renvoie les dernières sorties :

$ yify
16500 Ordinary Love
16499 Jimmy P.
16497 American Masters Jimi Hendrix: Hear My Train a Comin'
16496 Fantastic Return to Oz
16495 Batman: Return of the Caped Crusaders
16494 Cardcaptor Sakura: The Movie
16492 Detroit Driller Killer
16490 Let's Kill Grandpa This Christmas
16489 All the Queen's Horses
16488 Lone Wolf and Cub: Baby Cart to Hades
16487 Depth Charge
16486 Mysterious Island
16484 That's the Way of the World
16483 Timerider: The Adventure of Lyle Swann
16482 Shackleton's Captain
16481 Seven Stages to Achieve Eternal Bliss
16479 Ghost Town
16478 The Winner
16476 DWB: Dating While Black
16475 Touched by Grace

Pour avoir plus d'informations sur un film :

$ yify -id 16497 --details
title   : American Masters Jimi Hendrix: Hear My Train a Comin' (2013)
year    : 2013
rating  : 7.7
runtime : 0 min
lang    : English
genres  : Biography,Documentary
mpa     : 
quality : ['720p']
descr   :  Jimi Hendrix was the greatest single rock star of it's era and
      remains so today. No one before or since has come [... snap ...]
imdb_id : tt3181314

Pour télécharger le torrent ou le magnet (lien copié dans un fichier) :

$ yify -id 16497 --torrent
$ yify -id 16497 --magnet

Ensuite, si vous utiliser transmission-daemon accompagné de transmission-remote, il vous suffit de fournir à ce dernier le fichier .torrent :

$ transmission-remote 192.168.1.21:8091 -a 16497.torrent

ou le contenu du fichier .magnet :

$ transmission-remote 192.168.1.21:8091 -a `cat 16497.magnet`

ou :

$ cat 16497.magnet | xargs transmission-remote 192.168.1.21:8091 -a 

rTorrent en daemon

Pour mes téléchargements, notamment de séries, j'utilise le logiciel rTorrent installé sur mon NAS (un D-Link DNS-320 avec fun_plug par-dessus).
Cependant il convient de pouvoir le laisser tourner en tâche de fond, d'autant plus que je récupère les torrents des derniers épisodes de séries avec FlexGet.

Configuration de rTorrent

Il s'agit ici de présenter simplement les éléments de configuration nécessaires au téléchargement des nouveaux torrents, au déplacement des fichiers vers un dossier surveillé par mon serveur media MediaTomb (désormais Gerbera)...

Surveillance des nouveaux fichiers torrent

# Watch a directory for new torrents, and stop those that have been deleted.
schedule = watch_directory,5,5,load_start=/mnt/HD/HD_b2/torrent/*.torrent
schedule = untied_directory,5,5,stop_untied=

Déplacement des fichiers téléchargés

# Répertoire pour téléchargement
directory = /mnt/HD/HD_b2/torrent/incomplete/

# On déplace les fichiers dont le téléchargement est fini
system.method.set_key = event.download.finished,move_complete,"execute=mv,-u,$d.get_base_path=,/mnt/HD/HD_b2/torrent/complete/;d.set_directory=/mnt/HD/HD_b2/torrent/complete/"

Daemon rTorrent

Il s'agit de pouvoir lancer rTorrent "encapsulé" dans un "multiplexeur de terminaux" comme screen ; le script est basé sur celui proposé dans la documentation d'ubuntu-fr et celui-ci. Cependant, j'ai décidé de ne pas lancer rTorrent au démarrage du NAS mais à la demande.

J'ai donc créé le fichier /bin/drtorrent :

$ sudo nano /bin/drtorrent

avec ce script :

#!/ffp/bin/sh
# Start/Stop rtorrent sous forme de daemon.

NAME=drtorrent
SCRIPTNAME=/ffp/bin/$NAME
PATH=/ffp/bin:/ffp/sbin:/usr/sbin:/usr/bin:/bin:/opt/bin:/opt/sbin

case $1 in
        start)
                echo "Starting rtorrent... "
                /ffp/bin/screen -fn -dmS rtd /opt/bin/rtorrent
                echo "Terminated"
        ;;
        stop)
                if [ "$(ps aux | grep -e '.*rtorrent$' -c)" != 0  ]; then
                {
                        echo "Shutting down rtorrent... "
                        killall -r "^.*rtorrent$"
                        echo "Terminated"
                }
                else
                {
                        echo "rtorrent not yet started !"
                        echo "Terminated"
                }
                fi
        ;;
        restart)
                if [ "$(ps aux | grep -e '.*rtorrent$' -c)" != 0  ]; then
                {
                        echo "Shutting down rtorrent... "
                        killall -r "^.*rtorrent$"
                        echo "Starting rtorrent... "
            /ffp/bin/screen -fn -dmS rtd /opt/bin/rtorrent
                        echo "Terminated"
                }
                else
                {
                        echo "rtorrent not yet started !"
                        echo "Starting rtorrent... "
            /ffp/bin/screen -fn -dmS rtd /opt/bin/rtorrent
                        echo "Terminated"
                }
                fi
        ;;
        *)
                echo "Usage: $SCRIPTNAME {start|stop|restart}" >&2
                exit 2
        ;;
esac

Attention : il vous faudra sans doute modifier quelques lignes, notamment pour ce qui est des chemins vers les exécutables (remplacer /ffp/bin/ par /bin/ par exemple).

Une fois enregistré, il doit falloir le rendre exécutable :

sudo chmod +x /bin/drtorrent

Usage

Pour lancer rTorrent en background, il suffit de lancer la commande :

$ drtorrent start

Vous devriez avoir ce message :

Starting rtorrent... 
Terminated

Pour suivre nos téléchargement, il faut alors ouvrir le screen dans lequel le script a lancé rTorrent :

$ screen -x

Si vous avez plusieurs sessions screen, il convient de préciser le nom de la session utilisée par le script, rtd :

$ screen -x rtd

[En savoir plus sur screen sur la documentation d'ubuntu-fr].

Pour "quitter" cet écran, ou plutôt pour le "détacher", il faut utiliser la combinaison de touches Ctrl+a d. Pour véritablement quitter, c'est-à-dire arrêter rTorrent, on peut utiliser la combinaison Ctrl+q ou après l'avoir détaché, lancer la commande :

$ drtorrent stop