寫在開始

曾經有效過aria2這個基于号令行的下載器,可是之前的時候都是直接利用号令下載的,所以每次啓動一個下載的時候都會增加一個aria2c的進程,進程數總是有限的,不克不及開太多,所以我就找了一下其他的编制來利用這個aria2,因而乎就找到了這個RPC調用的编制來利用aria2.

利用编制

第一步: 以RPC模式启动Aria2

啓動号令可以很簡單,因爲可以附加建设文件:

aria2c --conf-path=./aria2.conf
pause

這是windows上的,linux去掉落pause便可以了.

然後附加上建设文件:

#许可rpc
enable-rpc=true
#许可非外部拜候
rpc-listen-all=true
#RPC端口, 仅当默许端口被占用时点窜
rpc-listen-port=6800

#最大年夜同时下载数(任务数), 路由建议值: 3
max-concurrent-downloads=32
#断点续传
continue=true
#同办事器连接数
max-connection-per-server=16
#最小文件分片大年夜小, 下载线程数上限取决于能分出多少片, 对小文件首要
min-split-size=10M
#单文件最大年夜线程数, 路由建议值: 5
split=256
#下载速度限制
max-overall-download-limit=0
#单文件速度限制
max-download-limit=0
#上传速度限制
max-overall-upload-limit=0
#单文件速度限制
max-upload-limit=0

#文件保存路径, 默许为当前启动位置
#dir="./"
#利用代办代理
all-proxy=localhost:1080
#添加援引页
referer=http://images.dmzj.com/

建设文件就這麽寫就好了.

JSON-RPC向aria2中添加任務

不說多了,直接上Python代碼:

import json
from urllib.request import urlopen
jsonreq = json.dumps({'jsonrpc': '2.0', 'id': 'qwer',
                              'method': 'aria2.addUri',
                              'params': [[url],{'refer': url,'dir':filepath}],
                              }).encode()
        c = urlopen('http://localhost:6800/jsonrpc', jsonreq)

這裏的一個問題就是發送的時候必然假如以二進制的情势發送,而不是以字符串的情势發送,官方給的例程沒有對著這個json進行encode,所以我用的時候就會報錯.

這個是針對的http和https這一類的┞穥用,因爲我沒試過傳BT種子,所以也就沒有寫這一部分,若是我用到了的話會考慮之後再補充上的.XML-RPC也是一種用法,詳情見官方文檔吧,不想寫.

寫在最後

其實就是這麽簡單,建设好aria2之後就直接用一個websocket發送過去就好了,應該沒有記錯.也就是這樣了.

若幹年後的後記

這個rpc接口走的不是websocket.

Last modification:January 30, 2020
若是覺得我的文┞仿對你有效,請隨意贊賞