申请会员ID:Froster
1、申请ID:Froster2、个人邮箱:815559068@qq.com
3、原创技术文章:
# 使用 python 调用 Aria2
## 前言
感觉大家应该都知道这款下载软件了。。。我就不再赘述了。
下面主要说下如何用 xmlrpc 调用这玩意开始下载。
关于官方文档里提到的诸如查看下载状态一类的先不在这里说了,因为以我的经验来看管理下载还是`AriaNg`好用,如何装这个也不说了...
(在往下读之前请确保你的 Aria2 能被 `AriaNg` 或类似的工具正常使用。
python 的话看官方文档里用 xmlrpc 好点,先贴下官方示例:
```python
# aria2.addUri(uris[, options[, position]])
import xmlrpclib
s = xmlrpclib.ServerProxy('http://localhost:6800/rpc')
s.aria2.addUri(['http://example.org/file'])
```
用pip装完xmlrpclib以后抄下来前两行就行,如果之前改了 rpc 端口别忘了抄的时候改一下。重点是这个`addUri`方法。它负责调用aria2开始下载。
忽略掉`secret`和`position`,`addUri`的第一个参数是带着一堆下载地址的数组,第二个可选参数是传给 Aria2 的参数列表。
参数列表是一个 dict,主要有用的大概是:
- `max-connection-per-server`,也就是`-x`,设置分段下载功能。
- `split`,设置 n 个线程。
- `header`,这个不解释了。
- `dir`,设置目录。如果不设置会下载到默认目录。注意如果使用相对目录,基准是`aria2c.exe所在目录`。
- `out`,文件名。当然前面带一段目录也是可以的。(我没试过在第一个参数中包含多个链接的时候指定文件名。)
- `referer`,也不解释了。其实在 header 里面指定 referer 也是可以的。
举个例子:
```python
#下载b站视频
import xmlrpclib
rpc = xmlrpclib.ServerProxy('http://localhost:6800/rpc')
#mid, title, aid = getinf()
options = {
"max-connection-per-server": 5,
"split": 5,
"out": "/" + str(mid) + "/" + title + ".flv",
#"dir":
"referer": referer = "https://www.bilibili.com/video/av" + str(aid),
#"header": ["User-Agent:xxx","Referer:xxx"]
#注意header是array不是dict
#错误示例:{"User-Agent": "xxx"}
}
rpc.aria2.addUri(, options)
```
addUri的返回值是gid,可以用在其他的一些诸如查看下载状态、控制暂停继续的函数里。如果添加不成功会直接报错。
完整的函数介绍请看https://aria2.github.io/manual/en/html/aria2c.html#rpc-interface
完整的参数在https://aria2.github.io/manual/en/html/aria2c.html#options
参数列表带两个-的就是option字典的键,比如`-d, --dir=<DIR>`等效为{"dir": \<DIR\>}。
先写这么多吧... 抱歉,未能达到申请要求,申请不通过,可以关注论坛官方微信(吾爱破解论坛),等待开放注册通知。
页:
[1]