Verhindern, dass Torrent zweimal einen Torrent herunterlädt

1371
thkala

Ich habe ein paar Peer-to-Peer-Clients verwendet, die eine Option haben, um zu verhindern, dass der Benutzer eine Datei zweimal herunterlädt, indem er sanft nach einer Bestätigung fragt oder das Hinzufügen eines neuen Downloads verweigert, sofern dies nicht erzwungen wird. Dies ist sehr hilfreich, da ich daran erinnert werde, dass mein Dateisystem vor dem erneuten Herunterladen beispielsweise auf das PlaneShift-Installationsprogramm überprüft wird.

Offensichtlich erfordert dies ein Protokoll aller Downloads, die vor dem Start jedes Downloads zusammen mit einem oder zwei Benutzerdialogfeldern überprüft werden.

Ich verwende jetzt rtorrentdas BitTorrent-Protokoll und muss noch einen Weg finden, um zu verhindern, dass ich zweimal eine Datei herunterlade. rtorrenttut dies für Dateien, die noch heruntergeladen oder abgespielt werden, jedoch nicht für alles, was aus seiner Ansicht entfernt wurde.

Ich dachte darüber nach, welche .torrentDateien ich herunterlade, aber mit Magnet-Links und mehreren .torrentDateien für denselben Download wird es komplizierter .

Gibt es eine Möglichkeit, rtorrentden aktuellen Download (z. B. seinen Hash) im Auge zu behalten und mich daran zu hindern, ihn zweimal herunterzuladen? Oder vielleicht ein externes Werkzeug, das das für mich tun wird?

1

2 Antworten auf die Frage

1
Daniel Andersson

Sie können die Auslöser und Skriptfunktionen von rtorrent verwenden.

Ich habe nicht genau das gemacht, was Sie für mich selbst verlangen, sondern ähnliche Dinge. Ich habe zB eine Sitzung mit den folgenden Einträgen in rtorrent.rc:

schedule =  watch_directory_1,10,10, "load_start=/path/to/watch/folder/*.torrent, d.set_custom1=$execute_capture={/path/to/external/script}, d.set_custom2=1"  system.method.set_key = event.download.finished, move_complete, "d.set_directory=$d.get_custom1= ; execute=mv,-u, $d.get_base_path=, $d.get_custom1= ; execute=/path/to/another/external/script, $d.get_name=, $d.get_custom1=, $d.get_custom2=" 

(Zeilenumbrüche wurden aus Gründen der Übersichtlichkeit hinzugefügt).

Dies verschiebt fertige Downloads in einen Pfad $d.get_custom1, der beim Start der Downloads festgelegt ist (ignore $d.get_custom2- wird für einen anderen Zweck verwendet, aber ich halte es als Beispiel).

Wie Sie sehen, werden externe Skripts ausgeführt und deren Rückgabewerte von rtorrent abgefangen. Durch externe Skripte, die den Überblick über das, was Sie heruntergeladen haben (z. B. das Schreiben von Hash- oder Dateinamen in eine Protokolldatei / Datenbank für abgeschlossene Downloads), führen und neue Downloads anhand dieser Liste ( grepoder des DB-Dienstprogramms) prüfen und darauf reagieren, können Sie erreichen, was Sie wollen.

Ein vollständiger Verlust der Skriptfunktionen von rtorrent ist viel zu umfangreich - siehe Handbuch und Online-Ressourcen. Ich sage nicht, dass es selbstverständlich oder einfach ist - sicherlich nicht - aber es ist möglich :-).

Ich habe ein paar Skripte verwendet, zusammen mit `execute_nothrow` und einer Anweisung` branch = `, um die Hashes aller abgeschlossenen Torrents zu verfolgen und einen Torrent automatisch zu stoppen, wenn er zuvor heruntergeladen wurde. Eine Nachricht wird gedruckt. Wenn ich trotzdem nochmal herunterladen möchte, muss ich nur den Torrent starten ... thkala vor 11 Jahren 0
0
pyroscope

Ein Beispiel finden Sie unter https://code.google.com/p/pyroscope/wiki/QueueManager#Configuration.

  1. Einige Dateien innerhalb eines Torrents werden nicht heruntergeladen (indem Sie ihre Priorität auf 0 setzen) und
  2. Einige Torrents, die geladen werden, werden nicht automatisch gestartet (Anwendungsfall "Audio mit vielen Grafiken").

Wie Sie sehen können, sind dies ziemlich komplexe Bedingungen. Es muss lediglich der benutzerdefinierte Code (Python) hinzugefügt werden.