So pausieren Sie einen laufenden Arien-Download

7

Beim Herunterladen großer Dateien muss der Download mehrmals angehalten werden. Eine große Datei kann mit heruntergeladen werden wget. Starten Sie zuerst den Download, töten Sie wgetdann und setzen Sie den Download mit fort wget -c.
Ich möchte Downloads abhängig von Ereignissen wie Stromausfall, Nichtverfügbarkeit des Netzwerks usw. zu oft anhalten und sie mithilfe eines Skripts automatisieren. Drücken ist also Ctrl+Ckeine Option. Ich weiß, dass ein Prozess angehalten werden kann durch kill -STOP "$pid"Das Anhalten sollte die Verbindung zur Website nicht schließen, entweder sollte es auf den Befehl zum Fortsetzen warten oder die Bandbreite sollte auf eine sehr geringe Nutzung gedrosselt werden.

Ich habe diese Befehle aria2cin aria2.sourceforge.net gefunden , kann sie jedoch nicht erfolgreich verwenden. Dies verwendet die RPC-Methode. Kann ich es in einem Skript verwenden?
aria2.pause(gid)

Diese Methode pausiert den mit gid gekennzeichneten Download. gid ist vom Typ string. Der Status des angehaltenen Downloads wird angehalten. Wenn der Download aktiv ist, wird der Download an die erste Position der Warteschlange gestellt. Solange der Status angehalten ist, wird der Download nicht gestartet. Verwenden Sie die Methode aria2.unpause (), um den Status in Warten zu ändern. Diese Methode gibt die GID des angehaltenen Downloads zurück.

aria2.unpause(gid)

Diese Methode ändert den Status des mit gid gekennzeichneten Downloads von pausiert in warten. Dadurch kann der Download neu gestartet werden. gid ist vom Typ string. Diese Methode gibt die GID des nicht angehaltenen Downloads zurück.

Frage

  1. So pausieren (oder drosseln) Sie die Bandbreite eines bereits laufenden Downloads von Aria
  2. Gibt es einen besseren Downloader als ariaim Skript?
  3. Ob die RPC-Methode im Skript verwendet werden kann
totti
quelle

Antworten:

6

Damit dies funktioniert, aria2sollte die Option Pause unterstützt werden . Suche nach --pause[=true|false]in man aria2c. Es funktioniert in aria2_1.12.0-1_i386 [oneric] (und höher).

Starten Sie zuerst den RPC-Server: aria2c --enable-rpc=true(Für ältere Versionen aria2c --enable-xml-rpc=true)
Verwenden Sie dann RPC mithilfe von http://localhost:6800/jsonrpc
Das folgende Beispiel fügt http://example.org/file zu aria2 hinzu: Geben Sie in einer Python-Konsole Folgendes ein

JSON RPC

import urllib2, json
jsonreq = json.dumps({'jsonrpc':'2.0', 'id':'qwer',
    'method':'aria2.addUri',
    'params':[['http://example.org/file']]})
c = urllib2.urlopen('http://localhost:6800/jsonrpc', jsonreq)
c.read()
'{"id":"qwer","jsonrpc":"2.0","result":"2089b05ecca3d829"}'

Im folgenden Beispiel wird der Download angehalten, dessen GID "3" ist:

XML RPC

import xmlrpclib
s = xmlrpclib.ServerProxy('http://localhost:6800/rpc')
s.aria2.pause('3')

Wenn Sie etwas wie das Folgende bekommen, wird es von Ihrer Version von aria2 nicht unterstützt.

xmlrpclib.Fault: <Fault 1: 'No such method: aria2.pause'

In der verwendeten Version aria2c --enable-xml-rpc=truekönnen andere Optionen verwendet werden, z. B. das Hinzufügen von Dateien usw. (unter Verwendung von XML RPC).

Prinz
quelle
Funktioniert unter Ubuntu 12.10, aber nicht unter 10.04 (Option pasue nicht verfügbar)
totti
2

Am einfachsten können Sie die Tastenkombination Strg + C in Terminal / Konsole verwenden, um den Download anzuhalten. Intern wird eine temporäre Datei im selben Verzeichnis der Erweiterung .aria2 erstellt. Wenn Sie versuchen, die Datei erneut herunterzuladen, beginnt sie an der Position, an der sie angehalten wurde. Und verwenden Sie nicht Strg + Z.

shivshnkr
quelle
2
Stimmt, kann aber nicht in einem Skript verwendet werden. (über Strg + C bereits in Zeile 5 der Frage erwähnt)
Prinz