一个用python简单的封装了aria2的jsonrpc中adduri的脚本

摘要:
Aria2是一个很棒的下载工具。有时,如果项目需要一个很棒的下载中间件,Aria2是一个不错的选择。对json-rpc和websocket的支持特别有吸引力。因此,Python只是将adduri的脚本封装在aria2的jsonrpc中。它非常简单,只需要三行代码。

aria2是一个十分牛逼的下载神器,有时候项目需要一个很牛逼的下载中间件的话,aria2是一个不错的选择。其中支持jsonrpc和websocket的特性尤其诱人。但是python用起来还是有点不爽,所以简单封装一下aria2的jsonrpc。

所以,用python简单的封装了aria2的jsonrpc中adduri的脚本。 使用起来非常简单,仅需要三行代码。

from pyaria2 import Jsonrpc
jsonrpc = Jsonrpc('localhost', 6800)
resp = jsonrpc.addUris('https://music.snowmusic.cc/radio/13714_1507261169_4.mp3', options={"out": "aa.mp3"})
print resp
# {"id":0,"jsonrpc":"2.0","result":"3f6fa9aa6428a25f"}

  

Install

首先需要安装aria2c(以mac为例)

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" < /dev/null 2> /dev/null

 

然后使用homebrew安装即可

brew install aria2

然后自己找一个文件夹新建一个aria2.conf文件,示例如下:

#允许rpc
enable-rpc=true
#允许非外部访问
rpc-listen-all=true
#RPC端口, 仅当默认端口被占用时修改
rpc-listen-port=6800

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

#文件保存路径, 默认为当前启动位置
dir=./Files

#hook 文件的路径
on-download-complete=/Users/csx/GitProject/snowmusic/pyaria2-jsonrpc/hook.py


其中hook文件路径是回调脚本的路径,这里要改为开发者当前hook文件路径

启动aria2

# 这里是填入aria2.conf的路径
aria2c --conf-path=aria2.conf

Use

首先导入pyaria2模块的jsonrpc

from pyaria2 import Jsonrpc

编写hook.py,用于下载完成的回调。

import sys

# ['/Users/csx/GitProject/snowmusic/pyaria2-jsonrpc/hook.py', 'e3f97be6d4490a5a', '1', './temp/aa.mp3']
Argv = sys.argv

# 这里自己编写任意的回调函数,可以进行更新数据库等操作
def Hook(Argv):
    print Argv

然后直接调用就可以了。

jsonrpc = Jsonrpc('localhost', 6800)
resp = jsonrpc.addUris('https://music.snowmusic.cc/radio/13714_1507261169_4.mp3', options={"out": "aa.mp3"})
print resp

 http://aria2.github.io/manual/en/html/index.html

免责声明:文章转载自《一个用python简单的封装了aria2的jsonrpc中adduri的脚本》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇C# Socket服务器端如何判断客户端断开解决Cannot forward after response has been committed下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

python中的str()与eval函数

author:headsen chen date:2018-04-09 10:48:22 eval函数是把str转化成list、dict、tuple str函数把list,dict,tuple转为为字符串 ----------------------------------------------------------------# 字符串转换成列表a...

【python】Threadpool线程池任务终止简单示例

需求 加入我们需要处理一串个位数(0~9),奇数时需要循环打印它;偶数则等待对应时长并完成所有任务;0则是错误,但不需要终止任务,可以自定义一些处理。 关键点 定义func函数处理需求 callback处理返回结果,只有偶数和0返回;奇数会一直执行;要控制线程池状态,则需要针对偶数和0时抛出异常,并捕获异常处理。 threadpool定义线程池并发 实现...

3Python脚本在linux环境下头文件解释

#!/usr/bin/python到底是什么意思有这句的,加上执行权限后,可以直接用 ./ 执行,不然会出错,因为找不到 python 解释器。 #!/usr/bin/python 是告诉操作系统执行这个脚本的时候,调用 /usr/bin 下的 python 解释器。 #!/usr/bin/env python 这种用法是为了防止操作系统用户没有将 pyt...

Python模块学习filecmp文件比较

Python模块学习filecmp文件比较 filecmp模块用于比较文件及文件夹的内容,它是一个轻量级的工具,使用非常简单。python标准库还提供了difflib模块用于比较文件的内容。关于difflib模块,且听下回分解 filecmp定义了两个函数,用于方便地比较文件与文件夹:  filecmp.cmp(f1, f2[, shallow]...

python 函数传递参数的多种方法

python中函数根据是否有返回值可以分为四种:无参数无返回值,无参数有返回值,有参数无返回值,有参数有返回值。 Python中函数传递参数的形式主要有以下五种,分别为位置传递,关键字传递,默认值传递,不定参数传递(包裹传递)和解包裹传递。 1.位置传递实例: def fun(a,b,c)   return a+b+c print(f(1,2,3)) 2....

Ansible主机清单Inventory文件hosts

Ansible主机清单Inventory文件hosts 发表于 2017-05-14 | 分类于 运维相关 , Ansible | | 阅读次数 4638| 字数统计 1,442 | 阅读时长预计 6 Ansible 通过读取默认的主机清单配置,可以同时连接到多个远程主机上执行任务组和主机之间的关系通过 inventory 文件配置. 默认的...