Yadomi!

Do you remember when the world wide web was fun ?


Transmission et les liens magnets

Depuis quelques temps déjà, les fichiers torrent se font de plus en plus rare sur l'internet mondial et dans l'unique but de laisser place à son successeur, à savoir les liens magnets. Son plus gros défaut et également son plus gros avantage, il n'a pas d’existence physique sur le disque. En effet il ne s'agit que d'un lien, comme l'URL de n'importe quel site web.

Cela a pour conséquence directe de ne plus pouvoir utiliser une fonction sympatoche qui permettait de lancer le téléchargement d'un torrent dès qu'un nouveau fichier torrent apparaissait dans un dossier spécifique. Mais hélas, ce n'est plus possible à l'heure où les liens magnets sont roi ! C'est donc pour cette raison que j'ai bidouillé un script Bash qui résoud ce petit soucis.

Avec un peu de Bash et de magie noire, tout rentre dans l'ordre. En faite, avec inotify on peut facilement créer des notifications du noyau dès qu'on modifie un fichier ou un dossier. Donc l'idée c'est de lire un fichier texte quand il est modifié et s'il y a un nouveau lien magnet, on le télécharge ! C'est aussi simple que cela.

#!/bin/bash

#Fichier listant les liens magnets
FILE=$HOME/Dropbox/magnets.txt

#Transmision settings
HOST="localhost"
PORT="9091"
USER="yadomi"
PASS="isnotasecret"

#Ne lance pas le téléchargement si vrai, l'ajoute seulement
PAUSED="false"
while true; do
    change=$(inotifywait -q -e modify $FILE --format %w)
    if ["$change" = $FILE];then
        grep -n "^magnet:" $FILE | while read line; do
            MAGNET_LINE=$( echo $line | cut -d":" -f1)
            MAGNET_LINK=$(echo $line | sed "s/^$MAGNET_LINE://")
            SESSID=$(curl --silent --anyauth --user $USER:$PASS "http://$HOST:$PORT/transmission/rpc" | sed 's/.*//g;s/.*//g')
            curl --silent --anyauth --user $USER:$PASS --header "$SESSID" "http://$HOST:$PORT/transmission/rpc" -d "{\"method\":\"torrent-add\",\"arguments\":{\"paused\":${PAUSED},\"filename\":\"${MAGNET_LINK}\"}}"
            sed -i "$MAGNET_LINE s/^/#/" $FILE
        done
    fi
done

Voilà, le script tourne en boucle, il faut donc le lancer en arrière plan. Il envoie en réalité une requête à l'interface web de Transmission, il faut donc qu'elle soit activée dans les paramètres de Transmission. Du coup, le script n'a pas nécessairement besoin d’être sur la même machine que le client Transmission ! Sur un serveur "headless", c'est impeccable avec transmission-deamon et Dropbox, il ne vous reste plus qu'a créer un fichier texte avec vos liens magnets ligne par ligne et le tour et joué. Le script commentera automatique les liens qu'il a déja téléchargé.