====== Configurer un «watchdir» ====== Un répertoire «watch» ou «watchdir» est un répertoire où l'on entrepose des fichiers .torrent, qui sont alors automatiquement chargés dans notre client bittorrent sans intervention particulière de notre part. C'est un confort d'usage, d'autant que les fichiers torrents qui attérissent dans le watchdir peuvent eux-mêmes provenir d'autres logiciels (flexget...) qui automatisent la récupération des fichiers .torrent pouvant provenir de diverses sources. ===== Methode classique ===== Doc externe : * https://github.com/rakshasa/rtorrent/wiki/TORRENT-Watch-directories * https://wiki.archlinux.org/index.php/RTorrent#Manage_completed_files On voit qu'il y a plusieurs approches. Ajoutons un ''schedule'' (= une tâche planifiée) à notre fichier rtorrent.rc. # planifier une tâche nommée 'watch_directory_1': # 1) se déclenche 5 secondes après le démarrage de rtorrent # 2) se déclenche toutes les 10 secondes après cela # 3) Lorsque déclenché, essaie de charger (et démarrer) les nouveaux fichiers *.torrent situés dans le répertoire ~/téléchargements/watch/ # 4) ??? # NOTE: si vous ne souhaitez pas démarrer automatiquement le torrent, changez 'load.start' par 'load.normal' schedule = watch_directory_1, 5, 10, "load.start=~/téléchargements/watch/*.torrent,d.directory.set=~/téléchargements/complete/" On peut ajouter d'autres lignes schedule, pour surveiller d'autres répertoires. # planifier une tâche nommée 'watch_directory_2': # 1) se déclenche 10 secondes après le démarrage de rtorrent # 2) se déclenche toutes les 10 secondes après cela # 3) Lorsque déclenché, essaie de charger (et démarrer) les nouveaux fichiers *.torrent situés dans le répertoire ~/téléchargements/watch_musique/ # 4) ??? schedule = watch_directory_2, 10, 10, "load.start=~/téléchargements/watch_musique/*.torrent,d.directory.set=~/téléchargements/musique/" J'aimerais pouvoir écrire : 4) Ajuste le répertoire de destination dans lequel seront déplacés les fichiers une fois le téléchargement terminé. Ce qui me laisse dubitatif ici, c'est que : * avant, il fallait gérer l'évènement "finished" pour initier soi-même le déplacement des fichiers avec une commande ''mv''. * ici, on n'utilise pas de variable "custom" intermédiaire, on ajuste directement d.directory. Voir aussi : http://superuser.com/questions/410507/move-already-i-e-not-new-completed-files-in-rtorrent ===== Methode inotify ===== Sembleraient qu'ils aient voulu simplifier la chose dans les versions récentes de rtorrent. * https://github.com/rakshasa/rtorrent/wiki/TORRENT-Watch-directories ===== Méthode ruTorrent+autotools ===== Si vous utilisez ruTorrent, celui-ci dispose d'un plugin autotools, qui gère à la fois les répertoires watch et le déplacement des fichiers, ainsi que leur étiquettage (label). * https://github.com/Novik/ruTorrent/wiki/PluginAutotools ===== Méthode pyroscope ===== On peut utiliser pyrotorque, avec l'instruction ''job.treewatch''. * Documentation : https://pyrocore.readthedocs.io/en/latest/advanced.html#rtorrent-queue-manager 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 : # 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=" 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. touch ~/.pyroscope/run/pyrotorque ==== 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]]) : #!/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" 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* : chmod +x ~/bin/_event.download.finished*