• Seedbox
  • [Résolu] Les événements avec rtorrent

Bonjour,

Je viens vous demander de l'aide, j'essai de mettre en place un événement dans rtorrent.

Je voudrais que lorsque un torrent est fini de download, qu'il copie le *.torrent dans un répertoire spécifique.

Mais même avec le guide : http://mondedie.fr/d/5920 , je n'y arrive pas

Avez vous une idée ?

Merci d'avance
link ta commande d'evenement
sa serait un truc du genre:
system.method.set_key = event.download.finished,move,"execute={/chemin/de/ton/script,$d.get_name=}
et dans ton script un truc du genre :
#/bin/bash
name=$1

mv /dossier/des/.torrents/$name /destination/des/torrents/
Merci pour ton retour.

Je fais donc des essaie vers cette voie la .

J'ai donc ajouter en rtorrent.rc
system.method.set_key = event.download.finished,move,"execute={/home/seed/move_torrent.sh,$d.get_name=}
mais j'ai l'erreur suivant lorsque que j’exécute rtorrent:
rtorrent: Error in option file: ~/.rtorrent.rc:239: Missing closing quote
Cela correspond à la ligne que j'ai rajoué

As tu une idée du soucis ?

Merci
j'ai donc modifier en :
system.method.set_key = event.download.finished,move,"execute=/home/seed/move_torrent.sh,$d.get_name="
je vous tiens au courant
on, je viens de download ubntu pour tester, vous avez une idée d'un torrent plus petit pour tester ?

Le résultat :
 cat move_torrent.sh
#/bin/bash
name=$1

echo $name >> /home/seed/log_mov.txt


et j'ai donc dans mon fichier :
ubuntu-15.04-desktop-i386.iso
Mais moi ce que je vuex copier, c'est le .torrent, pas le fichier téléchargé.

Avez vous une idée ?

Merci
Essai à la place de :
$d.get_name=
Ceci :
$d.get_loaded_file=
Je suis pas sur ce moi, mais je crois que ceci retourne le fichier source.
bah sur l'idée c'est faut juste trouver le nom de la commande pour le fichier torrent
Salut
Pour la commande je sais pas du tout mais j'ai une soluce bancal je crois

Sachant que tous tes .torrents sont sauvegardé d'origne ici: /var/www/rutorrent/share/users/<username>/torrents
On cherche le dernier en date du dossier et on le copie, par contre je sais pas trop ce que ça va donner si tu balances plusieurs torrents d'un coup. Je pense que ça va coincer mais...

Le script en version crassouille (mais qui marche !)
edit...
Mais la piste interne rtorrent est surement la meilleur
Ex.
edit: le name à la fin de la commande du torrent.rc sert plus, faut peut le virer ça, j'ai testé en live moi seulement

edit2: j'ai pensé utiliser le nom en zappant l'extension pour la recherche mais ça va pauser problème si y'a des points dans le nom de fichier, c'est pas simple cette affaire
J'ai pas envoyé le bon script
#/bin/bash
USER=toto
cd /var/www/rutorrent/share/users/"$USER"/torrents
TORRENT=$(ls -1t | head -1)
cp "$TORRENT" /home/"$USER"/ton_dossier
désolé
Merci pour vos proposition,

ex_rat, le soucis de ta méthode est que si je rajoute plusieurs torrent, sa foire.

pour mes test, j'en suis la :
system.method.set_key = event.download.finished,move,"execute=/home/seed/move_torrent.sh,$d.get_name=,$d.get_loaded_file=,$d.get_hash="
#/bin/bash
name=$1
name2=$2
name3=$3
echo "d.get_name" >> /home/seed/log_mov.txt
echo $name >> /home/seed/log_mov.txt
echo "d.get_loaded_file" >> /home/seed/log_mov.txt
echo $name2 >> /home/seed/log_mov.txt
echo "d.get_hash" >> /home/seed/log_mov.txt
echo $name3 >> /home/seed/log_mov.txt
echo "fininfo" >> /home/seed/log_mov.txt

cp $name2  /home/seed/move_torrent/$name

echo "fincopy" >> /home/seed/log_mov.txt

résultat :
seed@debian:~$ cat log_mov.txt 
d.get_name
ubuntu-12.04.5-server-amd64.iso
d.get_loaded_file

