diff --git a/src/Helper/Formater.php b/src/Helper/Formater.php
index 209f092..8c275a0 100644
--- a/src/Helper/Formater.php
+++ b/src/Helper/Formater.php
@@ -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)];
}
diff --git a/src/Transmission/Command/TransmissionConfigureCommand.php b/src/Transmission/Command/TransmissionConfigureCommand.php
index ef30de4..371a026 100644
--- a/src/Transmission/Command/TransmissionConfigureCommand.php
+++ b/src/Transmission/Command/TransmissionConfigureCommand.php
@@ -20,7 +20,7 @@ class TransmissionConfigureCommand extends Command
Configure your transmission web remote access.
-Usage: transmission:configure");
+Usage: %command.name%");
}
protected function execute(InputInterface $input, OutputInterface $output)
diff --git a/src/Transmission/Command/TransmissionDownloadCommand.php b/src/Transmission/Command/TransmissionDownloadCommand.php
index f6d671e..d26f8ff 100644
--- a/src/Transmission/Command/TransmissionDownloadCommand.php
+++ b/src/Transmission/Command/TransmissionDownloadCommand.php
@@ -23,7 +23,7 @@ class TransmissionDownloadCommand extends Command
Download a torrent.
-Usage: transmission:download TORRENT_ID");
+Usage: %command.name% TORRENT_ID");
}
protected function execute(InputInterface $input, OutputInterface $output)
diff --git a/src/Transmission/Command/TransmissionStatsCommand.php b/src/Transmission/Command/TransmissionStatsCommand.php
new file mode 100644
index 0000000..690a789
--- /dev/null
+++ b/src/Transmission/Command/TransmissionStatsCommand.php
@@ -0,0 +1,95 @@
+setName('transmission:stats')
+ ->setDescription('Show stats from the transmission server')
+ ->setHelp("%command.name%
+
+Stats of the transmission server.
+
+Usage: %command.name%");
+ }
+
+ 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. %s',
+ $e->getMessage()
+ ));
+
+ return;
+ }
+ }
+}