-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy patharia2.py
83 lines (66 loc) · 2.68 KB
/
aria2.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
from json import dumps
from time import time
from requests import post
class aria2:
def __init__(self, host, token,keys=None):
self.host = host
self.token = 'token:'+token if token else None
self.keys = keys if keys else \
['gid', 'totalLength', 'completedLength','downloadSpeed', 'uploadSpeed', 'dir', 'files','connections','numSeeders']
def _methods(self):
params = [{'methodName':'system.listMethods'}]
return self.post(params)
def tasks(self):
params = [
{'methodName':'aria2.getGlobalStat','params':[self.token]},
{'methodName':'aria2.tellActive','params':[self.token,self.keys]}
]
return self.post(params)
def add(self,Uris:list):
params = []
for url,path in Uris:
if path:
params.append({'methodName':'aria2.addUri','params':[self.token,[url],{'dir':path}]})
else:
params.append({'methodName':'aria2.addUri','params':[self.token,[url]]})
return self.post(params)
def rm(self,gids:list):
params = []
for gid in gids:
params.append({'methodName':'aria2.remove','params':[self.token,gid]})
return self.post(params)
def waiting(self,offset,num):
params = []
params.append({'methodName':'aria2.tellWaiting','params':[self.token,offset,num,self.keys]})
return self.post(params)
def stopped(self,offset,num):
params = []
params.append({'methodName':'aria2.tellStopped','params':[self.token,offset,num,self.keys]})
return self.post(params)
def pause(self,gids:list):
params = []
for gid in gids:
params.append({'methodName':'aria2.pause','params':[self.token,gid]})
return self.post(params)
def pauseAll(self):
params = []
params.append({'methodName':'aria2.pauseAll','params':[self.token]})
return self.post(params)
def clear(self,gids:list):
params = []
for gid in gids:
params.append({'methodName':'aria2.removeDownloadResult','params':[self.token,gid]})
return self.post(params)
def clearAll(self):
params = [{'methodName':'aria2.purgeDownloadResult','params':[self.token]}]
return self.post(params)
def post(self,params=None):
data = {'jsonrpc': '2.0', 'id': 'Rin_'+str(time()),
'method': 'system.multicall',
'params': [params]
}
if not params:
del data['params']
result = post(self.host,data=dumps(data),headers={'Connection':'close'},timeout=5)
return result
__all__ = ['']