Skip to content

Commit

Permalink
...
Browse files Browse the repository at this point in the history
  • Loading branch information
cuu committed Dec 3, 2019
1 parent 3c0e093 commit 29a9439
Show file tree
Hide file tree
Showing 3 changed files with 181 additions and 45 deletions.
2 changes: 2 additions & 0 deletions example_clearall.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
print resp2
for i in resp2:
rpc.remove(i["gid"])
rpc.removeDownloadResult(i["gid"])


if( int(resp["numWaiting"]) > 0):
Expand All @@ -19,6 +20,7 @@
print resp2
for i in resp2:
rpc.remove(i["gid"])
rpc.removeDownloadResult(i["gid"])

if( int(resp["numStopped"]) > 0):
offset = 0
Expand Down
4 changes: 2 additions & 2 deletions example_global.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,6 @@
num = int(resp["numStopped"])
print num
print "numStopped"
resp2 = rpc.tellStopped(offset,num,["files","gid"])
print resp2[0]["files"][0]["uris"]
resp2 = rpc.tellStopped(offset,num)
print resp2

220 changes: 177 additions & 43 deletions pyaria2.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,93 +19,223 @@ def __init__(self, host, port, token=None):

def getOption(self,gid):
try:
return self.aria2.getOption(gid)
return self.aria2.getOption(gid)
except xmlrpclib.Fault as ex:
print "<Fault %s: %s>" % (ex.faultCode, ex.faultString)
return None
print "<Fault %s: %s>" % (ex.faultCode, ex.faultString)
return None

def addUri(self,uris, options=None):#aria2.addUri(['http://example.org/file'], {})
try:
if isinstance(uris, basestring):
return self.aria2.addUri([uris],options)
else:
return self.aria2.addUri(uris,options)
if isinstance(uris, basestring):
return self.aria2.addUri([uris],options)
else:
return self.aria2.addUri(uris,options)

except xmlrpclib.Fault as ex:
print "<Fault %s: %s>" % (ex.faultCode, ex.faultString)
return None
print "<Fault %s: %s>" % (ex.faultCode, ex.faultString)
return None

def tellStatus(self,gid,keys=None):#aria2.tellStatus("2089b05ecca3d829", ["gid", "status"])
try:
return self.aria2.tellStatus(gid,keys)
return self.aria2.tellStatus(gid,keys)
except xmlrpclib.Fault as ex:
print "<Fault %s: %s>" % (ex.faultCode, ex.faultString)
return None
print "<Fault %s: %s>" % (ex.faultCode, ex.faultString)
return None

def tellActive(self,keys=None):
try:
return self.aria2.tellActive(keys)
return self.aria2.tellActive(keys)
except xmlrpclib.Fault as ex:
print "<Fault %s: %s>" % (ex.faultCode, ex.faultString)
return None
print "<Fault %s: %s>" % (ex.faultCode, ex.faultString)
return None

def tellWaiting(self,offset=0,num=0,keys=None):
try:
return self.aria2.tellWaiting(offet,num,keys)
return self.aria2.tellWaiting(offet,num,keys)
except xmlrpclib.Fault as ex:
print "<Fault %s: %s>" % (ex.faultCode, ex.faultString)
return None
print "<Fault %s: %s>" % (ex.faultCode, ex.faultString)
return None

def tellStopped(self,offset=0,num=0,keys=None):
try:
return self.aria2.tellStopped(offset,num,keys)
return self.aria2.tellStopped(offset,num,keys)
except xmlrpclib.Fault as ex:
print "<Fault %s: %s>" % (ex.faultCode, ex.faultString)
return None
print "<Fault %s: %s>" % (ex.faultCode, ex.faultString)
return None

def remove(self,gid):
try:
return self.aria2.remove(gid)
return self.aria2.remove(gid)
except xmlrpclib.Fault as ex:
print "<Fault %s: %s>" % (ex.faultCode, ex.faultString)
return None
print "<Fault %s: %s>" % (ex.faultCode, ex.faultString)
return None

def forceRemove(self,gid):
try:
return self.aria2.forceRemove(gid)
return self.aria2.forceRemove(gid)
except xmlrpclib.Fault as ex:
print "<Fault %s: %s>" % (ex.faultCode, ex.faultString)
return None
print "<Fault %s: %s>" % (ex.faultCode, ex.faultString)
return None

def getGlobalStat(self):
try:
return self.aria2.getGlobalStat()
return self.aria2.getGlobalStat()
except xmlrpclib.Fault as ex:
print "<Fault %s: %s>" % (ex.faultCode, ex.faultString)
return None
print "<Fault %s: %s>" % (ex.faultCode, ex.faultString)
return None

def purgeDownloadResult(self):
try:
return self.aria2.purgeDownloadResult()
return self.aria2.purgeDownloadResult()
except xmlrpclib.Fault as ex:
print "<Fault %s: %s>" % (ex.faultCode, ex.faultString)
return None
print "<Fault %s: %s>" % (ex.faultCode, ex.faultString)
return None

def removeDownloadResult(self,gid):
try:
return self.aria2.removeDownloadResult(gid)
return self.aria2.removeDownloadResult(gid)
except xmlrpclib.Fault as ex:
print "<Fault %s: %s>" % (ex.faultCode, ex.faultString)
return None
print "<Fault %s: %s>" % (ex.faultCode, ex.faultString)
return None