d.get_hash
859DA4D7AFFD6EFD937236EDFB19C5FF1CB51F0A
fininfo
fincopy
je ne comprends absolument pas pourquoi le : d.get_loaded_file, ne me retourne rien ?

vous avez une idée?
$d.hash = le hash du torrent
Dans ton répertoire "session" tu as tous les hash.torrent
C'est que ça doit pas être ça ^^.
Comme j'ai dis, j'étais pas sur du d.get_loaded_file


J'ai sniffé un peu rutorrent pour voir ce qu'il demande lorsque tu fais un clique droit sur un torrent + télécharger le .torrent. Apparemment il envoie une requête à action.php et demande le filename. Donc en espérant que ce sois logique, je pense qu'il faut que tu ajoute :
$d.get_base_filename=

Si c'est pas ça, faut regarder sur https://code.google.com/p/gi-torrent/wiki/rTorrent_XMLRPC_reference, tu as la liste des commandes possible, mais pas forcément une description.
je viens de rajouter tous ce qu'il y a dans la liste;


system.method.set_key = event.download.finished,move,"execute=/home/seed/move_torrent.sh,$d.get_hash=,$d.get_base_filename=,$d.get_base_path=,$d.get_directory=,$d.get_directory_base=,$d.get_loaded_file=,$d.get_name="
#/bin/bash
name1=$1
name2=$2
name3=$3
name4=$4
name5=$5
name6=$6
name7=$7
echo "d.get_hash" >> /home/seed/log_mov.txt
echo $name1 >> /home/seed/log_mov.txt
echo "d.get_base_filename" >> /home/seed/log_mov.txt
echo $name2 >> /home/seed/log_mov.txt
echo "d.get_base_path" >> /home/seed/log_mov.txt
echo $name3 >> /home/seed/log_mov.txt
echo "d.get_directory" >> /home/seed/log_mov.txt
echo $name4 >> /home/seed/log_mov.txt
echo "d.get_directory_base" >> /home/seed/log_mov.txt
echo $name5 >> /home/seed/log_mov.txt
echo "d.get_loaded_file" >> /home/seed/log_mov.txt
echo $name6 >> /home/seed/log_mov.txt
echo "d.get_name" >> /home/seed/log_mov.txt
echo $name7 >> /home/seed/log_mov.txt



echo "fininfo" >> /home/seed/log_mov.txt
résultat :
d.get_hash
CC636EDC58554E019715AC419ED0E302AC6EC2B1
d.get_base_filename
ubuntu-12.04.5-server-i386.iso
d.get_base_path
/home/00-Dl/10-freeleech-what/ubuntu-12.04.5-server-i386.iso
d.get_directory
/home/00-Dl/10-freeleech-what
d.get_directory_base
/home/00-Dl/10-freeleech-what
d.get_loaded_file

d.get_name
ubuntu-12.04.5-server-i386.iso
fininfo
le d.get_loaded_file, ne fonctionne pas, même si il est dans la liste des commandes.

je pense réussir à m'en sortir avec tous sa.

Je repasse donner mon résultat.
j'ai avancé, mais j'ai un soucis sur la ligne 28 et 30, je comprends pas pourquoi il considère pas cela comme une variable.
#/bin/bash
hash_torrent=$1
name2=$2
name3=$3
name4=$4
name5=$5
name6=$6
name7=$7
echo "d.get_hash" >> /home/seed/log_mov.txt
echo $hash_torrent >> /home/seed/log_mov.txt
echo "d.get_base_filename" >> /home/seed/log_mov.txt
echo $name2 >> /home/seed/log_mov.txt
echo "d.get_base_path" >> /home/seed/log_mov.txt
echo $name3 >> /home/seed/log_mov.txt
echo "d.get_directory" >> /home/seed/log_mov.txt
echo $name4 >> /home/seed/log_mov.txt
echo "d.get_directory_base" >> /home/seed/log_mov.txt
echo $name5 >> /home/seed/log_mov.txt
echo "d.get_loaded_file" >> /home/seed/log_mov.txt
echo $name6 >> /home/seed/log_mov.txt
echo "d.get_name" >> /home/seed/log_mov.txt
echo $name7 >> /home/seed/log_mov.txt



