Transmission stats

This commit is contained in:
Simon Vieille 2016-05-09 23:08:44 +02:00
parent c32fe90da2
commit 9697a8a75d
4 changed files with 98 additions and 3 deletions

View file

@ -11,7 +11,7 @@ class Formater
public static function humanSize($size, $precision = 2)
{
$base = log($size, 1024);
$suffixes = array('', 'kB', 'MB', 'GB', 'TB');
$suffixes = array('B', 'kB', 'MB', 'GB', 'TB');
return round(pow(1024, $base - floor($base)), $precision) . $suffixes[floor($base)];
}

View file

@ -20,7 +20,7 @@ class TransmissionConfigureCommand extends Command
Configure your transmission web remote access.
Usage: <comment>transmission:configure</comment>");
Usage: <comment>%command.name%</comment>");
}
protected function execute(InputInterface $input, OutputInterface $output)

View file

@ -23,7 +23,7 @@ class TransmissionDownloadCommand extends Command
Download a torrent.
Usage: <comment>transmission:download</comment> <info>TORRENT_ID</info>");
Usage: <comment>%command.name%</comment> <info>TORRENT_ID</info>");
}
protected function execute(InputInterface $input, OutputInterface $output)

View file

@ -0,0 +1,95 @@
<?php
namespace Transmission\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Command\Command;
use Api\ConfigLoader;
use Symfony\Component\Console\Input\ArrayInput;
use Vohof\Transmission;
use Transmission\Client\GuzzleClient;
use Helper\Formater;
class TransmissionStatsCommand extends Command
{
protected function configure()
{
$this
->setName('transmission:stats')
->setDescription('Show stats from the transmission server')
->setHelp("<info>%command.name%</info>
Stats of the transmission server.
Usage: <comment>%command.name%</comment>");
}
protected function execute(InputInterface $input, OutputInterface $output)
{
$configLoader = new ConfigLoader();
if (!isset($configLoader->getConfig()['transmission'])) {
$output->writeln('No configuration found.');
return;
}
$config = $configLoader->getConfig()['transmission'];
if (!empty($config['username']) && !empty($config['password'])) {
$options = array(
'request.options' => array(
'auth' => array($config['username'], $config['password'])
)
);
}
try {
$client = new GuzzleClient($config['host'], $options);
$transmission = new Transmission($configLoader->getConfig()['transmission'], $client);
$stats = $transmission->getStats();
$output->writeln(sprintf("Active torrent(s): %d", $stats['activeTorrentCount']));
foreach (['cumulative-stats' => 'Cumulative stats', 'current-stats' => 'Current stats'] as $k => $v) {
$output->writeln(["", $v, str_repeat('-', strlen($v))]);
$output->writeln(sprintf(
"Downloaded: %s",
Formater::humanSize($stats[$k]['downloadedBytes'])
));
$output->writeln(sprintf(
"Uploaded: %s",
Formater::humanSize($stats[$k]['uploadedBytes'])
));
$output->writeln(sprintf(
"Files Added: %d",
$stats[$k]['filesAdded']
));
$output->writeln(sprintf(
"Seconds Active: %d",
$stats[$k]['secondsActive']
));
$output->writeln(sprintf(
"Sessions: %d",
$stats[$k]['sessionCount']
));
}
} catch (\Exception $e) {
$output->writeln(sprintf(
'An error occured. <error>%s</error>',
$e->getMessage()
));
return;
}
}
}