381 lines
13 KiB
Markdown
381 lines
13 KiB
Markdown
php-aria2
|
|
=========
|
|
# Talk with aria2 using json-RPC
|
|
|
|
## Install
|
|
|
|
### 1. Install aria2c
|
|
|
|
Make sure aria2c is running and rpc is enabled, You can add this into /etc/rc.local
|
|
`/usr/local/bin/aria2c --enable-rpc --rpc-allow-origin-all -c -D`
|
|
> [Also See The Document of Aria2](https://aria2.github.io/manual/en/html/aria2c.html#rpc-interface)
|
|
|
|
### 2. Require Aria2.php
|
|
|
|
The codes just 50 lines but support all RPC methods. Using php's magic method `__call`
|
|
|
|
#### 2.1 Install by composer
|
|
`composer require daijie/aria2`
|
|
|
|
> Thanks to [@Yuav](https://github.com/Yuav)
|
|
|
|
#### 2.2 Or copy Aria2.php
|
|
|
|
## Docker playground
|
|
#### require [docker-compose](https://docs.docker.com/compose/install/)
|
|
#### init playground
|
|
|
|
```
|
|
git clone https://github.com/shiny/php-aria2/
|
|
cd php-aria2/playground
|
|
docker-compose up
|
|
docker-compose exec php composer require daijie/aria2
|
|
```
|
|
|
|
#### After that, the playground structure:
|
|
|
|
```
|
|
├── aria2.conf # Aria2 conf file
|
|
├── data # Store downloaded file
|
|
├── docker-compose.yml
|
|
├── nginx.conf # nginx conf
|
|
└── www # Web dir
|
|
├── composer.json
|
|
├── composer.lock
|
|
├── index.php
|
|
└── vendor
|
|
├── autoload.php
|
|
├── composer
|
|
│ ├── ClassLoader.php
|
|
│ ├── LICENSE
|
|
│ ├── autoload_classmap.php
|
|
│ ├── autoload_namespaces.php
|
|
│ ├── autoload_psr4.php
|
|
│ ├── autoload_real.php
|
|
│ ├── autoload_static.php
|
|
│ └── installed.json
|
|
└── daijie
|
|
└── aria2
|
|
├── Aria2.php
|
|
├── LICENSE.txt
|
|
├── README.md
|
|
└── composer.json
|
|
```
|
|
Edit www/index.php and Open Browser To Visit http://127.0.0.1
|
|
|
|
## Class Aria2
|
|
|
|
```
|
|
Aria2 {
|
|
__construct ( string $server [, string $token ] )
|
|
__destruct ( void )
|
|
__call(string $name, array $arg)
|
|
protected string req ( array $data )
|
|
}
|
|
```
|
|
|
|
## Usage
|
|
|
|
$aria2 = new Aria2('http://127.0.0.1:6800/jsonrpc');
|
|
// http://127.0.0.1:6800/jsonrpc is the default value,
|
|
// equals to $aria2 = new Aria2
|
|
$aria2->getGlobalStat();
|
|
$aria2->tellActive();
|
|
$aria2->tellWaiting(0,1000);
|
|
$aria2->tellStopped(0,1000);
|
|
$aria2->addUri(
|
|
['https://www.google.com.hk/images/srpr/logo3w.png'],
|
|
['dir'=>'/tmp']
|
|
);
|
|
$aria2->tellStatus('1');
|
|
$aria2->removeDownloadResult('1');
|
|
//and more ...
|
|
|
|
Also See [Manual of Aria2 RPC Interface to get the method list](https://aria2.github.io/manual/en/html/aria2c.html#rpc-interface)
|
|
|
|
## Updates
|
|
### v1.1
|
|
Now support default token(secret) in php-aria2, compatible with v1.0
|
|
|
|
Before
|
|
|
|
```
|
|
$aria2 = new Aria2('http://aria2:6800/jsonrpc');
|
|
$aria2->addUri(
|
|
"token:e6c3778f-6361-4ed0-b126-f2cf8fca06db",
|
|
['https://www.docker.com/sites/default/files/moby.svg']
|
|
);
|
|
$aria2->getGlobalStat("token:e6c3778f-6361-4ed0-b126-f2cf8fca06db");
|
|
```
|
|
|
|
After
|
|
|
|
```
|
|
$aria2 = new Aria2('http://aria2:6800/jsonrpc', "token:e6c3778f-6361-4ed0-b126-f2cf8fca06db");
|
|
$aria2->addUri(
|
|
['https://www.docker.com/sites/default/files/moby.svg']
|
|
);
|
|
$status = $aria2->getGlobalStat();
|
|
```
|
|
|
|
### Example #1: Download File
|
|
|
|
$aria2->addUri(
|
|
['https://www.google.com.hk/images/srpr/logo3w.png'],
|
|
['dir'=>'/tmp']
|
|
);
|
|
|
|
[More Options Here](https://aria2.github.io/manual/en/html/aria2c.html#input-file)
|
|
|
|
#### Example #2: The Returned Data
|
|
#### Case: `Can't Download`
|
|
|
|
array(3) {
|
|
["id"]=>
|
|
string(1) "1"
|
|
["jsonrpc"]=>
|
|
string(3) "2.0"
|
|
["result"]=>
|
|
array(13) {
|
|
["completedLength"]=>
|
|
string(1) "0"
|
|
["connections"]=>
|
|
string(1) "0"
|
|
["dir"]=>
|
|
string(4) "/tmp"
|
|
["downloadSpeed"]=>
|
|
string(1) "0"
|
|
["errorCode"]=>
|
|
string(1) "1"
|
|
["files"]=>
|
|
array(1) {
|
|
[0]=>
|
|
array(6) {
|
|
["completedLength"]=>
|
|
string(1) "0"
|
|
["index"]=>
|
|
string(1) "1"
|
|
["length"]=>
|
|
string(1) "0"
|
|
["path"]=>
|
|
string(0) ""
|
|
["selected"]=>
|
|
string(4) "true"
|
|
["uris"]=>
|
|
array(1) {
|
|
[0]=>
|
|
array(2) {
|
|
["status"]=>
|
|
string(4) "used"
|
|
["uri"]=>
|
|
string(48) "https://www.google.com.hk/images/srpr/logo3w.png"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
["gid"]=>
|
|
string(1) "2"
|
|
["numPieces"]=>
|
|
string(1) "0"
|
|
["pieceLength"]=>
|
|
string(7) "1048576"
|
|
["status"]=>
|
|
string(5) "error"
|
|
["totalLength"]=>
|
|
string(1) "0"
|
|
["uploadLength"]=>
|
|
string(1) "0"
|
|
["uploadSpeed"]=>
|
|
string(1) "0"
|
|
}
|
|
}
|
|
|
|
#### Case: `Downloading (Active)`
|
|
|
|
array(3) {
|
|
["id"]=>
|
|
string(1) "1"
|
|
["jsonrpc"]=>
|
|
string(3) "2.0"
|
|
["result"]=>
|
|
array(13) {
|
|
["bitfield"]=>
|
|
string(8) "e0000000"
|
|
["completedLength"]=>
|
|
string(7) "3932160"
|
|
["connections"]=>
|
|
string(1) "1"
|
|
["dir"]=>
|
|
string(18) "/data/files/lixian"
|
|
["downloadSpeed"]=>
|
|
string(5) "75972"
|
|
["files"]=>
|
|
array(1) {
|
|
[0]=>
|
|
array(6) {
|
|
["completedLength"]=>
|
|
string(7) "3145728"
|
|
["index"]=>
|
|
string(1) "1"
|
|
["length"]=>
|
|
string(8) "31550548"
|
|
["path"]=>
|
|
string(48) "/data/files/lixian/[茶经].陆羽.扫描版.pdf"
|
|
["selected"]=>
|
|
string(4) "true"
|
|
["uris"]=>
|
|
array(5) {
|
|
[0]=>
|
|
array(2) {
|
|
["status"]=>
|
|
string(4) "used"
|
|
["uri"]=>
|
|
string(417) "http://gdl.lixian.vip.xunlei.com/download?fid=zKHWI/O2IbQ07pi/0hPYP1OLwrBUbOEBAAAAACaqKvQbmfR7K7JcbWGT3XQBlDzs&mid=666&threshold=150&tid=3018BA81C31480902DC937770AC2734F&srcid=4&verno=1&g=26AA2AF41B99F47B2BB25C6D6193DD7401943CEC&scn=c7&i=0D2B59F64D6CCBB5A1507A03C3B685BC&t=4&ui=222151634&ti=106821253185&s=31550548&m=0&n=013A830CE1AD5D2EC2DCE21471C9A8C3E8D1D7CA2F64660000&ff=0&co=33BB9833AB0EE7AAEA94105B64C8013F&cm=1"
|
|
}
|
|
[1]=>
|
|
array(2) {
|
|
["status"]=>
|
|
string(7) "waiting"
|
|
["uri"]=>
|
|
string(417) "http://gdl.lixian.vip.xunlei.com/download?fid=zKHWI/O2IbQ07pi/0hPYP1OLwrBUbOEBAAAAACaqKvQbmfR7K7JcbWGT3XQBlDzs&mid=666&threshold=150&tid=3018BA81C31480902DC937770AC2734F&srcid=4&verno=1&g=26AA2AF41B99F47B2BB25C6D6193DD7401943CEC&scn=c7&i=0D2B59F64D6CCBB5A1507A03C3B685BC&t=4&ui=222151634&ti=106821253185&s=31550548&m=0&n=013A830CE1AD5D2EC2DCE21471C9A8C3E8D1D7CA2F64660000&ff=0&co=33BB9833AB0EE7AAEA94105B64C8013F&cm=1"
|
|
}
|
|
[2]=>
|
|
array(2) {
|
|
["status"]=>
|
|
string(7) "waiting"
|
|
["uri"]=>
|
|
string(417) "http://gdl.lixian.vip.xunlei.com/download?fid=zKHWI/O2IbQ07pi/0hPYP1OLwrBUbOEBAAAAACaqKvQbmfR7K7JcbWGT3XQBlDzs&mid=666&threshold=150&tid=3018BA81C31480902DC937770AC2734F&srcid=4&verno=1&g=26AA2AF41B99F47B2BB25C6D6193DD7401943CEC&scn=c7&i=0D2B59F64D6CCBB5A1507A03C3B685BC&t=4&ui=222151634&ti=106821253185&s=31550548&m=0&n=013A830CE1AD5D2EC2DCE21471C9A8C3E8D1D7CA2F64660000&ff=0&co=33BB9833AB0EE7AAEA94105B64C8013F&cm=1"
|
|
}
|
|
[3]=>
|
|
array(2) {
|
|
["status"]=>
|
|
string(7) "waiting"
|
|
["uri"]=>
|
|
string(417) "http://gdl.lixian.vip.xunlei.com/download?fid=zKHWI/O2IbQ07pi/0hPYP1OLwrBUbOEBAAAAACaqKvQbmfR7K7JcbWGT3XQBlDzs&mid=666&threshold=150&tid=3018BA81C31480902DC937770AC2734F&srcid=4&verno=1&g=26AA2AF41B99F47B2BB25C6D6193DD7401943CEC&scn=c7&i=0D2B59F64D6CCBB5A1507A03C3B685BC&t=4&ui=222151634&ti=106821253185&s=31550548&m=0&n=013A830CE1AD5D2EC2DCE21471C9A8C3E8D1D7CA2F64660000&ff=0&co=33BB9833AB0EE7AAEA94105B64C8013F&cm=1"
|
|
}
|
|
[4]=>
|
|
array(2) {
|
|
["status"]=>
|
|
string(7) "waiting"
|
|
["uri"]=>
|
|
string(417) "http://gdl.lixian.vip.xunlei.com/download?fid=zKHWI/O2IbQ07pi/0hPYP1OLwrBUbOEBAAAAACaqKvQbmfR7K7JcbWGT3XQBlDzs&mid=666&threshold=150&tid=3018BA81C31480902DC937770AC2734F&srcid=4&verno=1&g=26AA2AF41B99F47B2BB25C6D6193DD7401943CEC&scn=c7&i=0D2B59F64D6CCBB5A1507A03C3B685BC&t=4&ui=222151634&ti=106821253185&s=31550548&m=0&n=013A830CE1AD5D2EC2DCE21471C9A8C3E8D1D7CA2F64660000&ff=0&co=33BB9833AB0EE7AAEA94105B64C8013F&cm=1"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
["gid"]=>
|
|
string(1) "3"
|
|
["numPieces"]=>
|
|
string(2) "31"
|
|
["pieceLength"]=>
|
|
string(7) "1048576"
|
|
["status"]=>
|
|
string(6) "active"
|
|
["totalLength"]=>
|
|
string(8) "31550548"
|
|
["uploadLength"]=>
|
|
string(1) "0"
|
|
["uploadSpeed"]=>
|
|
string(1) "0"
|
|
}
|
|
}
|
|
|
|
#### Case: `Downloaded`
|
|
|
|
array(3) {
|
|
["id"]=>
|
|
string(1) "1"
|
|
["jsonrpc"]=>
|
|
string(3) "2.0"
|
|
["result"]=>
|
|
array(14) {
|
|
["bitfield"]=>
|
|
string(8) "fffffffe"
|
|
["completedLength"]=>
|
|
string(8) "31550548"
|
|
["connections"]=>
|
|
string(1) "0"
|
|
["dir"]=>
|
|
string(18) "/data/files/lixian"
|
|
["downloadSpeed"]=>
|
|
string(1) "0"
|
|
["errorCode"]=>
|
|
string(1) "0"
|
|
["files"]=>
|
|
array(1) {
|
|
[0]=>
|
|
array(6) {
|
|
["completedLength"]=>
|
|
string(8) "31550548"
|
|
["index"]=>
|
|
string(1) "1"
|
|
["length"]=>
|
|
string(8) "31550548"
|
|
["path"]=>
|
|
string(48) "/data/files/lixian/[茶经].陆羽.扫描版.pdf"
|
|
["selected"]=>
|
|
string(4) "true"
|
|
["uris"]=>
|
|
array(6) {
|
|
[0]=>
|
|
array(2) {
|
|
["status"]=>
|
|
string(4) "used"
|
|
["uri"]=>
|
|
string(417) "http://gdl.lixian.vip.xunlei.com/download?fid=zKHWI/O2IbQ07pi/0hPYP1OLwrBUbOEBAAAAACaqKvQbmfR7K7JcbWGT3XQBlDzs&mid=666&threshold=150&tid=3018BA81C31480902DC937770AC2734F&srcid=4&verno=1&g=26AA2AF41B99F47B2BB25C6D6193DD7401943CEC&scn=c7&i=0D2B59F64D6CCBB5A1507A03C3B685BC&t=4&ui=222151634&ti=106821253185&s=31550548&m=0&n=013A830CE1AD5D2EC2DCE21471C9A8C3E8D1D7CA2F64660000&ff=0&co=33BB9833AB0EE7AAEA94105B64C8013F&cm=1"
|
|
}
|
|
[1]=>
|
|
array(2) {
|
|
["status"]=>
|
|
string(7) "waiting"
|
|
["uri"]=>
|
|
string(417) "http://gdl.lixian.vip.xunlei.com/download?fid=zKHWI/O2IbQ07pi/0hPYP1OLwrBUbOEBAAAAACaqKvQbmfR7K7JcbWGT3XQBlDzs&mid=666&threshold=150&tid=3018BA81C31480902DC937770AC2734F&srcid=4&verno=1&g=26AA2AF41B99F47B2BB25C6D6193DD7401943CEC&scn=c7&i=0D2B59F64D6CCBB5A1507A03C3B685BC&t=4&ui=222151634&ti=106821253185&s=31550548&m=0&n=013A830CE1AD5D2EC2DCE21471C9A8C3E8D1D7CA2F64660000&ff=0&co=33BB9833AB0EE7AAEA94105B64C8013F&cm=1"
|
|
}
|
|
[2]=>
|
|
array(2) {
|
|
["status"]=>
|
|
string(7) "waiting"
|
|
["uri"]=>
|
|
string(417) "http://gdl.lixian.vip.xunlei.com/download?fid=zKHWI/O2IbQ07pi/0hPYP1OLwrBUbOEBAAAAACaqKvQbmfR7K7JcbWGT3XQBlDzs&mid=666&threshold=150&tid=3018BA81C31480902DC937770AC2734F&srcid=4&verno=1&g=26AA2AF41B99F47B2BB25C6D6193DD7401943CEC&scn=c7&i=0D2B59F64D6CCBB5A1507A03C3B685BC&t=4&ui=222151634&ti=106821253185&s=31550548&m=0&n=013A830CE1AD5D2EC2DCE21471C9A8C3E8D1D7CA2F64660000&ff=0&co=33BB9833AB0EE7AAEA94105B64C8013F&cm=1"
|
|
}
|
|
[3]=>
|
|
array(2) {
|
|
["status"]=>
|
|
string(7) "waiting"
|
|
["uri"]=>
|
|
string(417) "http://gdl.lixian.vip.xunlei.com/download?fid=zKHWI/O2IbQ07pi/0hPYP1OLwrBUbOEBAAAAACaqKvQbmfR7K7JcbWGT3XQBlDzs&mid=666&threshold=150&tid=3018BA81C31480902DC937770AC2734F&srcid=4&verno=1&g=26AA2AF41B99F47B2BB25C6D6193DD7401943CEC&scn=c7&i=0D2B59F64D6CCBB5A1507A03C3B685BC&t=4&ui=222151634&ti=106821253185&s=31550548&m=0&n=013A830CE1AD5D2EC2DCE21471C9A8C3E8D1D7CA2F64660000&ff=0&co=33BB9833AB0EE7AAEA94105B64C8013F&cm=1"
|
|
}
|
|
[4]=>
|
|
array(2) {
|
|
["status"]=>
|
|
string(7) "waiting"
|
|
["uri"]=>
|
|
string(417) "http://gdl.lixian.vip.xunlei.com/download?fid=zKHWI/O2IbQ07pi/0hPYP1OLwrBUbOEBAAAAACaqKvQbmfR7K7JcbWGT3XQBlDzs&mid=666&threshold=150&tid=3018BA81C31480902DC937770AC2734F&srcid=4&verno=1&g=26AA2AF41B99F47B2BB25C6D6193DD7401943CEC&scn=c7&i=0D2B59F64D6CCBB5A1507A03C3B685BC&t=4&ui=222151634&ti=106821253185&s=31550548&m=0&n=013A830CE1AD5D2EC2DCE21471C9A8C3E8D1D7CA2F64660000&ff=0&co=33BB9833AB0EE7AAEA94105B64C8013F&cm=1"
|
|
}
|
|
[5]=>
|
|
array(2) {
|
|
["status"]=>
|
|
string(7) "waiting"
|
|
["uri"]=>
|
|
string(417) "http://gdl.lixian.vip.xunlei.com/download?fid=zKHWI/O2IbQ07pi/0hPYP1OLwrBUbOEBAAAAACaqKvQbmfR7K7JcbWGT3XQBlDzs&mid=666&threshold=150&tid=3018BA81C31480902DC937770AC2734F&srcid=4&verno=1&g=26AA2AF41B99F47B2BB25C6D6193DD7401943CEC&scn=c7&i=0D2B59F64D6CCBB5A1507A03C3B685BC&t=4&ui=222151634&ti=106821253185&s=31550548&m=0&n=013A830CE1AD5D2EC2DCE21471C9A8C3E8D1D7CA2F64660000&ff=0&co=33BB9833AB0EE7AAEA94105B64C8013F&cm=1"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
["gid"]=>
|
|
string(1) "3"
|
|
["numPieces"]=>
|
|
string(2) "31"
|
|
["pieceLength"]=>
|
|
string(7) "1048576"
|
|
["status"]=>
|
|
string(8) "complete"
|
|
["totalLength"]=>
|
|
string(8) "31550548"
|
|
["uploadLength"]=>
|
|
string(1) "0"
|
|
["uploadSpeed"]=>
|
|
string(1) "0"
|
|
}
|
|
}
|