Outils du site

Outils pour utilisateurs


p2p:rtorrent:configurer-watchdirs (lu 7050 fois)

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
p2p:rtorrent:configurer-watchdirs [le 12/01/2017 à 11h18]
111110101011 créée
p2p:rtorrent:configurer-watchdirs [le 21/01/2017 à 22h27] (Version actuelle)
111110101011 [Scripts de gestion du torrent terminé]
Ligne 67: Ligne 67:
 On peut utiliser pyrotorque, avec l'instruction ''job.treewatch''. On peut utiliser pyrotorque, avec l'instruction ''job.treewatch''.
  
-  * https://pyrocore.readthedocs.io/en/latest/advanced.html#rtorrent-queue-manager+  * Documentation : https://pyrocore.readthedocs.io/en/latest/advanced.html#rtorrent-queue-manager
  
-Chez moi, le watch fonctionne, par contre je ne sais pas comment configurer l'event finished pour qu'il déplace les fichiers.+Suivez la documentation officielle. Elle est cependant un peu incomplète.
  
 +Pour bien comprendre, afin de faire fonctionner le tout, on a besoin de plusieurs briques :
 +  - on doit faire en sorte que pyrotorque soit invoqué par rtorrent
 +  - pyrotorque doit être réglé pour surveiller un répertoire (ou plutôt une arborescence dans le cas présent) watch
 +  - on doit ajouter un évènement dans rtorrent, pour qu'il démarre un script bash lorsque le torrent est terminé ("completion")
 +  - ce script (_event.download.finished-cequelonveut.sh) doit être écrit à la main
  
 +==== Invocation de Pyrotorque par rtorrent ====
 +
 +==== Définir un répertoire watch ====
 +
 +Il faut donc créer les répertoires watch, et indiquer son chemin dans torque.ini.
 +
 +==== Gérer l'évènement «torrent terminé» dans rtorrent ====
 +
 +1) Dans notre rtorrent.rc, on doit s'assurer qu'il y a une ligne :
 +
 +<code>
 +# EVENT: Call bash completion handlers
 +method.set_key = event.download.finished, bash_handlers, "d.save_full_session= ; execute=~/bin/_event.download.finished,$d.hash=,$d.name=,$d.base_path="
 +</code>
 +
 +2) Le code ci-dessus montre qu'on a besoin d'un fichier ''~/bin/_event.download.finished''. Vous devez le copier à la main, Pyroscope le fournit.
 +
 +3) Pyrotorque ne tourne que si le fichier ''~/.pyroscope/run/pyrotorque'' existe.
 +<code>touch ~/.pyroscope/run/pyrotorque</code>
 +
 +==== Scripts de gestion du torrent terminé ====
 +
 +rtorrent va appeller le script ''_event.download.finished'' en fournissant quelques arguments, dont le hash du torrent qui vient d'être completé.
 +
 +Hélas, le fichier ''_event.download.finished'' fourni par pyroscope est incomplet. Il ne fait qu'appeller d'autres scripts dont le nom correspond à ''~/bin/_event.download.finished-*.sh''.
 +
 +On va donc créer un fichier ''~/bin/_event.download.finished-mv.sh'' avec ce contenu (basé sur [[https://pyrocore.readthedocs.io/en/latest/howto.html#moving-all-data-for-selected-items-to-a-new-location|cette doc]]) :
 +<file _event.download.finished-mv.sh>
 +#!/bin/bash
 +
 +# Remplacez "rtorrentuser" par le nom de l'utilisateur qui possède les outils pyroscope
 +RTBIN="/home/rtorrentuser/bin"
 +
 +function rt_create_targetdir() {
 +        targetdir=$($RTBIN/rtcontrol "hash=$1" -qo custom_targetdir)
 +        mkdir -p "$targetdir"
 +}
 +
 +function rt_mv_then_restart() {
 +        $RTBIN/rtcontrol "hash=$1" --stop
 +        $RTBIN/rtcontrol "hash=$1" --exec "directory.set={{item.custom_targetdir}}" -o custom_targetdir --yes
 +        $RTBIN/rtcontrol "hash=$1" --spawn "mv {{item.path}} {{item.custom_targetdir}}" -o custom_targetdir
 +        sleep 1
 +        $RTBIN/rtcontrol "hash=$1" --start
 +}
 +
 +rt_create_targetdir "$1"
 +rt_mv_then_restart "$1"
 +</file>
 +
 +Que fait ce script ?
 +
 +D'abord, il créé le répertoire de destination. Ce n'est pas nécessaire si vous en avez un nombre défini que vous pouvez créer à la main.
 +
 +Dans la seconde fonction, il met en arrêt le téléchargement. Ensuite, il indique à rtorrent que les fichiers du téléchargement sont situés ailleurs (dans le targetdir qu'on a écrit dans torque.ini).
 +
 +Puis il déplace le fichier, et redémarre le téléchargement qui sera donc en seed, tout en ayant ses fichiers situés à leur emplacement final.
 +
 +On pourrait aussi utiliser ''rtmv'' pour laisser les fichiers dans /work/. Et puisque le fichier dans /work/ existerait toujours en tant que lien symbolique, il n'est pas utile de signaler à rtorrent que son emplacement a changé.
 +
 +N'oubliez pas de rendre exécutables les fichiers _event.download.finished* :
 +<code>
 +chmod +x ~/bin/_event.download.finished*
 +</code>
p2p/rtorrent/configurer-watchdirs.1484216284.txt.gz · Dernière modification: le 12/01/2017 à 11h18 de 111110101011