echo "fininfo" >> /home/seed/log_mov.txt
echo "debut traitement" >> /home/seed/log_mov.txt
nom_torrent=$hash_torrent + ".torrent"
echo "nom.torrent" >> /home/seed/log_mov.txt
nom_torrent_full="/home/seed/downloads/.session/" + $nom_torrent
echo "nom.torrent complet" >> /home/seed/log_mov.txt
echo $nom_torrent_full >> /home/seed/log_mov.txt

echo "fin traitement" >> /home/seed/log_mov.txt

echo cp $nom_torrent_full  /home/seed/move_torrent/$name7

echo "fincopy" >> /home/seed/log_mov.txt


seed@debian:~$ ./move_torrent.sh hash po po po po po final.torrent
./move_torrent.sh: ligne28: + : commande introuvable
./move_torrent.sh: ligne30: + : commande introuvable
cp /home/seed/move_torrent/final.torrent
seed@debian:~$ 
nom_torrent=$hash_torrent + ".torrent"
Le + n'existe pas en bash :
nom_torrent="${hash_torrent}.torrent"
nom_torrent_full="/home/seed/downloads/.session/${nom_torrent}"
c'est parfait, merci à tous pour votre aide.

Je met le code si sa intéraisse des gens qui passeraient par la plus tard
  GNU nano 2.2.6                  Fichier : move_torrent.sh                                           

#/bin/bash
hash_torrent=$1
name2=$2
name3=$3
name4=$4
name5=$5
name6=$6
name7=$7
#echo "d.get_hash" >> /home/seed/log_mov.txt
#echo $hash_torrent >> /home/seed/log_mov.txt
#echo "d.get_base_filename" >> /home/seed/log_mov.txt
#echo $name2 >> /home/seed/log_mov.txt
#echo "d.get_base_path" >> /home/seed/log_mov.txt
#echo $name3 >> /home/seed/log_mov.txt
#echo "d.get_directory" >> /home/seed/log_mov.txt
#echo $name4 >> /home/seed/log_mov.txt
#echo "d.get_directory_base" >> /home/seed/log_mov.txt
#echo $name5 >> /home/seed/log_mov.txt
#echo "d.get_loaded_file" >> /home/seed/log_mov.txt
#echo $name6 >> /home/seed/log_mov.txt
#echo "d.get_name" >> /home/seed/log_mov.txt
echo $name7 >> /home/seed/log_mov.txt

#echo "fininfo" >> /home/seed/log_mov.txt
#echo "debut traitement" >> /home/seed/log_mov.txt
nom_torrent=${hash_torrent}.torrent
#echo "nom.torrent" >> /home/seed/log_mov.txt
nom_torrent_full="/home/seed/downloads/.session/${nom_torrent}"
#echo "nom.torrent complet" >> /home/seed/log_mov.txt
#echo $nom_torrent_full >> /home/seed/log_mov.txt

#echo "fin traitement" >> /home/seed/log_mov.txt

cp $nom_torrent_full  /home/seed/move_torrent/$name7".torrent"

#echo "fincopy" >> /home/seed/log_mov.txt


bonjour,

je reviens vous voir car sa ne marche plus.

J'ai l'impression que les noms avec espaces ne fonctionnent pas .

Savez vous comment récupérer le code erreur de cp ?

merci
Pour que cp ignore les espaces faut " " le nom de fichier, j'ai eu une galère avec ça y'a pas longtemps aussi moi.
Tentes comme ça (sans garantie), mais par tatonnement ça devrait passer avec des guillemets
cp $nom_torrent_full  /home/seed/move_torrent/"$name7"".torrent"
ou du genre:
cp $nom_torrent_full  /home/seed/move_torrent/"$name7.torrent"
enfin faut tester quoi
Ex.
merci pour ton aide

j'en suis arrivé a cela et sa marche
namefinal="/data/01-autodl/01-up_1/"
echo $namefinal >> /home/seed/log_mov.txt
namefinal=${namefinal}${name7}
echo $namefinal >> /home/seed/log_mov.txt
namefinal=${namefinal}.torrent
echo $namefinal >> /home/seed/log_mov.txt

cp $nom_torrent_full "`echo $namefinal`"
Répondre…