Skip to content

Commit 1efb2ad

Browse files
authored
Create aria2.py
1 parent b81f4a8 commit 1efb2ad

File tree

1 file changed

+83
-0
lines changed

1 file changed

+83
-0
lines changed

aria2.py

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

0 commit comments

Comments
 (0)