Je continue de jouer avec PushOver. Après avoir mis en place un système de notifications* pour quelques-unes des applications dont je me sers, je souhaitais aussi le faire pour rTorrent.

Le principe est simple :
- Créer une "application" sur mon compte PO afin d'obtenir une clé API,
- Créer un script qui contiendra mes accès PO et qui enverra le message ABCD via l'API PO,
- Modifier .rtorrent.rc afin que ce script soit exécuté à la fin de chaque DL.


Créer une "application" sur PushOver
- Cliquez sur Register an Application en bas de votre compte,
- Donnez-lui le nom que vous voulez, précisez que c'est un script (j'ai toujours pas trouvé l'intérêt, sans doute pour leurs stats), je mets une icône de rTorrent histoire de rendre ça plus sympa en recevant la notification (totalement superflue, comme de recevoir ce genre de notif, on est d'accord ^^),
- Récupérez votre Token pour cette "application".
rTorrentPO


Créer un script
Même principe que dans le tutoriel PushOver en CLI. Comme tous mes DL de serveurs sont rapatriés chez moi via SyncThing, mon message envoyé par ce script est personnalisé. Libre à vous de le modifier.
#!/bin/bash
# Nom du script .. : rtorrentpo.sh
# Date ........... : 06.2016
# Auteur ......... : Aerya | UpAndClear.org
# Description .... : Notification PushOver suite à DL complet sur rTorrent
# Prerequis ...... : Curl (sudo apt-get install curl)
# Specificites ... : .
# Execution ...... : Voir https://upandclear.org/?p=2097

# Variables ...... : Les definir ici et ne pas modifier la suite du script
# TOKEN .......... : Clé API de votre "application"
# USER ........... : Clé de votre compte PO
# MESSAGE ........ : Contenu du message que vous voulez envoyer, le nom du .torrent est déjà inclus via $1

TOKEN=''
USER=''
MESSAGE='complet et transmis vers SyncThing'

# Script ......... : NE PAS MODIFIER
# 1 .............. : Appel de l'URL avec les variables qui suivent
# 2 .............. : Clé API de votre "application"
# 3 .............. : Clé de votre compte PO
# 4 .............. : Contenu du message, $1 = nom du .torrent
# 5 .............. : URL de l'API PushOver

curl -s \
 --form-string "token=${TOKEN}" \
 --form-string "user=${USER}" \
 --form-string "message=$1 ${MESSAGE}" \
 https://api.pushover.net/1/messages.json

Créez par exemple le fichier rtorrentpo.sh (nano rtorrentpo.sh puis quittez en enregistrant avec les touches ctrl + x) dans votre /home/USER/ et rendez-le ensuite exécutable.
sudo chmod +x rtorrentpo.sh


Modifier .rtorrent.rc
Ce fichier caché dans votre /home/USER/ est le fichier de configuration de rTorrent. Il convient de l'éditer (nano /home/USER/.rtorrent.rc) et d'ajouer à la fin que nous voulons que rTorrent exécute le script rtorrentpo.sh à la fin de chaque téléchargement.

Voici le code à ajouter (modifier selon le nom et le chemin de votre script rtorrentpo.sh)
system.method.set_key=event.download.finished,notificationscript,"execute={bash,/home/USER/rtorrentpo.sh,$d.get_name=}"
Ce qui vous rendra un fichier de ce type
scgi_port = 127.0.0.1:9203
encoding_list = UTF-8
port_range = 51829-51829
port_random = no
check_hash = yes
directory = /home/xtr02/torrents/IN/
session = /home/xtr02/.session
encryption = allow_incoming, try_outgoing, enable_retry
schedule = watch_directory,1,1,"load_start=/home/xtr02/torrents/WatchDir/*.torrent"
schedule = untied_directory,5,5,"stop_untied=/home/xtr02/torrents/WatchDir/*.torrent"
schedule = espace_disque_insuffisant,1,30,close_low_diskspace=50000M
use_udp_trackers = yes
dht = off
peer_exchange = no
min_peers = 40
max_peers = 100
min_peers_seed = 10
max_peers_seed = 50
max_uploads = 40
execute = {sh,-c,/usr/bin/php /var/www/rutorrent/php/initplugins.php xtr02 &}
# Notification PushOver suite DL complet
system.method.set_key=event.download.finished,notificationscript,"execute={bash,/home/xtr02/rtorrentpo.sh,$d.get_name=}"
Si vous avez une erreur, il se peut que votre version de rtorrent ne supporte pas "system.method.set_key", dans ce cas, il faut utiliser :
method.set_key
Vous recevrez ce type de notification
rTorrentPOdemo

EDIT (XataZ) : ajout d'une annotation en cas d'erreur avec "system.method.set_key".


* Où j'indiquais que PushOver est utilisable 7 jours gratuitement et ensuite c'est de 5$/à vie par application (si 2 smartphones, 10$). Mais PushBullet, dans sa version pro (qui correspond à mes besoins) est à 4$/mois.
3 ans plus tard

Bonjour, existe t'il une variable pour envoyer une notification de fin de download associé a une étiquette ?
moi j'ai une étiquette par user qui download.
je veux pas recevoir les notifications d'un autre, seulement les miennes.

Merci pour ton retour.

    Ever78 oui c'est possible mais il faut modifier le script.

    dans le fichier de configuration rtorrent

    method.set_key=event.download.finished,notification,"execute2=/home/xtr02/rtorrentpo.sh,$d.name=,$d.custom1="

    et créer le script /home/xtr02/rtorrentpo.sh

    #!/usr/bin/env sh
    # Nom du script .. : rtorrentpo.sh
    # Date ........... : 06.2016
    # Auteur ......... : Aerya | UpAndClear.org
    # Description .... : Notification PushOver suite à DL complet sur rTorrent
    # Prerequis ...... : Curl (sudo apt-get install curl)
    # Specificites ... : .
    # Execution ...... : Voir https://upandclear.org/?p=2097
    
    # Variables ...... : Les definir ici et ne pas modifier la suite du script
    # TOKEN .......... : Clé API de votre "application"
    # USER ........... : Clé de votre compte PO
    # MESSAGE ........ : Contenu du message que vous voulez envoyer, le nom du .torrent est déjà inclus via $1
    
    TOKEN=""
    LABEL=""
    USER=""
    MESSAGE="complet et transmis vers SyncThing"
    
    # Script ......... : NE PAS MODIFIER
    # 1 .............. : Appel de l'URL avec les variables qui suivent
    # 2 .............. : Clé API de votre "application"
    # 3 .............. : Clé de votre compte PO
    # 4 .............. : Contenu du message, $1 = nom du .torrent
    # 5 .............. : URL de l'API PushOver
    
    if [ "${2}" == "${LABEL}" ]; then
      curl -s \
        --form-string "token=${TOKEN}" \
        --form-string "user=${USER}" \
        --form-string "message=$1 ${MESSAGE}" \
        https://api.pushover.net/1/messages.json
    fi

    Par contre, je capte pas comment tu obtiens la variable "${2}"
    Excuse moi peut être pour cette question mais je suis un noob pour ce genre de truc. :-)

    Et a dire vrai j'utilise PushBullet donc j'adapte ton post a PushBullet.

    merci pour ta réponse.

    je viens de capter: $1 c'est le nom du fichier, $2 c'est d.custom ?

      Ever78

      ./notification.sh nom_du_torrent username -> ${1} = nom_du_torrent et ${2} = username

      Donc je passe en paramètre $d.name= et $d.custom1=
      La variable ${1} => $d.name= et ${2} => $d.custom1=

      Répondre…