php 海运,transmission rpc api php

class transmission {

public $url;

public $user;

public $pass;

public $session_id = '';

public $header = array(

//'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:62.0) Gecko/20100101 Firefox/62.0',

'Connection: keep-alive'

);

public function __construct($url, $user, $pass) {

$this->url = $url;

$this->user = $user;

$this->pass = $pass;

$this->request();

}

function request($post = "") {

//echo $url.PHP_EOL;

$url = $this->url;

$curl = curl_init();

curl_setopt($curl, CURLOPT_URL, $url);

curl_setopt($curl, CURLOPT_HEADER, 1);

curl_setopt($curl, CURLOPT_TIMEOUT, 10);

curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);

curl_setopt($curl, CURLOPT_MAXREDIRS, 5);

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);

$header = $this->header;

if ($this->session_id) {

$header[] = 'X-Transmission-Session-Id: '.$this->session_id;

}

$header[] = "Authorization: Basic ".base64_encode($this->user.':'.$this->pass);

curl_setopt($curl, CURLOPT_HTTPHEADER, $header);

if ($post) {

echo $post.PHP_EOL;

curl_setopt($curl, CURLOPT_POST, 1);

curl_setopt($curl, CURLOPT_POSTFIELDS, $post);

}

$data = curl_exec($curl);

$code = curl_getinfo($curl)["http_code"];

$header_size = curl_getinfo($curl, CURLINFO_HEADER_SIZE);

//var_dump(curl_getinfo($curl));

curl_close($curl);

$header = substr($data, 0, $header_size);

$body = substr($data, $header_size);

//var_dump($header);

//var_dump($body);

if ($code == 409 && preg_match('/X-Transmission-Session-Id: (.*?)/', $data, $mh)) {

$this->session_id = $mh[1];

} elseif ($code == 401) {

die("Authorization error".PHP_EOL);

} elseif ($code == 200) {

return json_decode($body, 1);

}

}

function build_request($method, $arguments) {

$post_data = json_encode(array('method' => $method, 'arguments' => $arguments));

return $this->request($post_data);

}

public function get($ids = null, $fields = null) {

$fields = $fields ? $fields : array( "id", "name", "status", "doneDate", "haveValid", "totalSize", "trackers", "uploadLimited", "uploadLimit");

$arguments = $ids ? array("fields" => $fields, "ids" => $ids) : array("fields" => $fields);

return $this->build_request( "torrent-get", $arguments );

}

public function reannounce($ids = null) {

$arguments = $ids ? array("ids" => $ids) : array();

return $this->build_request( "torrent-reannounce", $arguments);

}

}

/*

$rpc = new transmission("http://192.168.168.6:9091/transmission/rpc", "admin", "pass");

$data = $rpc->get(array(1), array('id'));

//$data = $rpc->get();

$data = $rpc->reannounce();

var_dump($data);

*/

标签:none

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值