写在开始
曾经有用过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
.
11 comments
param里为什么前面一个url,后面refer还要有一个url?
那个好像是我写错了,应该是个referer,在你下载的文件需要加一个referer的时候用的。ˊ_>ˋ
有点搞不明白,我选择直接用pip install aria2p[tui]了。https://github.com/pawamoy/aria2p
看起来这个库还挺方便的ヾ(≧∇≦*)ゝ
请问这个id 是怎么来的?我总是 Unauthorized
我当时好像就是随便填的
可是我随便填不行- -,官方的文档也看不懂。。。
这里很详细https://www.cnblogs.com/Damos/p/11302080.html
其实aria2的官方文档也很详细
建议你贴一下你的配置, 我在博文里写的那个配置是可用的
 ̄﹃ ̄
不过报未登录错误的话不应该是你给aria2设置了登录用户和密码然后没填才会出来的么?你确定你的aria2是没有设置rpc-user之类的参数吗?