1. 程式人生 > >一個用python簡單的封裝了aria2的jsonrpc中adduri的腳本

一個用python簡單的封裝了aria2的jsonrpc中adduri的腳本

int def hub bre source imp ble git num

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的腳本