ohnotnow / laravel-transmission
Laravel 封装 Transmission 比特流服务器 API
2.0.1
2019-07-29 17:23 UTC
Requires
- kitetail/zttp: ^0.3.0
- ohffs/transmission-client: ^1.0.4
Requires (Dev)
This package is auto-updated.
Last update: 2024-08-29 04:25:46 UTC
README
工作进度
Laravel API 封装 Transmission
这是一个目前非常基础的封装,用于Transmission 比特流客户端的 API。
目前它只支持获取所有当前比特流列表、获取特定的比特流和以“暂停”模式添加新的比特流。这正好符合我在transcopy中的需求。
如果你需要一个不带 Laravel 功能的纯 PHP 版本,可以查看底层库。
安装
假设你已经安装了 composer
composer require ohnotnow/laravel-transmission
假设你使用的是 Laravel 5.5+,则包应该会自动发现。如果不是,你需要手动将其添加到 Providers/Aliases 中,以便添加到你的 config/app.php
'providers' => [ ... Ohffs\LaravelTransmission\TransmissionServiceProvider::class, ... ], 'aliases' => [ ... 'Transmission' => Ohffs\LaravelTransmission\Transmission::class, ... ]
使用方法
首先需要设置一些环境变量
TRANSMISSION_HOST=127.0.0.1
TRANSMISSION_PORT=9091
TRANSMISSION_USERNAME=
TRANSMISSION_PASSWORD=
然后在你的项目中的某个地方
use Ohffs\LaravelTransmission\Client; class Whatever { protected $transmission; public function __construct(Client $transmission) { $this->transmission = $transmission; } public function index() { return $this->transmission->all(); } public function show($id) { return $this->transmission->find($id); } }
你也可以选择使用 Transmission 门面
use Ohffs\LaravelTransmission\Transmission; // ... $allTorrents = Transmission::all(); $singleTorrent = Transmission::find(1);
find() 方法返回一个单独的 TorrentEntry 类,all() 方法返回一个包含它们的集合。数据是以 Transmission API 提供的格式,例如 'percentDone' 是从 0.0 到 1.0 的浮点数,所以你需要将其乘以 100 来得到“真实”的百分比。你可以从它们中获取数据
$torrent = $this->transmission->find(1); echo $torrent->toArray(); /* 'name' => 'Some Exciting File', 'id' => 1, 'doneDate' => 0, 'eta' => 1000, 'haveValid' => 0, 'rateDownload' => 0, 'rateUpload' => 0, 'status' => 2, 'totalSize' => 364514248, 'downloadDir' => '/tmp/torrents', 'percentDone' => 0.3, */ // And you can also get those as attributes on the object, eg : echo $torrent->name; // 'Some Exciting File'
使用 all() 方法返回的集合,你可以当然使用 Laravel 的所有集合方法。例如,为了获取仍在下载的比特流列表
$stillDownloading = $this->transmission->all()->filter(function ($torrent, $key) { return $torrent->percentDone < 1; });