def getUris(self,gid):
try:
return self.aria2.getUris(gid)
try:
return self.aria2.getUris(gid)
except xmlrpclib.Fault as ex:
print "<Fault %s: %s>" % (ex.faultCode, ex.faultString)
return None
print "<Fault %s: %s>" % (ex.faultCode, ex.faultString)
return None

def urlDownloading(self,url):
ret = False
try:
resp = self.tellActive()
for i in resp:
uris = self.aria2.getUris(i["gid"])
for x in uris:
if x["uri"] == url:
return i["gid"],True
except:
return None,False
return None,False

def urlWaiting(self,url):
try:
_g = self.getGlobalStat()
num = _g["numWaiting"]
if num > 0:
resp = self.tellWaiting(0,num)
for i in resp:
uris = self.aria2.getUris(i["gid"])
for x in uris:
if x["uri"] == url:
return i["gid"],True
except:
return None,False

return None,False

class Wsrpc(object):

MUTI_METHOD = "system.multicall"
ADDURI_METHOD = "aria2.addUri"
TELLSTATUS_METHOD= "aria2.tellStatus"
TELLACTIVE_METHOD="aria2.tellActive"
TELLWAITING_METHOD="aria2.tellWaiting"
TELLSTOPPED_METHOD="aria2.tellStopped"
REMOVE_METHOD="aria2.remove"
FORCEREMOVE_METHOD="aria2.forceRemove"
GETGLOBALSTAT_METHOD="aria2.getGlobalStat"
PURGEDOWNLOADRESULT_METHOD="aria2.purgeDownloadResult"
REMOVEDOWNLOADRESULT_METHOD="aria2.removeDownloadResult"


def __init__(self, host, port, token=None):
self._idCount = 0
self.host = host
self.port = port
self.serverUrl = "ws://{host}:{port}/jsonrpc".format(**locals())

def _genParams(self, method , params):
p = {
'jsonrpc': '2.0',
'id': self._idCount,
'method': method,
'test': 'test',
'params': []
}

for i in params:
if i is not None:
p['params'].append(i)

return p

def _post(self, action, params, onSuccess, onFail=None):
if onFail is None:
onFail = Jsonrpc._defaultErrorHandle
print params
paramsObject = self._genParams(action, params)
print paramsObject
data=json.dumps(paramsObject)
return data

def addUri(self, uris, options=None):
def success(response):
return response["result"]
if isinstance(uris, basestring):
return self._post(Jsonrpc.ADDURI_METHOD, [[uris,], options], success)
else:
return self._post(Jsonrpc.ADDURI_METHOD, [uris, options], success)

def tellStatus(self,gid,keys=None):
def success(response):
return response
return self._post(Jsonrpc.TELLSTATUS_METHOD,[gid,keys],success)

def tellActive(self,keys=None):
def success(response):
return response
return self._post(Jsonrpc.TELLACTIVE_METHOD,[keys],success)

def tellWaiting(self,offset=0,num=0,keys=None):
def success(response):
return response
return self._post(Jsonrpc.TELLWAITING_METHOD,[offset,num,keys],success)

def tellStopped(self,offset=0,num=0,keys=None):
def success(response):
return response
return self._post(Jsonrpc.TELLSTOPPED_METHOD,[offset,num,keys],success)

def remove(self,gid):
def success(response):
return response
return self._post(Jsonrpc.REMOVE_METHOD,[gid],success)

def forceRemove(self,gid):
def success(response):
return response
return self._post(Jsonrpc.FORCEREMOVE_METHOD,[gid],success)

def getGlobalStat(self):
def success(response):
return response
return self._post(Jsonrpc.GETGLOBALSTAT_METHOD,[],success)

def purgeDownloadResult(self):
def success(response):
return response
return self._post(Jsonrpc.PURGEDOWNLOADRESULT_METHOD,[],success)

def removeDownloadResult(self,gid):
def success(response):
return response
return self._post(Jsonrpc.REMOVEDOWNLOADRESULT_METHOD,[gid],success)


@staticmethod
def _defaultErrorHandle(code, message):
print ("pyaria2 ERROR: {},{}".format(code, message))
return None
class Jsonrpc(object):

MUTI_METHOD = "system.multicall"
Expand Down Expand Up @@ -156,8 +286,11 @@ def _post(self, action, params, onSuccess, onFail=None):

def addUri(self, uris, options=None):
def success(response):
return response
return self._post(Jsonrpc.ADDURI_METHOD, [[uris,], options], success)
return response["result"]
if isinstance(uris, basestring):
return self._post(Jsonrpc.ADDURI_METHOD, [[uris,], options], success)
else:
return self._post(Jsonrpc.ADDURI_METHOD, [uris, options], success)

def tellStatus(self,gid,keys=None):
def success(response):
Expand Down Expand Up @@ -204,6 +337,7 @@ def success(response):
return response
return self._post(Jsonrpc.REMOVEDOWNLOADRESULT_METHOD,[gid],success)


@staticmethod
def _defaultErrorHandle(code, message):
print ("pyaria2 ERROR: {},{}".format(code, message))
Expand Down

0 comments on commit 29a9439

Please sign in to comment.