home
erste Version am 10.11.2013
letzte Änderung am 21.12.2013

torrentcycle


Dieses Script steuert den Start- / Stop-Status von Torrents auf einem Transmission-Client abhängig von der Auslastung.
Komplett heruntergeladene Torrents werden gestoppt.



Hat man seinem transmission-daemon mehr Dateien vorgesetzt, als dieser gemäß maxPeersOverall und maxPeersPerTorrent gleichzeitig laden kann, wird man gerne mal von langsam ladenden Dateien bzw. Torrents ausgebremst. Um das zu umgehen, habe ich mir dieses Script gebaut. Mittels transmission-remote werden Torrents gestoppt und gestartet, um den Download-Durchsatz zu optimieren.

screenshot

Dazu muss der transmission-daemon zunächst erstmal so eingestellt sein, dass er sich mittels transmission-remote fernsteuern lässt.
Ist er via Webbrowser erreichbar, sollte das der Fall sein.
Beim Logon über den Webbrowser werden üblicherweise Username und Password abgefragt.
Diese Daten sind in das Script zu übernehmen:
    AUTH="--auth=user:password"
Also etwa als AUTH="--auth=fredfeuerstein:geheim123".

Weiterhin ist der Hostname des Systems einzutragen, auf dem Transmission und torrentcycle laufen:
    HOST="t22"

In der Datei /etc/transmission-daemon/settings.json sind die Einstellungen von Transmission zu finden.
Der Eintrag download-queue-enabled muß auf false stehen, damit torrentcycle alle Torrents starten kann, ohne von Transmission überstimmt zu werden.
Also:
    "download-queue-enabled": false,
Die Einstellungen für peer-limit-global, peer-limit-per-torrent und download-dir sind ins Script zu übertragen.
    maxPeersOverall=240           # "peer-limit-global"
    maxPeersPerTorrent=35         # "peer-limit-per-torrent"
    downloadDir="/transmission"   # "download-dir"

Auch sind die gewünschten Namen der Log-Dateien einzustellen:
    log_ready="/home/dede/log_trans.txt"
    log_status="/home/dede/log_torrent_cycle.txt"

Danach kann das Script gestartet werden. Erstmal vielleicht mit
    torrentcycle.py &
final (wenn alles korrekt läuft) mit
    nohup torrentcycle.py &

Seine Ausgaben lassen sich mit
    tail -f log_torrent_cycle.txt
ansehen.



Das Python-Script: torrentcycle.py


Die Arbeitsweise von torrentcycle ist dem Script selbst zu entnehmen. Es enthält reichlich Kommentare.
Die Funktion zur Anzeige der Festplatten-Restkapazität erzwingt, dass torrentcycle auf dem gleichen System läuft, auf dem auch Transmission läuft.