首页 > 其他 > 详细

利用Aria2构造自己的下载工具(一)

时间:2020-05-03 19:48:34      阅读:54      评论:0      收藏:0      [点我收藏+]

Aria2 是一款轻量级的跨平台的多线程下载工具,支持 Http/Https、Ftp、BitTorrent、Metalink 等主流协议,功能非常全面。和IDM或EagleGet这些下载工具相比,aria2是一款纯命令行工具,没有图形界面,但可以通过rpc的方式提供交互式下载,这个是它的一个缺点,同时也是它的一个优点。它没有图形界面,使得可以在远程服务器、路由器、nas等平台上运行它,通过rpc交互的方式,实现离线下载。

虽然上现在已经有webui-aria2, 以及 yaaw等一些第三方的比较成熟的界面工具。但了解一下其交互协议,实现一个更加灵活,更适合自己的功能强大的下载工具,对于程序员来说,还是一个比较指的折腾的的事情。

配置Aria2

在启动Aria2前,我们需要进行一些参数的配置,这些配置有两种方式,通过命令行或配置文件。当默认的配置较多的时候,通过命令行的方式显得冗繁和不直观,我们一般是通过配置文件的方式,这里是一个配置文件示例:

?

这个配置我也是网上摘录的,完整配置可以参考官方文档。一般的时候调整下dir=R:\Downloads这个文件默认报错路径这个选项即可,配置完成后,将其保存为一个文本文件,如aria2.conf。然后可以通过启动参数:--conf-path来启动它:

.\aria2c --conf-path=aria2.conf

注意:这个配置文件里面有一个配置项,input-file=aria2.session,表示的是保存未完成的会话,启动的时候会读取该文件来获取上次未完成的任务,如果没有缺少这文件会无法启动,因此我们必须判断下这个文件是否存在,如果没有,则需要手动创建一个。

RPC交互

Aria2的交互协议是json-rpc,可以通过http和websocket两种方式来进行交互,它支持的交互方法可以参考官方文档Aria2 Methods,一个简单的示例如下:

{
????"jsonrpc":?"2.0",
????"id":?"1",
????"method":?"aria2.addUri",
????"params":?[
????????[?"http://127.0.0.1:8000/www/123.jpg"?]
????]
}

也可以加一些参数

{
????"jsonrpc":?"2.0",
????"id":?"1",
????"method":?"aria2.addUri",
????"params":?[
????????[?"http://127.0.0.1:8000/www/123.jpg"?]
????????{?"dir":?"r:/downloads"?}
????]
}

返回结果为:

{
????"id":?"2",
????"jsonrpc":?"2.0",
????"result":?"c470acbc661144b2"
}

错误消息:

{
????"id":?"2",
????"jsonrpc":?"2.0",
????"error":?{
????????"code":?1,
????????"message":?"The?parameter?at?0?has?wrong?type."
????}
}

另外,如果是websocket的方式下,还可以收到一些通知消息:

{"jsonrpc":"2.0","method":"aria2.onDownloadStart","params":[{"gid":"44e38580434f9496"}]}
{"id":null,"jsonrpc":"2.0","error":{"code":-32600,"message":"Invalid?Request."}}

限于篇幅所限,这里只进行了一些基本的介绍,其rpc都是遵循json-rpc格式的消息,是非常容易解析和理解的,在后面的博文里,我会再详细介绍下其常用接口功能,打造一个简单的下载工具。

参考文档

主要文档:

一些国内的博客文章也是较好快速上手指南

利用Aria2构造自己的下载工具(一)

原文:https://www.cnblogs.com/TianFang/p/12823107.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!